구글 OAuth 2.0 인증 정리
Resource Owner, Server, Client 간의 동작
구글 OAuth 2.0 인증 정리
오래 전 구글 OAuth 관련 개발을 하며 정리해둔 메모가 있어서 허전한 블로그에 남겨둔다.
https://developers.google.com/identity/protocols/oauth2#webserver
OAuth 구성 요소
- Client (The Third-party Application)
- User 의 정보에 접근을 시도하는 ‘나’ 의 Application
- ‘나’ 는 Web Server Application 을 운영하는 주체
- 접근을 위해서는 User 로부터의 허가가 필요함
- Resource Owner (User)
- ‘나’ 의 Application을 사용하는 End User
- 계정 정보의 일부에 대한 접근을 허가하는 사람
- Google Servers
- 인증 API 를 제공하는 업체인 ‘Google’ (Authorization Server)
- 사용자의 정보에 접근하기 위해 사용되는 API 서버 (Resource Server)
- Authorization, Resource 서버가 분리돼있을 수 있음
OAuth Flow
- User 가 Client(‘나’ 의 Application)에서 로그인을 시도
- User 를 Resource Server 의 OAuth 2.0 서버로 Redirect
- 서버에서 User 를 (로그인 등을 통해) 인증
- (Client가 요청한) Scoped List 로의 접근 권한을 Client 에게 주기 위해 User 의 동의(prompt)를 구함
- Resource Server 가 Client 에게 specified redirect URL 을 통해서 response 로 AuthCode 전달
- 이는 one-time use code 로 사용자가 승인했을 경우에만 전달됨
- Client 는 Resource Server 로 AuthCode(+Client ID/Secret)를 통해 Access Token 받음
- Refresh/Access Token
- Refresh Token 은 Access Token 을 사용자의 재로그인 없이 갱신할 수 있게 함
- Client 는 마침내 획득한 Access Token 을 저장하여 Resource Server 로 API Call
Client ID/Secret
OAuth 프로세스를 진행하기 위해서는 Client ID 와 Client Secret 을 획득해야 한다. Application 에 대한 기본적인 정보가 들어간다. Client ID 는 login URL 구성에 사용되거나 javascript 코드에 사용되며 public information 으로 간주되지만, Client Secret 의 경우 절대적으로 노출되면 안 된다.
참고
This post is licensed under CC BY 4.0 by the author.