カスタムストレージ

仕組み

  1. 御社のアプリケーション(クライアント)はエクソラログインサーバーに要求を送信します。要求の形式は JWTおよびGeneralメソッドグループで説明されています。
  2. エクソラログインサーバーは要求を御社のサーバーに送信します。指示に従って要求を検証します。
  3. エクソラログインサーバーは御社のサーバーからの応答を処理し、結果をクライアントに送信します。
  4. 御社のクライアントはこの応答を処理します。

Info: ユーザー情報は御社のデータベースとエクソラの両方に保存されます。パスワードは御社のデータベースにのみ保存されます。

登録

  1. 御社のクライアントはRegister要求をエクソラログインサーバーに送信します。
  2. エクソラログインサーバーはこの要求を新規ユーザーURLに送信します。応答はこの指示で説明されている形式でなければなりません。

要求の例:

POST https://example.registration.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "email": "john@gmail.com",
  "password": "123456"
}

  1. ユーザー情報はエクソラデータベースに書き込まれますが、その一方で:
    • email パラメータは未確認フラグがたてられます。ユーザーはアカウントの確認emailを受信します
    • パスワードは記載されていません。
  2. ログインウィジェットを統合している場合には、ユーザーは以下のメッセージと共にページにリダイレクトされます:{email}に送信されている指示に従ってアカウントを確認してください

ユーザー名とパスワードで認証

  1. 御社のクライアントは Auth by Username and Password要求をエクソラログインサーバーに送信します。
  2. エクソラログインサーバーは要求を ユーザー確認URLに送ります。応答はこの 指示で説明されている形式でなければなりません。

要求の例:

POST https://example.authentication.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "email": "john@gmail.com",
  "password": "123456"
}

  1. エクソラログインサーバーはユーザーJWTを生成します。
  2. ユーザーはtokenクエリパラメータのあるlogin_urlにリダイレクトされます。token パラメータにはユーザーJWTが含まれます。

エクソラデータベースにこのユーザーに関する情報がない場合には、新規エントリが作成されますがパスワードは記載されません。

パスワードのリセット

  1. 御社のクライアントはReset Password要求をエクソラログインサーバーに送信します。
  2. エクソラログインサーバーはこの要求をパスワードのリセットURLに送信します。応答はこの 指示で説明されている形式でなければなりません。ユーザーはパスワードの変更確認Eメールを受信します。

要求の例:

POST https://example.reset.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "email": "john@gmail.com"
}

  1. 新しいパスワードはデータベースに記載されています。

使用に適した方

ログインを既に統合し、JWT標準に基づく認証を実装したパートナー。

使用するには

エクソラログインサーバーと御社のアプリケーション(クライアント)との接続を設定するには:カスタムストレージを

  1. 接続します。
  2. エクソラログインサーバーからの検証要求を設定します。

カスタムストレージの接続

  1. パブリッシャーアカウント > ログインプロジェクト> 一般設定と移動します。
  2. ユーザーデータストレージブロックでカスタムストレージを選択します。
  3. API要求を送信するURLを入力します:
    • ユーザー検証URL、
    • 新規ユーザーURL、
    • パスワードリセットURL、
    • Eメール変更URL。
  4. 以下の形式で応答するAPIを実装します:
    • 正常な要求には、HTTP 200/HTTP 204。追加のユーザーデータを含むJSONは、必要な場合には応答の本文に含めることができます。パスされたデータはJWT > partner_dataパラメータに記載されています。
    • 正常でない要求には、その他のHTTPステータスコード。

Info: JWTに御社のユーザーデータからのユーザーIDを含める場合には、御社担当のアカウントマネージャーにお問い合わせください。

エクソラログインサーバーからの要求の検証

エクソラログインサーバーの要求は御社のURLAuthorization: Bearer <JWT>タイトルと共に送信されます。JWTは御社のプロジェクトの秘密鍵で署名されています。

JWTの検証方法:

  1. 秘密鍵の値をコピーします(パブリッシャーアカウント > ログインプロジェクト > 一般設定 > 秘密鍵)。
  2. ライブラリを選択して秘密鍵の値を検証機能にパスします。
  3. 検証に成功したら、JWTを復号して、以下の表に記載のクレームが含まれることを確認します。ライブラリを見つけて復号に使用します。

クレーム説明
expUnixタイムスタンプ形式のJWT有効期限日時。JWT有効時間は7分です。
iatUnixタイムスタンプ形式のJWTが発行された日時。
issJWTに署名したサービスhttps://login.xsolla.com
request_type定数:gateway_request
xsolla_login_project_idパブリッシャーアカウントの御社のログインプロジェクトID。

例:

{
  "exp": 1573635020,
  "iat": 1573634600,
  "iss": "https://login.xsolla.com",
  "request_type": "gateway_request",
  "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000"
}