What is OAuth?
OAuth is an open-standard authorization protocol or framework that provides applications the ability for “secure designated access.”
쉽게 말해 소셜 로그인.
굳이 회원가입해서 id 와 pw 를 기억할 필요가 없다.
주요 용어
- Resource Owner : 액세스 중인 리소스의 유저
- Client : Resource owner를 대신하여 보호된 리소스에 액세스하는 응용프로그램
- Resource server : client의 요청을 수락하고 응답할 수 있는 서버
- Authorization server : Resource server가 액세스 토큰을 발급받는 서버. 페이스북, 구글 서버.
- Authorization grant : 클라이언트가 액세스 토큰을 얻을 때 사용하는 자격 증명의 유형.
- Authorization code : access token을 발급받기 전에 필요한 code. client ID로 이 code를 받아온 후, client secret과 code를 이용해 Access token 을 받아옴.
- Access token : 보호된 리소스에 액세스하는 데 사용되는 credentials
- Scope : 토큰의 권한. 주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스의 범위.
authorization vs authentication
- authorization - 권한 부여 (guest, admin 권한 등)
- authentication - 인증
Social login logic flow
상황) 구글아이디로 로그인
- 구글아이디로 로그인하기 클릭
- 클라가 구글서버에 authorization code 요청
- 구글의 소셜로그인관련 사이트로 이동
- 권한 허용 클릭
- 구글서버가 redirect uri 를 통해 code 보냄
- 클라는 code 를 서버에 전달
- 서버는 구글서버에 code 를 보내서 access token 요청
- 구글서버는 서버에 access token 보냄
- 서버가 클라에 access token 전달
- 소셜로그인 완료