인증 (Authentication) / 인가 (Authorization)

devhong·2022년 12월 22일
0

인증 (Authentication)

  • 사용자가 누구인지 확인하는 단계
  • 로그인과 같이 신원을 확인하는 단계
  • API - 401 Unauthorized
    • 인증이 안된 상태로 자원을 이용할 수 없는 상태를 의미한다.

인가 (Authorization)

  • 사용자의 요청에 대해 권한을 확인하는 단계
  • 일반 사용자인지 관리자인지 등 접근 권한을 확인한다.
  • API - 403 Forbidden
    • 권한이 없는 상태로 자원을 이용할 수 없는 상태를 의미한다.

인증 (Authentication) 과 인가 (Authorization)

  • 인증KEY라 볼 수 있고 인가는 해당 KEY에 대한 권한을 확인한다.
  • 인증은 사용자에 의해 시작되는 반면 인가는 정책에 의해 결정된다.

웹 사이트는 어떻게 인증 (Authentication) 과 인가 (Authorization)을 구현하는가?

웹 사이트는 stateless한 특성을 가진 HTTP 통신 위에서 동작하여 로그인을 통해 인증을 거치더라도 이전의 인증된 상태인지를 유지하지 않기에 아래와 같은 방법으로 구현할 수 있다.

  • Cookie
    • 서버는 사용자에게 인증과 함께 데이터를 전송하며 이 때 이 데이터(Cookie)를 브라우저가 보관해두고 요청할 때마다 함께 전송하는 방식
    • 사용자의 인증된 정보를 사용자 웹 브라우저에서 관리되므로 보안상 문제가 있는 단점이 있다.
  • Session
    • 사용자의 정보가 아닌 식별할 수 있는 값만 보관하는 방식
    • 서버에서 식별할 수 있는 값을 판단하고 관리할 수 있어야 한다.
    • 서버에 세션을 저장하므로 서버에 부하가 올 수 있다.
  • Token
    • 사용자를 인증할 수 있는 정보를 암호화하고 서버는 복호화하여 사용자를 식별하는 방식
    • Token의 종류는 다양하지만 JWT(JSON Web Token)을 주로 사용한다.
    • 유효기간이 완료될 때까지 사용 가능하므로 Token이 탈취당하면 대처하기 어렵다.

Reference

profile
당신을 한 줄로 소개해보세요.

0개의 댓글