Authentication 인증
사용자나 기기(개체)의 신원을 확인하는 과정
인증된 사용자는 자신의 신분을 증명하기 위해 authentication factor를 이용한다.
현실 예시
- 은행 계좌에서 출금하려할 경우 신원을 확인할 수 있는 문서를 요구한다.
- 비행기에 타기 위해 여권이 필요하다.
- 위 예시들에서 ID와 여권이 authentication factor이다.
웹사이트
- Facebook이나 회사 웹메일에 접근하기 위해 username과 password 혹은 SMS 코드를 통해 시스템에게 신분을 증명한다.
Authorization 인가
사용자나 기기가 어떤 리소스에 접근할 수 있는지 혹은 어떤 행동을 취할 수 있는가(ex. 접근 권한)를 확인하는 과정
현실 예시
- 공연을 보기 위해 관계자는 관람자가 공연에 입장할 수 있는 사람인지(authorized or not) 확인한다. 이때 ID나 여권이 아닌 티켓을 사용한다.
- 티켓은 신원에 대한 정보를 포함하지 않을 수도 있다.
소프트웨어 애플리케이션
- authorization을 다루기 위해 보통 token을 사용한다.
- 사용자가 한 번 로그인하면, 애플리케이션은 그들이 무엇을 할 수 있는지 관리한다.
- 이때 사용자 신원을 바탕으로 authorization 정보를 가지는 토큰을 생성한다.
- 시스템은 이 토큰으로 리소스에 접근하려는 요청을 막거나 가능하게 하는 인가 결정을 한다.
인증 vs 인가
- 인증과 인가는 특정한 상황에서 서로 바꿔서 이야기할 수 있는 주제이고 이는 혼란을 야기한다.
- 인증 후에 인가가 일어나고, 인가가 인증으로 이어질 수는 없다는 점이 중요하다.
- 신분의 증명은 접근 권한을 부여할 수 있지만, 권한을 갖는 것이 항상 개체를 확인하는데 사용될 수는 없다.
인증 방법
- Cookie & Session (참고)
- Json Web Token (JWT) (참고)
- OAuth
- Spring Security
정리
- 인증은 사용자나 기기를 확인하는 행위이다.
- 인가는 사용자나 기기가 접근 권한을 가지거나 가지지 못하게 하는 행위이다.
- 인증은 인가 결정을 하는 요인으로 사용될 수 있다.
- 인가 가공물(토큰)은 사용자나 기기를 확인하는데 유용하지 않을 수 있다.
출처