OAuth2란?
- application이 Facebook, Github 같은 HTTP 서비스에 대한 사용자 계정에 접근을 할수 있도록하는 인증 framework.
- 사용자 인증을 사용자 계정을 호스팅하고 있는 서비스에 맡기고 third-party application에게 사용자 계정에 대한 정보에 접근 할수 있도록 권한을 부여
- web app, desktop app, mobile app에게 authorization flow를 제공해줌
- 참고링크
Grant Type : Authorization Code
- 유저에게 인가요청
- 유저가 인가허가
- Auth Server는 Client에게 authorization code 부여
- Client는 access token을 Auth Server에 요청
- Auth Server는 Client에게 token 전달
Grant Type : Implicit
위 과정 3번과정을 다음과 같이 변경
- Auth Server에서 Access Token과 함께 redirection URI 전달
- redirection URI로 이동하여 token 획득
- client에서 token extract 스크립트를 브라우저로 전달
- 브라우저에서 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 자체의 데이터를 받아오고 싶을 때 사용이 가능하다.