シングルサインオン

どのように動作するか

ユーザー認証用の共通の単一アカウントを持つ複数の接続済みサービスがある場合は、シングルサインオンを使用できます。ゲームのウェブサイトはサービスとして機能します。これにより、ユーザーは資格情報を一度だけ入力できます。その後、接続されているサービスの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
http
  • http
  • curl
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
curl --request GET \
  --url 'https://login.xsolla.com/api/oauth2/sso?redirect_uri=redirect_uri&response_type=code&state=state&scope=scope&client_id=client_id'

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

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."
  }
}

この記事は役に立ちましたか?
ありがとうございます!
改善できることはありますか? メッセージ
申し訳ありません
この記事が参考にならなかった理由を説明してください。 メッセージ
ご意見ありがとうございました!
あなたのメッセージを確認し、体験を向上させるために利用させていただきます。
このページを評価する
このページを評価する
改善できることはありますか?

答えたくない

ご意見ありがとうございました!
最終更新日: 2021年6月9日

誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。

問題を報告する
当社は常にコンテンツを見直しています。お客様のご意見は改善に役立ちます。
フォローアップ用のメールをご提供してください
ご意見ありがとうございました!