Authentication Vs Authorization- 무엇이 다른가? Part 2

Calvin Park·2022년 10월 24일
0

Authentication Vs Authorization- 무엇이 다른가? Part 1

저번글에서는 Authentication에 대해서 알아봤습니다.
이번에는 Authorization이 무엇인가에 대해서 알아보겠습니다.

원본링크 freecodecamp.org

What is Authorization?

Authorization은 무엇인가?

사전적인 의미에서는 허가를 받는다는 뜻입니다. 즉 엑세스를 인증을 받아서 사용할 수 있다는 뜻입니다.
권한을 부여하거나 거부할 수 있으며, 프로그램의 영역에 액세스를 할 수 있습니다.

예를 들어서
소셜미디어 (SNS)에 액세스 허용을 받았습니다. 하지만 거기에서 할 수 있는 것은 허용을 받은 엑세스 안에서 할 수 있습니다.

만약에 친구 또는 팔로우가 아닌 프로필에 액세스하려고 하면 (친구 또는 private account면) 해당 사용자의 프로필을 볼 수 없습니다. 이는 공유 게시물을 볼 수 있는 권한이 거부되었다는 것입니다.

권한 부여 구현 방법

권한 부여 방법은 사용자의 프레임워크 마다 구현 하는 방법이 다릅니다.

.NET 프레임워크라고 가정한다면, role-based access control || claims-based access control이 있습니다.

Role-based access control 같은 경우는 시스템 내의 각 사용자에 역할이 할당된다는 이데올로기를 중심적으로 합니다.

이러한 역할은 미리 정의된 사용 권한이 연결되어 있습니다.

역할이 부여된다는 것은 사용자가 모든 권한을 자동으로 상속된다는 것을 의미합니다. 역할은 사용자 생성 및 설정 시 할당됩니다.

엔드폰인트 || 사이트가 관리자 영역에 액세스를 할 경우, 사용자가 관리자 역할을 하는지 확인합니다.

이 접근 방식의 단점은 사용자에게 필요하지 않거나 필요하지 않은 권한이 너무 많이 부여된다는 것입니다.

예를 들어서, 사용자에게 관리자 역할을 부여한다면 고급 기능 까지 부여될 수 있습니다. 사용자는 기본 작성 권한만 부여하면 된다는 것입니다.

Claims-based control 같은 경우는 사용자의 권한을 보다 세밀하게 조정할 수 있습니다. 애플리케이션은 클레임이 사용자에게만 존재하는지 또는 특정 값이 클레임에 할당되는지 여부를 확인하면 됩니다.

예를 들면, CreateUser라는 클레임이 사용자에게 주어질 수 있으며, 사용자를 생성할 때 이를 확인한다는 것입니다. 또는 동일한 클레임에 고급 값을 할당한 다음 값이 고급인지 기본인지 여부에 따라 다른 작업 및 사용자 인터페이스르 사용할 수 있습니다.

그래서 Authentication 이랑 Authorization의 차이가 무엇입니까?

글을 다 읽으셨으면 Authentication이랑 Authorization의 차이점이 대충 잡았다고 생각합니다.
그래도 혹시나 이해가 안가신다고 하면 시나리오를 작성해서 보겠습니다.
저녁 파티에 게스트 리스트가 있다고 가정하면, 그 게스트는 닉네임과 비밀번호를 가지고 있습니다.
도착과 동시에, 보안요원은 닉네임이랑 비밀번호를 물어보게 되고, 그것에 따라 authenticate(인증)합니다. 일치가 된다면, 저녁 파티에 입장이 허용이 됨가 동시에 봉투를 받습니다.

그리고 저녁 파티에 들어오고나서 (Authorization) 이 필요필요 없는 구역에 있습니다. 즉 모두가 앉을 수 있는 공간에 가게 됩니다. 하지만 VIP존에 들어가고 싶어서 움직입니다.

VIP존에 다가가자 안전요원이 봉투에 있는것을 보자고 합니다. 하지만 안전요원이 보는것은 VIP가 이나라는 것을 알고 당신을 보내지 않습니다. 당신은 VIP존에 (Authorization) 허용이 되지 않았다는 것입니다.

Authentication verifies the identity of a user or service allowing access, whereas authorization determines what they can do once they're in.

최대한 간단하게 말해서 Authentication (인증) 액세스를 허용하는 사용자 또는 서비스의 ID인것이고, Authorization은 사용자가 일단 로그인하면 수행할 수 있는 작업을 결정합니다.

Authentication 과 Authorization을 모두 구현해야 하는 이유는?

Authentication과 Authorization은 아주 다르지만 각각의 애플리케이션 또는 시스템의 보안 및 무결성에 필수적인 역할을 합니다.

상위 과정들은 함께진행되야 합니다. Authentication과 Authorization 이 둘중 하나가 없으면 의미가 없습니다. 관리자 페이지에 액세스 할 수 있지만, 한 번 들어가면 원하는 대로 할 수 있다면 큰 문제가 발생할 수 있습니다.
반면에, 접속한 사람이 누구인지 모른채 개인들을 허가할 수 없습니다. 그렇기 때문에 Authentication(인증) 은 Authorization(허가)보다 우선입니다.

마지막으로

Authentication과 Authorization에 대한 이해가 많이 되었을 거라고 생각합니다.
꼭 이것만큼은 기억해 주세요.

Authenticate = Verifies the identity of a user or process.
Authenticate(인증) = 사용자 또는 프로세스의 Identity(신원, 역활, 또는 ID)를 확인합니다.

Authorize = Determines if the user / system has permission to use a resource or carry out an action.

Authorize(허가) = 사용자/시스템에게 리소스를 사용할 수 있는 권한이 있는지 작업을 수행할 수 있는지 아님 권한이 있는지 결정합니다.

감사합니다.
원본링크 freecodecamp.org

profile
Personal Velog Note

0개의 댓글