シングルサインオン

どのように動作するか

ユーザー認証用の共通の単一アカウントを持つ複数の接続済みサービスがある場合は、シングルサインオンを使用できます。ゲームのウェブサイトはサービスとして機能します。これにより、ユーザーは資格情報を一度だけ入力できます。その後、接続されているサービスの1つを開くと、ユーザーは既に認証されています。

統合フロー

  1. 認証されていないユーザーがサービスの1つを開きます。
  2. あなたのクライアントはCheck user authenticationリクエストをエクソラログインサーバーへ送信して、エラー401が発生します。
  3. クライアントは、ユーザーの認証フォーム(ログインウィジェットまたはログインUI)を開きます。
  4. ユーザーは、ユーザー名とパスワードまたはソーシャルネットワークを介して認証されます。

  1. クライアントは、ログインプロジェクトでユーザーを認証します:
    • APIコールを介してログインを統合する場合、次のリクエストが使用されます:
      • ユーザー名とパスワードによる認証(JWTOAuth 2.0)。
      • ソーシャルネットワークによる認証(JWTOAuth 2.0)。
    • OAuth 2.0プロトコルは、ウィジェットを介してログインを統合するときに使用されます。
    ユーザーセッションデータはエクソラログインサーバーに保存されます。サーバーは、クエリパラメータのcodeがあるredirect_uriを含むlogin_uriを送信します。

  1. あなたのクライアントがユーザーをredirect_uriにリダイレクトします。
  2. サーバーはGenerate JWTリクエストを送信して、受信したcodeをJWTと交換します。ユーザーはサービスで認証されます。
  3. ユーザーが別のサービスを開きます。
  4. クライアントはCheck user authenticationリクエストをエクソラログインに送信し、クエリパラメータのcodeがあるredirect_uriを含むlogin_uriを受け取ります。
  5. サーバーはGenerate JWTリクエストを送信して、受信したcodeをJWTと交換します。ユーザーは第二サービスで認証されます。

さまざまのサービスのアクセス権を区別する

さまざまなサービスのユーザーアカウントアクセス権を区別するには、さまざまなOAuth 2.0クライアントに対してscopeパラメータの特別な値を使用できます(例えば、scope=playfab)。

使用に適した方

ログインを統合し、エクソラデータベースまたはPlayFabを使用しているパートナー。

入手方法

シングルサインオンを接続するには:

  1. OAuth 2.0プロトコルを接続する
  2. ユーザーセッションリクエストの取得コールバックを実装する

OAuth 2.0プロトコルを接続する

説明に従ってOAuth 2.0プロトコルを接続します。すべてのサービスに1つのOAuth 2.0クライアントを使用するか、サービスごとに個別のOAuth 2.0クライアントを作成できます。

ユーザーセッションを取得するための呼び出しリクエスト

サービスを開くときにCheck user authenticationリクエストコールバックを実装します。リクエストは、ユーザーの認証フォームを開く前に実行する必要があります。認証には、ユーザーが認証する正確なサービスのOAuth 2.0クライアントパラメータを使用します。

リクエストの例:

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

ユーザー認証時の応答例:

Copy
Full screen
Small screen
HTTP/1.1 200 OK
Content-Type: application/json

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

ユーザーJWTを取得するには:

  1. クライアントは、受信したredirect_uriにユーザーをリダイレクトするリクエストを実装して使用します。
  2. サーバーは、受信したcodegrant_type=authorization_codeを使用してGenerate JWTリクエストを送信して、JWTを取得します。

ユーザーが認証されていない場合の応答例:

Copy
Full screen
Small screen
HTTP/1.1 401 Unauthorized
Content-Type: application/json

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