2023-05-09[TIL]

jenna·2023년 5월 10일
0

TIL/WIL

목록 보기
18/60

OAUTH와 JWT

OAUTH

  • 웹 및 모바일 애플리케이션에서 사용자의 인증 및 인가를 위한 프로토콜

  • 제3자 애플리케이션이 사용자의 인증 정보를 안전하게 관리하고, 사용자의 동의를 획득하여 사용자의 리소스에 대한 접근 권한을 얻을 수 있게 해줌

  • 사용자가 자신의 소셜 미디어 계정이나 다른 온라인 서비스의 계정을 사용하여 다른 애플리케이션에 로그인하거나, 애플리케이션이 사용자의 데이터에 접근하는 권한을 부여할 때 자주 사용
    (예를 들어, 사용자가 자신의 Google 계정을 사용하여 다른 앱에 로그인하거나, 페이스북 계정으로 다른 앱에 접근 권한을 부여하는 것)

  • 사용자의 비밀번호를 제3자 애플리케이션에 노출하지 않고, 인증 및 인가를 처리하기 위해 토큰 기반의 인증 방식을 사용

  • 일반적으로 액세스 토큰(access token)과 리프레시 토큰(refresh token)이 사용되며, 액세스 토큰은 제3자 애플리케이션이 사용자의 리소스에 접근하는 데 사용되고, 리프레시 토큰은 액세스 토큰의 만료 시간이 지났을 경우에 새로운 액세스 토큰을 발급받기 위해 사용됩니다.

  • 엑세스 토큰을 발급해줘서 인가 해주는 방식

JWT(JSON Web Token)

  • 인증, 권한 부여, 정보를 안전하게 전송하기 위해 사용(token자체)
    (예를 들어, 사용자가 로그인할 때 JWT가 발행되며, 발행된 JWT는 인증된 사용자를 식별하고, 다른 서비스에서도 권한 부여를 통해 해당 사용자에게 서비스 제공 가능)

  • 크게 세 부분으로 구성되어 있음

    1. Header: Header에는 JWT가 어떤 알고리즘을 사용하는지 등의 메타데이터가 포함됨
    2. Payload: Payload는 토큰에 대한 정보를 인코딩하여 전달
    3. Signature: Header와 Payload를 인코딩한 후, Secret key를 이용해 해싱한 값입니다.
      (검증이 되면 JWT가 유효하다고 인정됩니다.)
  • JWT는 HTTP 헤더에 담겨 전송되며, 서버에서는 이를 검증하여 인증을 수행합니다.

  • 서버의 데이터베이스에 저장된 세션 정보를 사용하지 않고, 간편하고 안전하게 인증을 수행할 수 있습니다.

session

  • 세션 기반 인증 방식: 서버에서 세션 데이터를 유지하고, 클라이언트에게는 세션 ID를 전달하는 방식으로 인증 처리
    • 서버에서 세션 정보를 유지해야하기 때문에 확장성과 보안성이 떨어질 수 있고 서버쪽 부하를 줄 수 있음
profile
https://github.com/jennaaaaaaaaa

0개의 댓글