싱글 사인 온

작동 방식

사용자 인증용 일반 단일 계정에 복수의 서비스가 연결되어 있는 경우, 싱글 사인 온을 사용할 수 있습니다. 게임 웹사이트는 서비스로써 작동증용 일반 단일 계정에 복수의 서비스가 연결되어 있는 경우, 싱글 사인 온을 사용할 수 있습니다. 게임 웹사이트는 서비스로써 작동하므로 사용자는 자격 증명을 1회만 입력해도 됩니다. 그 이후로는, 연결된 서비스 중 하나를 열 때 사용자 인증은 이미 이루어진 것입니다.

상호작용 절차

  1. 미인증 사용자가 서비스 중 하나를 엽니다.
  2. 클라이언트가 Check User Authentication 요청을 엑솔라 로그인 서버로 보내고 에러 401이 발생합니다.
  3. 클라이언트가 사용자 인증 양식(로그인 위젯 혹은 로그인 UI)을 엽니다 .
  4. 사용자는 사용자 이름과 비밀번호 혹은 SNS를 통해 인증합니다.

  1. 클라이언트는 로그인 프로젝트에서 사용자를 인증합니다:
    • 다음 요청은 로그인을 API 메소드를 통해 통합할 때 쓰입니다:
    • OAuth 2.0 프로토콜은 로그인을 위젯을 통해 통합할 때 쓰입니다.
    사용자 세션 데이터는 엑솔라 로그인 서버에 저장됩니다. 서버는 login_uri를 보내는데 이는 redirect_uri를 포함하며 code이 쿼리 매개변수에 있습니다.

  1. 클라이언트는 사용자를 redirect_uri로 리디렉션 시킵니다.
  2. 서버는 Generate JWT 요구를 보내서 JWT를 위한 code를 교환합니다. 사용자는 서비스 상에서 인증됩니다.
  3. 사용자가 다른 서비스를 엽니다.
  4. 클라이언트는 Check User Authentication 요청을 엑솔라 로그인 서버로 보내고 login_uri를 받는데 이는 redirect_uri를 포함하며 쿼리 매개변수에 code를 동반합니다.
  5. 서버는 Generate JWT 요청을 보내서 JWT를 위한 수신한 code를 교환합니다. 사용자는 두 번째 서비스 상에서 인증됩니다.

상이한 서비스에 대한 접근권 구분

상이한 서비스에 대한 사용자 계정 접근권을 구분하기 위하여 다른 OAuth 2.0 클라이언트에 scope 매개변수(예 scope=playfab)의 특수한 값을 사용할 수 있습니다.

사용자

로그인을 통합하고 엑솔라 데이터베이스 혹은 PlayFab을 사용하는 파트너.

획득 방법

싱글 사인 온 연결 방법:

  1. OAuth 2.0 프로토콜을 연결합니다. 사용자 세션 메소드 취득 콜백을
  2. 구현합니다.

OAuth 2.0 프로토콜 연결

레시피를 따라 OAuth 2.0 프로토콜을 연결합니다. 모든 서비스에 하나의 OAuth 2.0 클라이언트를 사용하거나 모든 서비스를 위한 별도의 OAuth 2.0 클라이언트를 생성할 수 있습니다.

사용자 세션 취득 메소드 호출

서비스를 열 때 Check User Authentication 메소드 콜백을 구현합니다. 요청은 사용자를 위한 인증 양식을 열기 전에 실행되어야 합니다. 인증을 위해서는 사용자가 인증을 원하는 정확한 서비스의 OAuth 2.0 클라이언트 매개 변수를 사용하세요.

요청 사례:

Copy
Full screen
Small screen
GET https://login.xsolla.com/api/oauth2/sso?client_id=<client_id>&redirect_uri=<redirect_uri>&scope=<scope>&state=<state>&response_type=code HTTP/1.1

사용자 인증 시 응답 예제:

Copy
Full screen
Small screen
HTTP/1.1 200 OK

{
  "login_url": "<redirect_uri>?code=<code>"
}

사용자 JWT 획득 방법:

  1. 클라이언트는 사용자를 수신한 redirect_uri로 리디렉션 시키는 메소드를 구현하고 적용합니다.
  2. 서버는 JWT를 얻기 위해 Generate JWT요청과 함께 수신한 codegrant_type=authorization_code를 보냅니다.

사용자 인증 실패 시 응답 예제:

Copy
Full screen
Small screen
HTTP/1.1 401 Unauthorized

{
  "error": {
    "code": "003-040",
    "description": "User is unauthorized."
  }
}