[ Security ] 인증(Authentication), 인가(Authorization)

duck-ach·2023년 2월 14일
0

Security

목록 보기
1/5


우리가 어떤 사이트를 이용하던지 누가, 언제, 어떻게, 어떤 것을 쓰고 있는가를 파악하기 위해 인증, 인가가 있다.
인증과 인가는 API에서 가장 자주 구현되는 기능 중 하나이다.

인증(Authentication)과 인가(Authorization)

  • 인증(Authentication) : User가 누구인지 확인하는 절차. (회원가입, 로그인 등)
  • 인가(Authorization) : 인증(Authentication)되어진 유저에게 권한을 허락하는 것

인증(Authentication)

  • 사용자의 신원을 증명하는 것
  • 대표적으로 로그인이 있다.

인증 방식

  • 전통적인 방법으로는 사용자명(Principle), 비밀번호(Credential)로 인증하는 Credential 기반 인증 방식
  • OTP와 같이 추가적인 인증방식을 도입해 한번에 2가지 방법으로 인증하는 이중 인증 방식
  • 토큰을 통한 인증방식
  • 소셜미디어를 사용하는 OAuth2 인증방식(토큰인증 방식 사용)

인가(Authorization)

  • 특정 리소스에 접근할 수 있는 권한을 부여하는 것
  • 예시) 사용자등급(일반, VIP, 관리자)에 따라 리소스에 접근을 제한하는 경우
  • 인가를 하기 위해 인증이 먼저 선행되어야 한다.
  • JMT, Session을 이용해 인증을 확인하고, 서버가 해당 권한을 확인해 리소스 접근을 결정한다.

정리

쉽게 정리하자면,
여객선이 출발할 때, 탑승할 승객들이 항공 티켓과 여권을 통해 자신의 신분과 탑승 자격을 증명 받는것 -> "인증"
여객선 내에 특정 클래스(이코노미, 비즈니스, 퍼스트 등)에 탑승할 수 있는 자격을 부여받고 탑승하거나, 혹은 승무원과 기장이 근무하는 구역에 들어가는 것은 -> "인가"

결론 : 인가를 "허락"이라는 단어로 바꾸면 두 개념이 좀 더 명확하게 와 닿지만, 비즈니스 클래스 항공 티켓의 경우 탑승자격과 신분을 인정받는 동시에 비즈니스 클래스에 탑승할 권한이 생기므로, 인증과 인가는 동시에 일어나는 순간들이 있다.

profile
자몽 허니 블랙티와 아메리카노 사이 그 어딘가

0개의 댓글