쉽게 그림에서 OAuth2 흐름 유형에 대해 이해!

OAuth2 인증 플로우를 이해하는 것은 어렵지만, 일러스트와 3개의 포인트에 짜서 4개의 타입을 알기 쉽게 설명합니다.


  • Implementation Difficulty = 구현 어려움
  • Security = 보안 수준
  • Use Cases = 활용도



  • OAuth2: 구현 어려움



    Authorization Code Grant 타입(이미지 오른쪽 상단)은 4가지 타입 중에서 가장 구현하기가 어렵습니다. 다른 타입에는 없는 Guard가 존재하고 구현이 어려워지고 있습니다.

    OAuth2: 보안 수준



    Client Credential 및 Authorization Code grant 유형은 보안 수준이 높은 유형입니다.

    Client Credential grant 타입(이미지 왼쪽 상단) 사용자와 애플리케이션이 동일하므로 관련 요소나 플로우(화살표 수)가 가장 적어 데이터 유출을 경감합니다.

    Authorization Code grant 유형, 사용자는 권한 부여 키를 보안 보호 Guard(백엔드)에 전달합니다. 보다 공격에 노출되기 쉬운 애플리케이션(프런트 엔드)은 Guard(백엔드)를 통해서만 사용자 데이터에 액세스할 수 있습니다. 이로 인해 시스템에 대한 공격 가능한 부분을 직접 줄이고 보안 수준이 높아집니다.

    Resource Owner Password Credential grant 유형(이미지 왼쪽 하단)은 보안 수준이 가장 낮은 유형입니다. 왜냐하면 사용자는 사용자의 ID, 비밀번호를 응용 프로그램에 가르치고 응용 프로그램은 해당 키를 사용하여 사용자의 모든 정보에 액세스할 수 있습니다. 이것은 불필요하게 응용 프로그램에 사용자와 동일한 권한을 부여합니다.

    OAuth2: 활용도



    Client Credential Grant 타입은 구현이 간단하고, 보안 레벨이 높은 1번 추천의 타입으로 보입니다만, 활용도는 1번 낮습니다. 이 grant 유형은 사용자와 애플리케이션이 동일한 경우에만 사용할 수 있으며, 이 경우 애플리케이션 사용 방법은 제한됩니다. 즉, 어플리케이션은 그 유저 전용이 됩니다.

    따라서 보안이 다른 유형에서는 중요하다고 간주되기 때문에 애플리케이션이 백엔드를 갖고 있다면 Authorization Code grant 유형을 사용하고, 1페이지 애플리케이션 또는 네이티브 모바일 애플리케이션의 경우 Implicit grant 유형(이미지 오른쪽 하단)을 사용합니다. 할 수 있습니다.

    애플리케이션과 OAuth 서버가 동일한 소유자이고 사용자 ID/비밀번호를 애플리케이션과 공유하는 것이 보안상의 위험이 되지 않으면 Resource Owner Password Credential grant 유형을 사용할 수 있습니다.

    OAuth2에 대한 자세한 설명은 여기 블로그에서 확인할 수 있습니다.

    좋은 웹페이지 즐겨찾기