사전 작업
인증을 제공하는 서버에 App을 등록해야 한다.
- domain을 입력해야 한다. (redirect_uri를 검증할 때 domain 포함 여부를 확인한다.)
- client id(app_id)가 생성된다.
- client secret(app_secret)이 생성된다. (외부에 노출되면 안되는 키이다.)
인증 유형
1. 서버에서 인증 (JSP, PHP, ...)
웹서버는 app_secret키을 사용하여 인증서버로부터 인증을 받는다.
웹서버가 들고있는 app_secret값은 외부에서 사용자가 알 수 없다.
<인증 단계>
① 유저 ID, PW를 아는 사람만 code 획득이 가능하다.
② app_secret을 아는 서버만 access_token 획득이 가능하다.
2. 클라이언트에서 인증 (Javascript, Desktop app, Mobile app)
클라이언트에서 모든 처리가 이루어지는 경우 사용한다.
인증과정에서 app_secret을 요구하지 않는다. (디컴파일이 가능하기 때문)
<인증 단계>
① 유저 ID, PW를 아는 사람만 access_token 획득이 가능하다.
3. Password 인증
인증서버가 App이 속한 서비스의 구성원일 때 사용한다.
ID, PW를 App이 직접 전달 받아서 인증서버로부터 인증을 받는다.
AWS Cognito User Pool에 대해 USER_SRP_AUTH 방식으로 인증할 때 이 방식을 사용한다.
<인증 단계>
① 유저 ID, PW를 아는 사람만 access_token 획득이 가능하다.
더 알아볼 것
- Refresh Token
- Long-lived Token
참고
- https://aaronparecki.com/2012/07/29/2/oauth2-simplified
- http://www.tistory.com/guide/api/oauth
- https://developers.facebook.com/docs/facebook-login/access-tokens
'Network' 카테고리의 다른 글
SSL 인증서와 인증 방식 (0) | 2020.06.04 |
---|---|
tcp_tw_reuse와 SO_REUSEADDR의 차이 (0) | 2017.02.08 |
HTTP Digest 인증과 토큰 기반 인증 (0) | 2015.05.10 |
[TCP] window size full (0) | 2015.03.18 |
[gsoap] 웹서버 오버헤드를 줄이기 위한 gsoap 버퍼링 구현 (0) | 2015.03.05 |