OAuth 2.0 프로토콜
개요
엑솔라 로그인은 사용자 등록 및 인증용으로 OAuth 2.0 표준 프로토콜을 지원합니다. OAuth 2.0은 클라이언트 역할을 리소스 소유자로부터 분리합니다. 리소스는 소유자가 제어하고 서버가 호스트합니다. 보호된 리소스에 액세스하려면 클라이언트는 액세스 특성을 정의하는 문자열인 액세스 토큰을 가져와야 하며 리소스 소유자의 자격 증명을 사용하지 않습니다. 리소스 소유자의 승인 아래 서버는 액세스 토큰을 제삼자 클라이언트에게 사용을 위해 줍니다. Auth 2.0 프로토콜에 대한 자세한 정보는 공식 웹사이트에서 확인할 수 있습니다. 사용자 JWT가 access_token입니다.
클라이언트와 엑솔라 로그인 서버 사이의 상호 작용 흐름:
OAuth 2.0 프로토콜 설정 방법:
- 로그인 제품을 연결합니다.
- 엑솔라 저장소 또는 PlayFab을 설정합니다.
- OAuth 2.0 클라이언트를 연결합니다.
OAuth 2.0 클라이언트 연결
- 게시자 계정으로 이동하여 로그인 프로젝트 > 일반 설정 > 권한 부여 > OAuth 2.0 인증을 엽니다.
- 연결을 클릭합니다.
- 모달 창에서 다음을 지정합니다.
- 클라이언트 이름.
- OAuth 2.0 리디렉션 URI. Login API 호출에 대한 redirect_uri 매개 변수.
- 인증 유형: 공용 또는 기밀.
- 비밀 클라이언트는 액세스 토큰 가져오기 및 업데이트를 위해
Generate JWT 호출를 호출할 때 클라이언트 ID와 비밀 키 사용을 요구합니다. - 공용 클라이언트는 클라이언트 ID 사용만을 요구합니다.
JWT auth by username and password 호출은 공용 클라이언트만 이용 가능합니다.
- 연결을 클릭하세요.
OAuth 2.0 클라이언트 설정 가져오기
클라이언트 ID와 비밀 키를 가져오는 방법:
- 게시자 계정으로 이동하여 로그인 프로젝트 > 일반 설정 > 권한 부여 > OAuth 2.0 인증을 엽니다.
- 클라이언트 블록에서 연결/편집을 클릭합니다.
이러한 설정이 있는 창이 OAuth 2.0 클라이언트 연결 후에 자동으로 열립니다. 클라이언트 ID와 비밀 키가 Login API 호출용 client_id 및 client_secret 매개 변수와 일치합니다. OAuth 2.0 클라이언트 작업 시 이러한 설정을 사용합니다.
애플리케이션 측 통합
통합 가능 방법:
Login API로 작업할 때 scope 매개 변수를 사용할 수도 있습니다. 가능한 매개 변수의 값:
- 액세스 토큰 업데이트를 위한 offline. scope=offline을 등록 또는 인증 호출로 전달하는 것이 요구됩니다.
- 소셜 네트워크를 통한 사용자 인증 시 추가 사용자 이메일 요청을 위한 email. 제품 로그인을 이전 버전의 로그인 위젯으로 통합한 경우 이 값을 설정하십시오. 소셜 인증 동안에 이메일 수집 지침을 참조하십시오.
로그인 위젯을 통한 통합
로그인을 위젯을 통해 통합하는 경우:
- 위젯 2.0: client_id, response_type, state, redirect_uri를 초기화 코드에 추가합니다. scope 매개 변수도 추가할 수 있습니다. redirect_uri 매개 변수의 HTTP/HTTPS 체계를 https://example.com에서처럼 지정해야 합니다 .
- html
<script>
const xl = new XsollaLogin.Widget({
projectId: 'LOGIN_PROJECT_ID',
preferredLocale: 'en_US',
clientId: 'CLIENT_ID',
responseType: 'code',
state: 'CUSTOM_STATE',
redirectUri: 'REDIRECT_URI',
scope: 'SCOPE'
});
</script>
- 이전 버전 위젯: redirect_uri와 client_id 매개 변수를 초기화 코드에 추가합니다. scope 매개 변수도 추가할 수 있습니다. redirect_uri 매개 변수의 HTTP/HTTPS 체계를 지정해야 합니다 .
- html
<script type="text/javascript">
XL.init({
projectId: 'LOGIN_PROJECT_ID',
locale: 'en_US',
redirectUri: 'REDIRECT_URI',
clientId: 'CLIENT_ID',
state: 'CUSTOM_STATE',
scope: 'SCOPE'
});
</script>
Login API를 통한 통합
사용자 등록 및 인증용으로 API 요청을 OAuth 2.0 프로토콜에 대해 사용합니다. JWT 표준용으로 이미 요청을 통합하였다면 OAuth 2.0 요청을 호출하여 이를 교체합니다.
API 인증 요청 호출 시 액세스 토큰용 code 매개 변수를 교환합니다.
Login SDK를 통한 통합
Login SDK는 OAuth 2.0 프로토콜 기반 인증을 지원합니다. OAuth 2.0 클라이언트를 설정하려면 게임 엔진을 선택하고 다음 지침을 따르세요.
액세스 토큰 가져오기
- http
POST https://login.xsolla.com/api/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
client_id=11&client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&code=ldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&grant_type=authorization_code&redirect_uri=https://my-website.com/callback
액세스 토큰 업데이트
엑솔라 로그인 서버는 액세스 토큰을 생성하고 성공적으로 인증된 각 사용자를 위한 새로운 세션을 만듭니다. 기본적으로 토큰의 만료 시간은 1시간입니다.
- 첫 번째 호출은 grant_type=authorization_code 매개 변수와 사용자 인증 후에 받은 code 매개 변수를 사용합니다.
- 토큰이 만료된 후의 후속 호출에 대해서는 grant_type=refresh_token 매개 변수와 최신 refresh_token 값을 사용합니다.
- http
POST https://login.xsolla.com/api/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
client_id=11&client_secret=vGbXcsQ0CEW233m2qldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&code=ldYkd5IxbnRKoWt2YiBOgHYJGRGQwtIAdtxgxT64ik&grant_type=refresh_token&refresh_token=111dfgdfgdf&redirect_uri=https://my-website.com/callback