Authentication & Authorization

정미·2022년 7월 10일
0

Computer Science

목록 보기
21/81

Authentication 인증

사용자나 기기(개체)의 신원을 확인하는 과정

인증된 사용자는 자신의 신분을 증명하기 위해 authentication factor를 이용한다.

현실 예시

  • 은행 계좌에서 출금하려할 경우 신원을 확인할 수 있는 문서를 요구한다.
  • 비행기에 타기 위해 여권이 필요하다.
  • 위 예시들에서 ID와 여권이 authentication factor이다.

웹사이트

  • Facebook이나 회사 웹메일에 접근하기 위해 username과 password 혹은 SMS 코드를 통해 시스템에게 신분을 증명한다.

Authorization 인가

사용자나 기기가 어떤 리소스에 접근할 수 있는지 혹은 어떤 행동을 취할 수 있는가(ex. 접근 권한)를 확인하는 과정

현실 예시

  • 공연을 보기 위해 관계자는 관람자가 공연에 입장할 수 있는 사람인지(authorized or not) 확인한다. 이때 ID나 여권이 아닌 티켓을 사용한다.
    • 티켓은 신원에 대한 정보를 포함하지 않을 수도 있다.

소프트웨어 애플리케이션

  • authorization을 다루기 위해 보통 token을 사용한다.
  • 사용자가 한 번 로그인하면, 애플리케이션은 그들이 무엇을 할 수 있는지 관리한다.
    • 이때 사용자 신원을 바탕으로 authorization 정보를 가지는 토큰을 생성한다.
    • 시스템은 이 토큰으로 리소스에 접근하려는 요청을 막거나 가능하게 하는 인가 결정을 한다.

인증 vs 인가

  • 인증과 인가는 특정한 상황에서 서로 바꿔서 이야기할 수 있는 주제이고 이는 혼란을 야기한다.
  • 인증 후에 인가가 일어나고, 인가가 인증으로 이어질 수는 없다는 점이 중요하다.
    • 신분의 증명은 접근 권한을 부여할 수 있지만, 권한을 갖는 것이 항상 개체를 확인하는데 사용될 수는 없다.

인증 방법

  1. Cookie & Session (참고)
  2. Json Web Token (JWT) (참고)
  3. OAuth
  4. Spring Security

정리

  • 인증은 사용자나 기기를 확인하는 행위이다.
  • 인가는 사용자나 기기가 접근 권한을 가지거나 가지지 못하게 하는 행위이다.
  • 인증은 인가 결정을 하는 요인으로 사용될 수 있다.
  • 인가 가공물(토큰)은 사용자나 기기를 확인하는데 유용하지 않을 수 있다.

출처

0개의 댓글