Authentication / Authorization 차이점
보통 우리가 '권한' 이라고 불리우는 것엔 인증(Authentication)과 인가/승인(Authorization) 두가지 단어가 존재하는데, 인증(Authentication) 과 인가/승인(Authorization)은 비슷해 보이지만 엄연한 차이가 존재한다.
- 인증(Authentication) : 본인이 누구인지 확인 (로그인)
- 인가/승인(Authorization) : 특정 리소스에 권한이 있는지 확인 (등급 권한)
인증 (Authentication) | 인가 (Authorization) | |
기능 | 자격 증명 확인 | 권한 허가/거부 |
진행 방식 | 비밀번호, 생체인식, 일회용 핀 또는 앱 | 보안 팀에서 관리하는 설정 사용 |
사용자가 볼 수 있는가? | 예 | 아니오 |
사용자가 직접 변경할 수 있는가? | 부분적으로 가능 | 불가능 |
데이터 전송 | ID 토큰 사용 | 액세스 토큰 사용 |
인증 Authentication
네이버 카페나 포털 사이트를 예 로들자면, 게시물을 읽으려고 포스팅 목록을 눌렀을때 '로그인이 필요합니다' 경고창과 함께 로그인 인증이 요구된다면 인증(Autentication) 되지 않은 상황이다.
서버 입장에서는 현재 요청자가 카페 회원인지 누군지 몰라서 일어나는 상황이다.
인가/승인 Authorization
그래서 회원 가입 하고 로그인을 하고 게시물에 들어갈수 있게 되었는데, 이번엔 어느 특정 게시판에 있는 게시글을 읽으려고 하니 '스탭 등급 부터 읽을 수 있습니다' 라는 경고창이 뜬다면 승인(Authorization) 되지 않은 상황이다.
즉, 인증 되었다고 하더라도, 승인되지 않았다면 특정 리소스에 접근할 수 없다는 원리이다.
서버 입장에서는 현재 요청자가 회원가입을 했으니 누군지는 알지만, 회원 등급에 따라 사용자는 요청한 자원에 접근한 권한이 없다고 판단하여 차단 한 것이다.
이처럼 같은 게시글을 읽는데에도 인증(Authentication)과 인가/승인(Authorization)에 따라 응답하는 방식이 다르다는 것을 알 수 있다.
참고