OAuth / / 2024. 12. 17. 11:30

Authorization Code

Authorization CodeOAuth 2.0에서 사용되는 인증 및 인가 프로세스의 핵심 요소 중 하나입니다.
특히 Authorization Code Grant 플로우에서 클라이언트(애플리케이션)액세스 토큰(Access Token)을 발급받기 위해 인증 서버로부터 받는 임시 코드입니다.


Authorization Code의 동작 원리

  1. 클라이언트(예: 웹 애플리케이션, 모바일 앱)가 리소스 소유자(사용자)를 대신하여 인증 서버에 접근 권한을 요청합니다.
  2. 사용자는 인증 서버에서 로그인 및 권한 승인을 수행합니다.
  3. 인증 서버는 클라이언트에게 Authorization Code를 전달합니다.
  4. 클라이언트는 받은 Authorization Code를 이용해 Access Token을 요청합니다.
  5. 인증 서버는 Authorization Code의 유효성을 검증하고 Access Token을 발급합니다.

Authorization Code Grant 흐름 예시

  1. 인증 요청 단계
    클라이언트가 브라우저를 통해 사용자에게 로그인 및 권한을 요청합니다.

    GET /authorize?response_type=code
        &client_id=CLIENT_ID
        &redirect_uri=CALLBACK_URL
        &scope=read_profile
        &state=RANDOM_STRING
    • response_type=code: Authorization Code를 요청하겠다는 의미입니다.
    • redirect_uri: 인증 후 사용자를 리디렉션할 URI.
    • state: CSRF 공격 방지를 위해 클라이언트가 생성하는 난수값입니다.
  2. Authorization Code 전달
    사용자가 로그인 및 권한을 승인하면, 인증 서버는 Redirect URI로 Authorization Code를 전달합니다.

    HTTP/1.1 302 Found
    Location: https://example.com/callback?code=AUTHORIZATION_CODE&state=RANDOM_STRING
  3. Access Token 요청
    클라이언트는 Authorization Code를 사용하여 Access Token을 요청합니다.

    POST /token
    Content-Type: application/x-www-form-urlencoded
    
    grant_type=authorization_code
    code=AUTHORIZATION_CODE
    redirect_uri=CALLBACK_URL
    client_id=CLIENT_ID
    client_secret=CLIENT_SECRET
  4. Access Token 반환
    인증 서버는 Authorization Code를 검증한 후 Access Token을 반환합니다.

    {
        "access_token": "ACCESS_TOKEN_VALUE",
        "token_type": "Bearer",
        "expires_in": 3600
    }

Authorization Code의 특징

  1. 단기 유효성

    • Authorization Code는 한 번만 사용되며, 짧은 시간 동안만 유효합니다.
  2. 보안 강화

    • Authorization Code는 클라이언트와 인증 서버 간의 추가적인 확인 과정(Access Token 발급 과정)을 거치기 때문에 중간자 공격으로부터 보호됩니다.
  3. Client Secret 사용

    • Access Token 요청 시 Client Secret(보안 키)을 함께 사용함으로써 추가적인 보안을 제공합니다.

정리

Authorization Code: OAuth 2.0에서 Access Token 발급 전 반환되는 임시 코드입니다.
보안 강화: Access Token을 바로 노출하지 않고 두 단계로 발급하여 보안을 높입니다.
사용처: 웹 애플리케이션, 모바일 앱 등 보안이 필요한 환경에서 사용됩니다.

'OAuth' 카테고리의 다른 글

OAuth 2.0 액세스 토큰 발급 방법  (0) 2024.12.17
Spring Authorization Server 구성  (0) 2024.12.17
Proof Key(PKCE)  (0) 2024.12.17
투명 토큰(Transparent Token)과 불투명 토큰(Opaque Token)  (1) 2024.12.17
OAuth(Open Authorization)  (0) 2024.12.17
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유