ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • OAuth - Implicit Grant Type (암시적 승인 타입)
    concept/server 2020. 11. 2. 22:30

    educative 를 번역, 요약한 자료입니다.

     

    Implicit Grant Type 은 백엔드가 없는 single page JavaScript app을 위해서 설계되었다.

    이전 포스팅에서는 클라이언트 앱이 client secret, 그리고 Authorization code를 이용해서 액세스 코드를 얻는 방법에 대해서 알아보았다.

     

    백엔드가 없는 자바스크립트 앱의 문제는 client_secret을 저장할 방법이 없다는 것이다. JS 코드에 client_secret을 저장하는 것은 안전하지 않다. 누구나 액세스할 수 있기 때문이다. 따라서 이러한 앱들에게 Implicit Grant type을 사용한다. 이 때, Authorization 서버는 코드를 반환하는 대신 액세스 토큰을 직접 반환한다.

     

    이 type은 안전하지 않기 때문에 대체 옵션이 없는 경우에만 사용해야 한다. 토큰의 교환은 프런트 엔드에서 이루어지며 해커는 토큰에 액세스할 수 있다.

     

    Implicit grant type working

     

    1단계 : Authorization Request

    Authorization code grant type의 1단계와도 비슷한데, 유일한 차이는 redirect_url에 토큰이 값으로 담겨 있다는 것이다.

     

    request의 query parameter은 다음과 같다.

    1. response_type

    액세스 토큰을 직접 요청하기 때문에 이 매개 변수에는 토큰이 포함되어 있다.

     

    2. client_id

    앱의 client id

     

    3. redirect_uri

    이것은 권한 부여 서버가 리소스 소유자와 상호 작용을 마치면 리디렉션되는 uri이다.

     

    4. scope

    요청 중인 리소스를 정의하는 선택적 매개 변수

     

    5. state

    이 파라미터는 optional이다.

     

    request의 예제는 다음과 같다.

    https://authorization.server.dummy.com/authorize
    ?response_type=token
    &client_id=12345
    &redirect_uri=https://client.dummy.com/callback
    &scope=images.read
    &state=abcde

     

    2단계 : Authorization Response

     

     먼저 사용자가 인증하고 authorization server에 대한 권한을 제공하면, request에서 클라이언트 앱이 지정한 redirect_url로 브라우저를 리디렉션한다. 그런 다음 인증 서버는 토큰과 상태를 URL의 조각 부분에 추가한다.

     

    이전 흐름에서 클라이언트는 권한 부여 코드를 받는 반면 클라이언트는 액세스 토큰을 수신한다는 점에 유의하자.

    토큰은 쿼리 스트링 대신 URL로 들어온다. 그 이유는 앱이 URL에서 그 값에 접근할 수 있도록 하기 위해서다.

     

    response의 형태는 다음과 같다.

    https://authorization.server.dummy.com/callback
    #access_token=hhdf6hsbhjG66hgtgfGGHJGCHJ
    &token_type=bearer
    &expires_in=500
    &state=abcde

    이 때 이 토큰의 유통 기한은 안전하지 않기 때문에 조금 덜 유지된다.

     

    브라우저에 개인 정보를 저장할 수 있는 수단이 없기 때문에 이 grant는 리프레쉬 토큰을 반환하지 않는다.

    출처: educative

    'concept > server' 카테고리의 다른 글

    OAuth - Resource Owner Credentials Grant  (0) 2020.11.03
    OAuth - Client Credentials Grant Type  (0) 2020.11.03
    OAuth - Authorization Code Grant Type  (0) 2020.11.02
    OAuth 2.0 Intro, 용어  (0) 2020.11.02
    Cross-site Request Forgery (CSRF)  (0) 2020.11.01

    댓글

Designed by Tistory.