Work

OAuth 2.0 스터디

runicode 2022. 9. 20. 08:33
  • OAuth 2.0 주요 용어
    • Authentication : 인증, 접근 자격이 있는지 검증하는 단계를 말합니다.
    • Authorization : 인가, 자원에 접근할 권한을 부여하는 것입니다. 인가가 완료되면 리소스 접근 권한이 담긴 Access Token이 클라이언트에게 부여됩니다.
    • Access Token : 리소스 서버에게서 리소스 소유자의 보호된 자원을 획득할 때 사용되는 만료 기간이 있는 Token입니다.
    • Refresh Token :  Access Token 만료시 이를 갱신하기 위한 용도로 사용하는 Token입니다. Refresh Token은 일반적으로 Access Token보다 만료 기간이 깁니다.

 

  • Roles - OAuth 2.0의 4가지 역할
    • Resource Owner : 리소스 소유자 또는 사용자. 보호된 자원에 접근할 수 있는 자격을 부여해 주는 주체. OAuth2 프로토콜 흐름에서 클라이언트를 인증(Authorize)하는 역할을 수행합니다. 인증이 완료되면 권한 획득 자격(Authorization Grant)을 클라이언트에게 부여합니다. 개념적으로는 리소스 소유자가 자격을 부여하는 것이지만 일반적으로 권한 서버가 리소스 소유자와 클라이언트 사이에서 중개 역할을 수행하게 됩니다.
    • Client : 보호된 자원을 사용하려고 접근 요청을 하는 애플리케이션입니다.
    • Resource Server : 사용자의 보호된 자원을 호스팅하는 서버입니다.
    • Authorization Server : 권한 서버. 인증/인가를 수행하는 서버로 클라이언트의 접근 자격을 확인하고 Access Token을 발급하여 권한을 부여하는 역할을 수행합니다.

 

  • Obtaining Authorization
    • Authorization Code Grant│ 권한 부여 승인 코드 방식
      Authorization Code Flow
      • grant_type : authorization_code
      • code, redirect_uri, client_id REQUIRED
      • 권한 부여 승인을 위해 자체 생성한 Authorization Code를 전달하는 방식으로 많이 쓰이고 기본이 되는 방식입니다.
      • 간편 로그인 기능에서 사용되는 방식으로 클라이언트가 사용자를 대신하여 특정 자원에 접근을 요청할 때 사용되는 방식입니다. 보통 타사의 클라이언트에게 보호된 자원을 제공하기 위한 인증에 사용됩니다. Refresh Token의 사용이 가능한 방식입니다.

 

  • Implicit Grant │ 암묵적 승인 방식
    Implicit Grant Flow
    • grant_type 없음
    • reponse_type, client_id REQUIRED
    • 자격증명을 안전하게 저장하기 힘든 클라이언트(ex: JavaScript등의 스크립트 언어를 사용한 브라우저)에게 최적화된 방식입니다.

 

  • Resource Owner Password Credentials Grant │ 자원 소유자 자격증명 승인 방식
    Resource Owner Password Credentials Flow
    • grant_type : password
    • user_name, password REQUIRED
    • 간단하게 username, password로 Access Token을 받는 방식입니다.

 

  • Client Credentials Grant │클라이언트 자격증명 승인 방식
    Client Credentials Flow
    • grant_type : client_credentials
    • 클라이언트의 자격증명만으로 Access Token을 획득하는 방식입니다.

 

- 출처

  - https://www.rfc-editor.org/rfc/rfc6749

  - https://blog.naver.com/mds_datasecurity/222182943542