Epic Online Services (EOS) は、ID プロバイダ (または「プラットフォーム」) と呼ばれる複数のオンライン ストアやゲーミング サービスのプレイヤー アカウントをリンクすることができます。これにより、ユーザーは使用するさまざまなプラットフォーム間でデータを共有し、マッチメイキングなどのクロスプラットフォーム機能に参加できます。
EOS がサポートする ID プロバイダ:
- Amazon
- Apple
- Discord
- Epic Games*
- GOG Galaxy
- itch.io
- Nintendo
- Oculus
- PlayStation Network
- Steam
- Xbox Live
- OpenID
有効な ID プロバイダ (上図で表示) でユーザーが 製品 のインスタンスを開始する場合、その製品は毎回 接続インターフェース を使用してローカル ユーザーを認証します。
この ID プロバイダは認証トークンを提供します。EOS_EExternalCredentialType と EOS_Connect_Login は、ローカル ユーザーを検証する認証トークンの種類と、トークンの信頼性と有効性を確認する ID プロバイダを特定します。環境を複数利用する製品には、複数の認証トークンが必要になる場合があります。
EOS は ID プロバイダ構成を使用して送信されたトークンやユーザー ID を検証し、そのユーザーを既存の製品データに接続します。
ユーザーが新しいプラットフォームで最初に製品をプレイする場合、EOS はそのプラットフォームにそのプレイヤーの製品データが存在しないことを確認します。さらに、製品クライアントが現在のプラットフォームでアカウント手続きを続行するようにユーザーに要求し、ユーザーはそのゲームの新しいアカウントをこのプラットフォームに作成するか、その製品のプレイに以前使用した別のアカウントでログインします。
ユーザーが別の ID プロバイダを使用して既存の アカウント でログインすることを選択した場合、その製品はそのユーザーに 2 つのアカウントをリンクするかどうか尋ねます。この最初のイベントが完了すると、このユーザーがこの製品をプレイするときに使用するアカウントを EOS が記憶するので、ユーザーに再度プロンプトを表示しません。
ID プロバイダを構成する
製品の ID プロバイダを設定する際は、アクセスする製品を選択して [Product Settings (製品設定)] をクリックし、[Identity Providers (IDプロバイダ)] タブを選択します。次に [Configure (構成)] ボタンで各プロバイダを構成します。
ID プロバイダを設定した後、[Product Settings] をクリックして [Environments (環境)] タブを選択することで、製品のサンドボックスで ID プロバイダを有効にできます。[Identity Providers] ボタンをクリックして、サンドボックスの ID プロバイダを設定します。
OpenID プロバイダ
会社に独自のユーザー アカウント システムがある場合は、認証のサポートを追加できます。この場合はまず OpenID プロバイダの構成を追加して、EOS SDK でユーザーを認証します。その後、他の ID プロバイダと同様の方法でゲーム サービスを利用します。
OpenID プロバイダは UserInfo API エンドポイントまたは JSON Web Key Set (JWKS) を使用してトークンを検証します。
UserInfo API エンドポイント
UserInfo API エンドポイントを構成するには、そのユーザーのアカウント ID に対応する JWT アクセス トークンと JSON 応答フィールド名のクレーム名、さらに UserInfo エンドポイントが返す表示名を指定する必要があります。
EOS の認証バックエンドは EOS_Connect_Login に渡したアクセス トークンを使用して、UserInfoAPI エンドポイントを呼び出します。
この API エンドポイントは、HTTPS プロトコルに加えて、GET と POST の HTTP メソッドのいずれかを使用します。また、発生する可能性がある以下のエラーに対して応答を実装する必要があります。
HTTP 応答コード | 返される EOS_EResult | 説明 |
---|---|---|
200 OK | EOS_Success | アクセス トークンは有効で信頼できます。 |
401 Unauthorized | EOS_Connect_ExternalTokenValidationFailed | アクセス トークンが無効、有効期限切れ、または信頼できません。 |
403 Forbidden | EOS_Connect_ExternalTokenValidationFailed | EOS の認証バックエンドがリクエストを許可されていません。警告:これは通常発生しません。 |
404 Not Found | EOS_Connect_ExternalTokenValidationFailed | このユーザーはアカウント システムに存在しません。警告:これは通常発生しません。 |
500 Internal Server Error | EOS_Connect_ExternalServiceUnvailable | エラーが発生したため認証サービスがリクエストを完了できません。 |
JSON Web Key Set (JWKS)
OpenID プロバイダは、JWKS を使用して送信された ID トークンを検証します。そのために、公開されていてアクセス可能な JWKS URL を提供する必要があります。
ユーザーのアカウント ID は「sub」クレームから取得されます。
ID トークンの予想されるオーディエンス値 (「aud」クレーム) は、ユーザーの表示名のクレーム名とともに設定する必要があります。
ID プロバイダの固有情報
Nintendo
作成したゲーム アプリケーションが複数の Nintendo App ID に依存している場合、個別の環境とともに認証情報エントリを追加し、EOS サンドボックスで使用されるようにすべてを設定します。
Oculus
デフォルトでは、Rift と Quest デバイスは、Oculus エコシステムで 2 つの異なるプラットフォームとして扱われます。これは、使用しているデバイスに従って、ユーザーに対して異なる Oculus アプリ限定ユーザー ID をアプリケーションが認識するということです。この場合でも、EOS Connect バックエンドは、ユーザーは Oculus のデバイス間で同じであると見なします。アカウント リンク キーリングは Oculus 組織限定ユーザー ID を使用し、ログイン ユーザーを認識するためです。
ユーザーが両方の Oculus デバイスでアプリケーションにログインしている場合、それらの EOS ProductUserID は内部で 2 つの別の Oculus アプリ限定ユーザー ID にマップされます。これにより、ユーザーの EOS データは Oculus デバイス間で期待どおりに保持されます。
ただし、EOS_ProductUserID のリンクされた Oculus アカウントをクエリすると、既知の Oculus アプリ限定ユーザー ID のどちらかが不確定に返されます。このため、EOS SDK により返った Oculus アプリ限定ユーザー ID は、Oculus SDK で返った Oculus アプリ限定ユーザー ID と一致しない場合があります。たとえば、EOS SDK はユーザーの Rift ベースのアプリ限定ユーザー ID を返す一方で、ユーザーは Oculus Quest デバイスを使用していることがあります。
ユーザーがデバイスごとに別の Oculus アプリ限定ユーザー ID を持たないようにするには、Oculus App Groupings 機能を使用してクロスデバイス認証サポートを有効にできます。これにより Oculus エコシステムは同じ Oculus アプリ限定ユーザー ID を Oculus デバイス間で再利用でき、ユーザーを 1 人として扱います。
この点についての詳細は、「アプリグループを使用した Oculus でのクロスデバイス開発」を参照してください。
Steam
異なる SteamAppID 間でのユーザー認証では、Steamworks web ダッシュボードコンフィギュレーションで、すべての SteamAppID に同じ Steam Encryption Key を使用します。これにより、単一の EOS 認証情報エントリを異なる Steam ゲーム ビルド間で使用できます。