OAuth 2.0 introduction!
결국 크게 나누어 아래 두가지를 하고 싶어서 OAuth2.0(RFC 6749)를 사용합니다.
- 인증 (Authentication)
- 인증은 지금 접속한 client가 누구인지에 대한 내용입니다. web browser, mobile app, 심지어 device가 될 수도 있습니다.
- 권한 부여 (Authorization)
- client가 이용하려고 하는 resource(web server, DB, storage 등등)에 대한 권한(user, admin, operator등등)을 부여합니다.
- protocol flow
+--------+ +---------------+ | |--(A)- Authorization Request ->| Resource | | | | Owner | | |<-(B)-- Authorization Grant ---| | | | +---------------+ | | | | +---------------+ | |--(C)-- Authorization Grant -->| Authorization | | Client | | Server | | |<-(D)----- Access Token -------| | | | +---------------+ | | | | +---------------+ | |--(E)----- Access Token ------>| Resource | | | | Server | | |<-(F)--- Protected Resource ---| | +--------+ +---------------+
authorization server와 resource server는 같은 서버일 수도 있습니다.
- end-user(resource owner)는 client에게 접근 권한 정보를 줍니다.
- OAuth(authorization server)는 server(authorization server)와 client간의 인증이 성공하면 권한에 대한 내용인 Access Token을 client에게 줍니다.
- client는 Access Token을 HTTP header에 포함하여 server(resource server)에 request 합니다.
- server(resource server)는 client의 request에 Access Token를 통해 권한을 확인하고 response합니다.
Access Token과 Refresh Token, authorization grant type등의 내용은 다음 글에서 자세히 다룰 예정입니다.
※ 참고하면 좋을 문헌
- https://jungle.kim/2018/04/21/oauth/