OAuth 2.0 프로토콜

개요

엑솔라 로그인은 사용자 등록 및 인증용으로 OAuth 2.0 표준 프로토콜을 지원합니다. OAuth 2.0은 클라이언트 역할을 리소스 소유자로부터 분리합니다. 리소스는 소유자가 제어하고 서버가 호스트합니다. 보호된 리소스에 액세스하려면 클라이언트는 액세스 특성을 정의하는 문자열인 액세스 토큰을 가져와야 하며 리소스 소유자의 자격 증명을 사용하지 않습니다. 리소스 소유자의 승인 아래 서버는 액세스 토큰을 제삼자 클라이언트에게 사용을 위해 줍니다. Auth 2.0 프로토콜에 대한 자세한 정보는 공식 웹사이트에서 확인할 수 있습니다. 사용자 JWTaccess_token입니다.

클라이언트와 엑솔라 로그인 서버 사이의 상호 작용 흐름:

OAuth 2.0 프로토콜 설정 방법:

  1. 로그인 제품을 연결합니다.
  2. 엑솔라 저장소 또는 PlayFab을 설정합니다.
  3. OAuth 2.0 클라이언트를 연결합니다.

OAuth 2.0 클라이언트 연결

  1. 게시자 계정으로 이동하여 로그인 프로젝트 > 일반 설정 > 권한 부여 > OAuth 2.0 인증을 엽니다.
  2. 연결을 클릭합니다.
  3. 모달 창에서 다음을 지정합니다.
    1. 클라이언트 이름.
    2. OAuth 2.0 리디렉션 URI. Login API 호출에 대한 redirect_uri 매개 변수.
    3. 인증 유형: 공용 또는 기밀.

Note:
클라이언트 유형에 관한 세부 정보는 The OAuth 2.0 Authorization Framework를 참조하세요. Login API로 작업하는 경우:
  • 비밀 클라이언트는 액세스 토큰 가져오기 및 업데이트를 위해 Generate JWT 호출를 호출할 때 클라이언트 ID비밀 키 사용을 요구합니다.
  • 공용 클라이언트는 클라이언트 ID 사용만을 요구합니다.
  • JWT auth by username and password호출은 공용 클라이언트만 이용 가능합니다.

  1. 연결을 클릭하세요.

OAuth 2.0 클라이언트 설정 가져오기

클라이언트 ID비밀 키를 가져오는 방법:

  1. 게시자 계정으로 이동하여 로그인 프로젝트 > 일반 설정 > 권한 부여 > OAuth 2.0 인증을 엽니다.
  2. 클라이언트 블록에서 연결/편집을 클릭합니다.

이러한 설정이 있는 창이 OAuth 2.0 클라이언트 연결 후에 자동으로 열립니다. 클라이언트 ID비밀 키Login API 호출용 client_idclient_secret 매개 변수와 일치합니다. OAuth 2.0 클라이언트 작업 시 이러한 설정을 사용합니다.

Note:
귀하의 애플리케이션 측에서 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에서처럼 지정해야 합니다 .

Copy
Full screen
Small screen
<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_uriclient_id 매개 변수를 초기화 코드에 추가합니다. scope 매개 변수도 추가할 수 있습니다. redirect_uri 매개 변수의 HTTP/HTTPS 체계를 지정해야 합니다 .

Copy
Full screen
Small screen
<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 클라이언트를 설정하려면 게임 엔진을 선택하고 다음 지침을 따르세요.

액세스 토큰 가져오기

Generate JWT 호출을 grant_type=authorization_code 매개 변수와 사용하여 액세스 토큰을 가져옵니다. code 매개변수는 토큰을 가져오기 위해 필요하며 이는 사용자 인증 또는 등록 후에 redirect_uri에 전달됩니다.

Copy
Full screen
Small screen
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시간입니다.

Generate JWT 호출을 사용하여 토큰 업데이트:

  • 첫 번째 호출은 grant_type=authorization_code 매개 변수와 사용자 인증 후에 받은 code 매개 변수를 사용합니다.
  • 토큰이 만료된 후의 후속 호출에 대해서는 grant_type=refresh_token 매개 변수와 최신 refresh_token 값을 사용합니다.

Copy
Full screen
Small screen
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