웹사이트에 접속하여 로그인을 하다보면 해당 웹사이트 플랫폼 계정이 아닌 위의 사진 예시처럼 타사 플랫폼 로그인 창이 뜨며 로그인이 연계되는 경우를 종종 본 적 있을 것이다.
보통 이용할려는 웹사이트 플랫폼 계정을 새로 만들어야 하는 번거로운 작업을 다소 해결 해주는데,
이는 소셜 로그인 인증 방식인 OAuth 라는 인증 방법이라고 부르며 어떤 메커니즘 작동 원리를 갖고 있는지 알아보자.
우선 OAuth 작동 원리를 파악하기 전 해당 원리에 쓰이는 용어는 먼저 알고 있어야 되므로 아래 용어에 대해 숙지하자.
Resource Owner: 액세스 상태인 리소스의 유저
Client: Resource Owner를 대신하여 보호된 리소스에 액세스하는 응용프로그램
Resource server: Client의 요청을 수락하고 응답하는 서버
Authorization server: Resource server에게 액세스 토큰을 발급해주는 서버
Authorization grant: 클라이언트가 액세스 토큰을 얻을 때 사용하는 자격 증명
Authorization code: access token을 발급받기 전에 필요한 코드
Access token: 보호된 리소스에 액세스하는데 사용되는 credentials
Scope: scope는 토큰의 권한을 정의하며 주어진 액세스 토큰을 사용하여 액세스할 수 있는 리소스 범위
OAuth는 Resourse server 역할인 user
, client
, Authrization server
, Server
4가지 영역이 서로 밀접한 관계로 이루어 진다.
OAuth는 Resource Owner Password Credentials Grant Types, Client Credentials Grant Types 등등 다양한 인증 방식이 있는데 해당 사진은 Authorization code의 예로 설명되었다.
Authorization server에 접속하여 해당 플랫폼 어플리케이션에서 요청하는 권한을 허용할 경우
쿼리 파라미터 중 client_id
, redirect_uri
, response_type
,scope
, state
요소는 필히 지정해줄 것
여기서 state
은 어플리케이션 측에서 임의의 문자열을 생성하여 요청에 포함하는데 이는 사용자 권한을 인증한 후 동일한 값이 반환 되었는지 비교해야한다. 즉, CSRF 공격을 막기 위해 사용하는 셈