Network

OAuth2.0

behonestar 2017. 1. 19. 16:48

사전 작업

인증을 제공하는 서버에 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



참고