소셜 로그인 인증 방식은 OAuth2 라는 기술을 바탕으로 구현된다.
인증을 중개해주는 메커니즘이다.
보안된 리소스에 액세스하기 위해 클라이언트에게 권한을 제공하는 프로세스를 단순화하는 프로토콜이다. 즉, 이미 사용자 정보를 가지고 있는
웹 서비스(깃허브, 구글, 페이스북 등)에서 사용자의 인증을 대신해주고,
접근 권한에 대한 토큰을 발급한 후, 이를 이용해 내 서버에서 인증이 가능해진다.
인터넷 사용자들이 자신의 비밀번호를 제공하지않고 자신들의 리소스 대해서 다른 웹사이트나 어플리케이션에서 접근할 수 있는 개방형 프로토콜의 한 종류
: 액세스 중인 리소스의 유저
유저 김코딩
: resource owner를 대신하여 보호된 리소스에 액세스하는 응용프로그램
앱(페이스북 등)
: client의 요청을 수락하고 응답할 수 있는 서버
페이스북
: resource server가 액세스 토큰을 발급받는 서버
페이스북
: 클라이언트가 액세스 토큰을 얻을 때 사용하는 자격 증명
대표적인 방법
: access token을 발급받기 전에 필요한 code
(허가증)클라이언트 아이디와 클라이언트 시크릿이 필요한데 이것을 Authorization code라한다.
: 보호된 리소스에 액세스하는 데 사용되는 credentials
: 주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스의 범위
image
client가 액세스 토큰을 얻는 방법
각 그랜트 타입은 특정 용도에 최적화가 된다.
: 일단, 두가지는 알고 지나가기!
-implicit grant type
-client credentials grant type
-resource owner credentials grant type
-Authorization Code Grant Type
: grant type중에서 가장 일반적으로 사용되고 있는 유형
액세스 토큰을 받아오기 위해서 먼저, -Authorization Code를 받아
액세스 토큰과 교환하는 방법.
-Authorization Code 절차를 거치는 이유는 보안성 강화에 목적이 있다.
client-secret을 공유하고 액세스 토큰을 가지고 오는 것은 탈취될 위험이 있기 때문에 client에서는 Authorization Code만 받아 오고 Server에서 Access token 요청을 진행한다.
즉, 직접적으로 소통이 가능하다.
-Refresh Token Grant Type
일정 기간 유효 시간이 지나서 만료된 액세스 토큰을 편리하게 다시 받아오기 위해 사용하는 방법
Access token보다 Refresh token의 유효 시간이 대체로 조금 더 길게 설정하기 때문에 가능한 방법이다.
server마다 Refresh token에 대한 정책이 다 다르기 때문에 Refresh token을 사용하기 위해서 사용하고자 하는 server 정책을 살펴볼 필요가 있다.