1. 0Auth 2.0 이란?
Open Authorization 2.0
웹사이트 또는 애플리케이션이 사용자를 대신하여 다른 웹 앱에서 호스팅하는 리소스에 액세스 할 수 있도록 설계된 표준 프로토콜이다.
0Auth를 통해 인터넷 사용자들은 비밀번호를 제공하지 않고, google과 같은 서비스의 계정정보에 대한 접근 권한을 부여받을 수 있다.
2012년 0Auth 1.0을 대체했으며 현재 업계 표준으로 사용되고 있다.
1.1 구성요소
Resource owner
리소스(개인정보) 소유자. 유저.
Authorization server
Authorization Server는 Resource Owner를 인증하고, Client가 authorized 될 경우 액세스 토큰을 발급해주는 서버
Resource server
리소스를 호스팅하느 서버. 유저가 접근하고자 하는 API.
Client
어플리케이션. 프론트와 백을 포함.
2. 작동 로직
- 유저가 구글 로그인 버튼을 누른다.
- 브라우저가 Authorization server로 리다이렉션 된다.
(response_type , client_id , redirect_uri , scope 정보와 함께)
3.Authorization URL로 이동된 Resource Owner는 제공된 로그인 페이지에서 ID와 PW 등을 입력하여 인증완료.
- 인증이 완료되면 미리 명시해놓은 Redirect URI로 발급된 Authorization code(credential)와 함께 유저가 리디렉션된다.
- 프론트에서 구글에서 받은 credential을 백엔드에 전송
- 백엔드는 credential을 사용해
- Authrization server에게 access token을 요청 및 발급받음
- access token을 활용하여 DB에 유저정보 저장.
- front에게 로그인이 완료되었다고 응답(how?)
- 프론트는 받은 응답을 쿠키 등에 저장하여 활용.
Q
- Authorization Server로 리다이렉션 주체는 누가? 백엔드에서 해야하나?
- session vs jwt vs token?\
References
https://auth0.com/docs/authenticate/protocols/oauth
https://inpa.tistory.com/entry/WEB-%F0%9F%93%9A-OAuth-20-%EA%B0%9C%EB%85%90-%F0%9F%92%AF-%EC%A0%95%EB%A6%AC