Post

구글 OAuth 2.0 인증 정리

Resource Owner, Server, Client 간의 동작

구글 OAuth 2.0 인증 정리

오래 전 구글 OAuth 관련 개발을 하며 정리해둔 메모가 있어서 허전한 블로그에 남겨둔다.

img-description 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

  1. User 가 Client(‘나’ 의 Application)에서 로그인을 시도
  2. User 를 Resource Server 의 OAuth 2.0 서버로 Redirect
    • 서버에서 User 를 (로그인 등을 통해) 인증
    • (Client가 요청한) Scoped List 로의 접근 권한을 Client 에게 주기 위해 User 의 동의(prompt)를 구함
  3. Resource Server 가 Client 에게 specified redirect URL 을 통해서 response 로 AuthCode 전달
    • 이는 one-time use code 로 사용자가 승인했을 경우에만 전달됨
  4. Client 는 Resource Server 로 AuthCode(+Client ID/Secret)를 통해 Access Token 받음
    • Refresh/Access Token
    • Refresh Token 은 Access Token 을 사용자의 재로그인 없이 갱신할 수 있게 함
  5. 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.