Home Oauth 2.0 Protocol 소개
Post
Cancel

Oauth 2.0 Protocol 소개

Oauth 2.0 Protocol 인증 방식 (Grant types)


들어가기전에.. Garden Platform

Oauth 2.0 Protocol은 나에게 아주 조금은 친숙한 주제이다. 과거 삼성소프트웨어 멤버십 활동 중에 멤버십 내에서 활용할 목적으로, 3개월 동안 팀원들과 직접 Oauth 2.0 Provider Garden Platform을 개발한 경험이 있기 때문이다.

Garden Platform

Garden Platform

당시 Oauth 2.0 Protocol의 4가지 인증 방식(Grant Types) 중 Authorization Code Grant 방식만 서비스하였는데, 이번 포스팅을 통해 Oauth 2.0 Protocol의 4가지 인증방식에 대해 정리해보려고 한다.

Oauth 2.0 Protocol Grant types

  • Authorization Code Grant 가장 많이 사용하는 Oauth 2.0 인증 방식이다. 이는 서버사이드의 코드가 필요하기 때문에 Facebook, Google 등의 Developer Page에서는 이를 서버사이드 전용 Oauth 인증 방식이라고 정의한다. 이는 Access Token을 얻기 위해 3-Legged Oauth 방식을 사용하고 그 flow는 아래와 같다. 로그인시 페이지 URL에 response_type=token 으로 넘긴다.

Authorization Code 방식

  • Implicit Grant 이는 보통 클라이언트 사이드 전용 Oauth 인증 방식으로 정의된다. Implicit라는 말 그대로 Access Token을 얻기 위해 Authorization Token을 이용한 보안단계를 거치지 않고 암묵적으로 권한을 주는 방식이다. Authorization Code 방식에 비해 보안이 많이 떨어지기는 하지만, 서버가 존재하지 않는 Javascript기반 브라우저 앱이나 모바일 앱에 이 방식이 이용된다고 한다. 인증을 위한 flow는 아래와 같고, 로그인시에 페이지 URL에 response_type=token 라고 넘긴다. Implicit Grant 방식

  • Password Credentials Grant 이는 2-legged Oauth 방식으로 Client에서 아이디와 패스워드를 이용하여 Access Token을 직접 얻어오는 방식이다. 이는 Client에게 사용자의 아이디와 패스워드가 직접적으로 노출이 되기 때문에, 써드파티 애플리케이션이 아닌, Oauth Provider가 직접적으로 제공하는 애플리케이션에서 주로 사용된다.인증을 위한 flow는 아래와 같고, 로그인시에 URL에 grant_type=password 라고 넘긴다. Password Credentials 방식

  • Client Credentials Grant 이는 애플리케이션이 Confidential Client일 때, Client 자신이 resource에 대한 접근권한을 가지는 방식으로 OAuth1의 2-legged 방식과 비슷하다. 특정 Client에게 backend API의 접근을 허용하기 위한 용도로 사용할 수 있다고 한다. 인증을 위한 flow는 아래와 같고, 로그인 시에 grant_type=client_credentials 라고 넘긴다.

Client Credentials 방식

참고

  • Joinc : Oauth 2.0 소개 (http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/oAuth2/About)
  • RFC 6749 - The Oauth 2.0 Authorization Framework (https://tools.ietf.org/html/rfc6749)
This post is licensed under CC BY 4.0 by the author.