TIL48-02 인증, 인가, jwt 토큰

김태혁·2023년 3월 4일
0

TIL

목록 보기
134/205

인증(Authentication)과 인가(Authorization)

  • 보안 분야에서 매우 중요한 개념이다.
  • 인증은 사용자의 신원을 확인하는 것이다.
  • 이는 사용자가 자신이 주장하는 신원을 증명하는 것을 의미합니다.
  • 사용자의 신원을 확인하는 일반적인 방법에는 사용자 ID와 비밀번호를 입력하는 것이다.
  • 인가는 인증된 사용자가 시스템에서 수행할 수 있는 작업 범위를 결정하는 것이다.
  • 즉, 사용자가 허가된 작업에만 액세스할 수 있도록 시스템에 권한을 부여합니다. 인가는 일반적으로 사용자 그룹과 권한을 기반으로 수행됩니다.

인가 시스템의 흐름

  • 사용자가 시스템에 로그인한다. 이 과정에서 사용자는 자신의 ID와 비밀번호를 제공하여 인증을 수행한다.
  • 시스템은 사용자의 ID와 비밀번호를 검증하여 인증한다.
  • 인증이 완료되면 시스템은 사용자의 그룹 및 권한을 확인한다.
  • 시스템은 사용자의 권한이 해당 작업에 대해 충분한지 확인한다.
  • 권한이 충분하면 사용자는 해당 작업을 수행할 수 있다.
  • 권한이 충분하지 않으면 시스템은 작업을 거부한다.
  • 따라서 인증과 인가는 시스템 보안에 매우 중요한 역할을 한다.
  • 인증이 성공해도 인가가 되지 않으면 시스템에 접근할 수 없으며, 인가가 된다고 해도 인증이 실패하면 시스템에 접근할 수 없다.

JWT(JSON Web Token)

  • 인증과 인가를 위해 자주 사용되는 토큰 기반 인증 방식 중 하나다.
  • JWT는 클라이언트와 서버 간에 JSON 객체를 안전하게 전송하기 위한 개방형 표준(JSON)이다.

JWT는 세 부분으로 구성된다.

Header: JWT가 어떤 알고리즘을 사용하여 서명되었는지에 대한 정보가 포함되어 있다.
Payload: 토큰에 포함되는 클레임(Claim) 정보가 포함되어 있다. 클레임은 사용자의 ID, 권한 등의 정보를 포함한다.
Signature: 토큰의 유효성을 검증하기 위한 서명값이 포함되어 있다.

JWT를 사용하여 인증과 인가를 수행하는 방법은 다음과 같다.

  • 사용자가 로그인한다. 이 과정에서 사용자의 ID와 비밀번호를 서버에 전송한다.
  • 서버는 사용자의 ID와 비밀번호를 검증하여 인증한.
  • 인증이 완료되면 서버는 해당 사용자의 권한 정보를 기반으로 JWT를 발행한다. JWT는 클라이언트 측에 전송된다.
  • 클라이언트는 이후 모든 요청에 대해 JWT를 서버에 전송한다. 이는 HTTP 요청의 Authorization 헤더에 Bearer 스키마를 사용하여 포함된다.
  • 서버는 받은 JWT를 검증하여 유효한지 확인한다. 이를 위해 서버는 해당 JWT의 서명값을 검증하고, JWT가 포함하는 클레임 정보를 확인한다.
  • 검증이 완료되면 서버는 해당 요청에 대한 인가를 수행한다.
  • 이는 JWT에 포함된 사용자 ID와 권한 정보를 기반으로 수행된다.
  • 요청이 인가되면 서버는 해당 작업을 수행한다.

정리

JWT를 사용하여 인증과 인가를 수행하는 것은 상대적으로 간단하며, 클라이언트 측에서 JWT를 저장하여 서버와의 간단한 통신으로 인증 및 인가를 수행할 수 있다. 그러나 JWT는 완벽한 보안을 보장하지는 않으므로, 필요에 따라 보안을 강화하기 위해 추가적인 보안 메커니즘을 사용해야 할 수 있다.

profile
도전을 즐기는 자

0개의 댓글