Oauth란 무엇일까?
프로토콜이다. 제 3자 인증 ( 소셜 로그인 ) 을 통한 리소스 접근을 허용하는 프로토콜이다.
위의 사진을 보자. 로그인 방식은 2가지다.
티몬 계정을 이용하거나
소셜 계정을 이용하거나
client ( 사용자 ) 가 소셜 계정 로그인 버튼을 클릭한다. ( Authorization code 요청 )
소셜 계정 ( ex --- facebook ) 은 facebook 로그인 페이지를 제공하고 사용자는 로그인을 진행한다. 이후 facebook 측에서는 티몬으로부터 리소스 액세스 접근을 허용할 것인지 사용자에게 묻고 이를 허용하면 Authorization code가 발급된다.
( Authorization code 발급 )
Authorization code가 발급되면 클라쪽에서 자동으로 티몬 쪽으로 이 것을 넘겨주게 되고 티몬 서버 측에서 facebook에게 이 코드를 전송하며 자신의 신원을 증명하고 Access token을 부여받는다.
Acess Token이 만료되면 refresh Token을 이용하여 새로운 Access 토큰을 발급하여 유효시간을 연장한 후 티몬 서버에 접근할 수 있다.
- Resource Owner : 액세스 중인 리소스의 유저입니다. 김코딩의 구글 계정을 이용하여 App에 로그인할 경우, 이때 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입니다.
- Authorization code와 client secret을 이용해 받아온 이 Access token으로 이제 resource server에 접근을 할 수 있습니다.
- Scope : scope는 토큰의 권한을 정의합니다. 주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스의 범위입니다.