기본 콘텐츠로 건너뛰기

[Security] OAuth2 정리하기

  • Summary

    • application이 Facebook, Github 같은 HTTP 서비스에 대한 사용자 계정에 접근을 할수 있도록하는 인증 framework.
    • 사용자 인증을 사용자 계정을 호스팅하고 있는 서비스에 맡기고 third-party application에게 사용자 계정에 대한 정보에 접근 할수 있도록 권한을 부여
    • web app, desktop app, mobile app에게 authorization flow를 제공해줌
    • 참고

  • Grant Type : Authorization Code

    1. 유저에게 인가요청
    2. 유저가 인가허가
    3. Auth Server는 Client에게 authorization code 부여
    4. Client는 access token을 Auth Server에 요청
    5. Auth Server는 Client에게 token 전달

  • Grant Type : Implicit

    • 위 과정 3번과정을 다음과 같이 변경
    1. Auth Server에서 Access Token과 함께 redirection URI 전달
    2. redirection URI로 이동하여 token 획득
    3. client에서 token extract 스크립트를 브라우저로 전달
    4. 브라우저에서 Client로 token 전달

  • Grant Type : Resource Owner Password Credentials

    • username과 password를 app에서 username과 password를 입력받아서 인가서버에 보내서 토큰 획득
    • 다른 방식이 안될때만 사용권장, app이 user에 의해 신뢰가 될때만 사용(e.g. 앱 자체가 Auth service에 의해 소유될때)
  • Grant Type : Client Credentials
    • app 자체의 credentials(client id, client secret) 를 Auth Server에 보내서 Access Token을 획득
    • app이 redirect URI에 대한 정보를 업데이트 하고 싶다거나, api를 통해서 app 자체의 데이터를 받아고고 싶을 때 사용이 가능하다.

댓글