OAuth 2.0의 순서를 정리해 보았다

3521 단어 OAuthplantuml

소개



최근 Vue.js와 Flask에서 API와 그것을 두드리는 페이지를 만들었습니다.
그 때, 인증 주위를 어떻게 할까 고민하고, 조사해 가면 OAuth
괜찮지 않을까 하는 결론에 다가갑니다만 Qiita 등을 보면서 조사해도 잘 몰랐습니다.

그런 가운데, 매우 알기 쉬운 자료를 발견했습니다.
[Slide Share] 기초에서 OAuth 2.0 - Developers.IO 2017
게다가 YouTube에서 해설 동영상도 있습니다.
[YouTube] DevelopersIO 2017 기초에서의 OAuth 2.0 perform by 도쿄 다이스케 #cmdevio2017

이 자료의 내용을 부분적으로 픽업해 갑니다.

인증 및 인가



인증(Authentication)



통신 상대가 누군가 확인하는 것
  • 네트워크나 서버에 액세스 할 때, 본인성을 체크해, 정규의 이용자인지 어떤지를 확인.
  • 확인 방법은 통상 ID/Password 로 실시한다.
  • HTTP status "401 Unauthorized"관련

  • 허가 (Authorization)



    요청이 허용되는지 여부 결정
  • 인증을 통해 사용자를 식별하고 사용자에게 적합한 액세스 권한을 제어합니다. (정책)
  • HTTP status "403 Forbidden"관련

  • 일반적으로 인증 -> 권한 흐름에서 사용자는 주어진 권한 내에서 리소스에 액세스합니다.

    OAuth 2.0의 등장 인물




    키워드
    설명


    Resource owner (RO)
    사용자, 클라이언트 리소스에 대한 액세스 권한 부여

    클라이언트
    앱, RS가 보유한 사용자 리소스에 액세스하는 장 본인

    Authorization server (AS)
    RO/RS 중개인, 클라이언트에게 RS에 대한 액세스의 핵심 액세스 토큰 발급

    리소스 서버(RS)
    사용자 리소스, 액세스 토큰이 없으면 액세스할 수 없음


    OAuth 2.0의 기본적인 흐름은 RS에 있는 사용자 리소스에 액세스하고자 하는 Client가 AS로부터 액세스 토큰을 발행하게 하고 그 액세스 토큰을 가지고 Client는 RS에 액세스를 한다. 액세스 토큰 발급은 RO가 승인합니다.

    클라이언트가 액세스 토큰을 얻는 흐름



    Client credentials grant





    포인트


  • Client ID + secret => 액세스 토큰
  • 자원 소유자의 승인없이 AS는 액세스 토큰을 발행합니다.
  • 리소스 소유자가 흐름에 개입하지 않기 때문에 클라이언트는 원하는 범위에서 리소스에 액세스 할 수 있습니다.

    Resource owner password credentials grant





    포인트


  • User ID + Password => 액세스 토큰
  • 클라이언트가 자원 소유자의 암호를 알고 있습니다.
  • 공식 클라이언트용

  • Implicit grant





    포인트


  • 액세스 토큰이 사용자와 브라우저에서 보입니다.
  • 최종 사용자 지배하에 있는 Client용

  • Authorization code grant





    포인트


  • Authorization code (AC) => 액세스 토큰
  • AC는 액세스 토큰을 얻는 교환권이며 사용자 또는 브라우저에서 볼 수 있습니다.
  • 서버 측 웹 응용 프로그램 클라이언트 용

  • 획득한 액세스 토큰 전송 방법



    Authorization 헤더의 Bearer 체계 사용
    Authorization: Bearer <ACCESS TOKEN>



    OAuth의 다양한 플로우의 시퀀스 다이어그램은 PlantUML이라는 도구를 사용하여 작성됩니다.
    코드베이스로 다이어그램을 만들 수있어 매우 간단합니다.
    소스 코드는 GitHub에서 공개합니다.
    [GitHub] guromityan/oauth_plant_uml

    좋은 웹페이지 즐겨찾기