player-auth
note
#
オンボーディングデリゲートトークン API を使用するには、Unity ユーザー認証サービス(UAS)に顧客がオンボーディングされている必要があります。マッチメーカーベータ中は、これが自動的に発生するようにしてください。
オンボーディング完了後、Multiplay は次の情報を顧客に提供します。
client_id
client_secret
note
client_secret
は、サーバー間の API 呼び出しの安全性を確保するために使用されます。安全なプロセスを使用して送信されます。
#
ユーザーフロー使用されるトークンには、「サービストークン」と「デリゲートトークン」という 2 つの種類があります。「サービストークン」は「デリゲートトークン」を作成するために使用され、Multiplay によって提供される client_id
と client_secret
を使用して認証が行われます。
「デリゲートトークン」には matchmaking
と matchmaking.read
の 2 つの異なるスコープがあります。matchmaking
スコープは、マッチメイキングサービスへの全アクセス(読み取り、書き込み、削除)を提供する一方で、matchmaking.read
スコープはマッチメイキングサービスへの読み取り専用アクセス(プレイヤーのアクセストークン)を提供します。
ゲームサービスの定義
ゲームサービスは中間サーバー/サーバーレス/アプリケーションとして記述され、特定のゲーム関連の操作を処理します。これは、ゲーム開発者によって開発および管理されます。
例として、ロビーサービスや認証サーバーなどが挙げられますが、これらに限りません。
サードパーティのソリューションの一部として、Playfab、GameSparks、Firebase などが挙げられます。
推奨されるフローは次のとおりです。
- ゲームサービスが
client_id
とclient_secret
を使用して「サービストークン」を作成します。 - ゲームサービスが作成した「サービストークン」を使用して
matchmaking
スコープの「デリゲートトークン」を生成します。 - ゲームクライアントはゲームサービスから
matchmaking.read
スコープの「デリゲートトークン」(プレイヤーのアクセストークン)をリクエストし、ゲームサービスは代わりに正しいトークンを生成してそれをゲームクライアントに渡します。 - ゲームクライアントはプレイヤーのアクセストークンをローカルにキャッシュし、後でそれを使用してマッチメイキングチケットのステータスを照会します。
- ゲームクライアントはゲームサービスからマッチメイキングチケットを作成するようリクエストできます。
- ゲームサービスは(
matchmaking
スコープの「デリゲートトークン」を使用して)新しいチケットを作成し、そのチケットの作成者をリクエストを送信したクライアントの ID と一致するように設定して、その新しく作成されたチケットの ID をゲームクライアントに転送します。 - これでゲームクライアントはローカルにキャッシュされたプレイヤーのアクセストークンをチケット ID と共に使用して、チケットのステータスを照会できます。
note
matchmaking
スコープの「デリゲートトークン」は、他のユーザーの代わりにマッチメイキングチケットを作成できます。
matchmaking.read
スコープの「デリゲートトークン」(プレイヤーのアクセストークン)は、同じユーザーによって作成されたチケットのみ読み取ることができます。
caution
サーバー間トークンの有効期限は 1 時間です。トークンの有効期限が切れたら、サーバー側で新しいトークンを再生成する必要があります。
#
APIデリゲートトークン API は、ゲームサービスによって呼び出されて、プレイヤーのアクセストークンを生成します。このプロセスには、サーバー間呼び出しを認証する、アクセストークン(「サービストークン」)が必要です。この API 呼び出しがクライアント側から行われることはありません。
API エンドポイント:https://api.prd.identity.corp.unity3d.com
#
サービストークンの生成POST /oauth2/token を使用してサーバー間呼び出し用のアクセストークンを生成します。
- 本文:CreateToken
- レスポンス:200 (TokenResponse), 400
#
デリゲートトークンの生成POST /oauth2/delegate-token を使用して、「サービストークン」を使用して承認された matchmaking
スコープか matchmaking.read
スコープのいずれかのデリゲートトークンを生成します。
- 承認:トークンのエンドポイントからアクセストークン(「サービストークン」)を使用します。
- 例:
Bearer eyJhbGc...25by
- 詳細については、RFC 6749 に関する IETF ドキュメントを参照してください。
- 例:
- 本文:CreateDelegateToken
- レスポンス:200 (DelegateTokenResponse), 400
#
コントラクト#
CreateTokenフィールド | 説明 | 型 |
---|---|---|
grant_type | アクセストークンの付与タイプ。デリゲートトークンフローでは、client_credentials にする必要があります。 | string |
client_id | 顧客のオンボーディング中に生成される OAuth クライアント ID。 | string |
client_secret | 顧客のオンボーディング中に生成される OAuth クライアントシークレット。 | string |
scope | サーバー間アクセストークンのスコープ。そのトークンがデリゲートトークン API を呼び出せるように、スコープは identity.delegate-token にする必要があります。 | string |
#
TokenResponseフィールド | 説明 | 型 |
---|---|---|
access_token | サーバーがデリゲートトークン API を呼び出すためのアクセストークン。これはユーザー ID とスコープが含まれる JWT トークンです。 | string |
scope | アクセストークンに付与されるスコープ。 | string |
token_type | レスポンストークンのタイプ。この値は常に bearer です。 | string |
expires_in | アクセストークンの有効期限が切れるまでの期間(秒)。デフォルト値は 3600 秒です。 | number |
#
CreateDelegateTokenフィールド | 説明 | 型 |
---|---|---|
user_id | ゲームの認証サーバーによって提供されるユーザー ID。これはそのプレイヤーの一意識別子です。 | string |
scope | アクセストークンに付与されるスコープ。matchmaking または matchmaking.read のいずれかのみになります。 | string |
#
DelegateTokenResponseフィールド | 説明 | 型 |
---|---|---|
access_token | ユーザーのアクセストークン。これはユーザー ID とスコープが含まれる JWT トークンです。 | string |
expires_in | アクセストークンの有効期限が切れるまでの期間(秒)。デフォルト値は 3600 秒です。 | number |