アプリケーションのアクセス制御を管理する
注釈:本資料はAI技術を用いて翻訳されています。
はじめに
AccelByte Gaming Services(AGS)では、Identity and Access Management(IAM)クライアントを、保護されたプラットフォームリソースへのアクセスを要求するアプリケーション(ゲームサーバーやウェブサイトなど)として定義しています。IAMクライアントを使用すると、ユーザーではなくアプリケーションがアクセスできるリソースを制御できます。
本記事では以下の内容について説明します:
- IAMクライアントの仕組みとクライアントタイプ
- AGS管理ポータルでのIAMクライアントと権限の作成・設定方法
- AGS SDKを使用したアプリケーションアクセストークンの取得方法
前提条件
-
AGS管理ポータルへのアクセス権とIAMクライアント管理の権限が必要です。
- AGS Shared Cloud
- AGS Private Cloud
AGS Shared CloudAGSアカウントでStudio AdminまたはGame Adminロールを持っていれば、管理ポータルでIAMクライアントを直接管理できます。
使用方法 リソース アクション クライアントを作成 ADMIN:NAMESPACE:{namespace}:CLIENTCreate クライアントを取得 ADMIN:NAMESPACE:{namespace}:CLIENTRead クライアントを更新 ADMIN:NAMESPACE:{namespace}:CLIENTUpdate クライアントを削除 ADMIN:NAMESPACE:{namespace}:CLIENTDelete クライアント権限を追加 ADMIN:NAMESPACE:{namespace}:CLIENTUpdate クライアント権限を更新 ADMIN:NAMESPACE:{namespace}:CLIENTUpdate クライアント権限を削除 ADMIN:NAMESPACE:{namespace}:CLIENTUpdate
IAMクライアントの仕組み
AGS IAMクライアントはOAuth 2.0フレームワークを実装しています。 対象のアプリケーションがパブリッシャープラットフォーム用か、特定のゲーム用かに応じて、パブリッシャーネームスペースまたはゲームネームスペースで定義できます。
IAMクライアントタイプ
OAuth 2.0クライアントタイプフレームワークに基づく2種類のクライアントタイプがあります:
- コンフィデンシャルクライアント:バックエンドでの認証にクライアントIDとクライアントシークレットの組み合わせが必要です。AGSの管理エンドポイントへのサーバー間(S2S)呼び出しが必要な場合は、コンフィデンシャルクライアントを使用します。通常、クライアントに特定のアクセス権限を定義します。クライアントのIDとシークレットへのアクセスを制御できる場合にのみコンフィデンシャルクライアントを使用し、不正なユーザーによるサービスへのアクセスを防止してください。
- パブリッククライアント:クライアントシークレットを必要とせず、クライアントIDのみで認証します。ユーザーがユーザーアカウントでログインし、AGSのパブリックエンドポイントへのクライアント・サーバー間呼び出しのみが必要なアプリケーションに最適です。この場合、アクセス権限はロール経由でユーザーアカウントから取得されます。
主なIAMクライアントの用途
最もよく使用されるIAMクライアントのパターンは以下のとおりです:
- ゲームクライアント:ほとんどの場合、ゲームクライアント用のIAMクライアントはパブリックとして設定します。
- 専用ゲームサーバー:専用サーバー用のIAMクライアントはパブリックまたはコンフィデンシャルとして設定できます。ただし、専用サーバーがユーザーとしてログインしない場合(最も一般的なケース)は、クライアントに権限を割り当てる必要があります。
- 専用サーバーアップローダー:専用サーバービルドをアップロードするためのIAMクライアントです。アップローダーへのアクセスは通常厳密に制御されるため、コンフィデンシャルとして設定することを推奨します。
IAMクライアントの管理
このセクションでは、IAMクライアントの作成方法とクライアントへの権限の追加方法について説明します。
IAMクライアントの作成
ご利用のAGS階層に応じた手順に従ってください。
- AGS Shared Cloud
- AGS Private Cloud
-
AGS管理ポータルで、ネームスペースに移動します。
-
サイドバーで、Game Setup > Games and Apps > IAM Clientsを選択します。
-
IAM Clientsページで、+ Create IAM Clientsボタンをクリックします。Create IAM Clientフォームが表示されます。

-
General Preferencesセクションで作成オプションを選択し、必要な情報を入力します:
- テンプレートから作成
- カスタムIAMクライアントを作成
IAMクライアントを作成するためにテンプレートを使用する場合は、このオプションを選択します。
-
Select Templateドロップダウンから、使用するテンプレートを選択します:
- Game Client:ゲームクライアントがAccelByteへのログインを行うために使用します。ログイン成功後、AccelByteプラットフォーム内の各種パブリック機能へのアクセスを許可するユーザートークンを提供します。Game Clientテンプレートでは、「Platform」フィールドの入力も必要です。
- Dedicated Server:サーバーまたは専用サーバー(DS)がAccelByteの管理機能にアクセスするためのクライアントトークンを取得するために使用します。
- Dedicated Server Tools:専用サーバー(DS)イメージをAccelByte Multiplayer Services(AMS)サーバーにアップロードし、AMSツールの操作を行うために使用します。
- Custom Backend Tooling:独自開発のカスタムバックエンドに使用します。AGSで利用可能な機能に応じて、必要な権限を追加する必要があります。
テンプレートを選択すると、Client ConfigurationセクションのClient Name、Client Type、Redirect URI、およびDescriptionフィールドがテンプレートによって自動入力されます。
注記テンプレートを選択した後に表示され、事前入力されるセクションとフィールドは、テンプレートによって異なる場合があります。
-
必要な情報を入力します:
-
Client Configuration
-
Client Name:クライアントの名前を入力します。AGSシステムはこの名前を使用して、ユーザー向けのフォームやドキュメントでIAMクライアントを識別します。
-
Client Type:クライアントがAGSとどのように連携するかを定義します。PublicまたはConfidentialから選択します。詳細はIAMクライアントタイプを参照してください。
-
Secret:コンフィデンシャルクライアントのパスワードとして機能します。推奨形式に従って手動で入力するか、GenerateをクリックしてAGSシステムに生成させることができます。
警告クライアントシークレットは安全な場所に保管してください。クライアント作成後は表示・アクセスできなくなります。
-
Redirect URI
- Webベースのクライアント(ウェブサイトやランチャーなど)の場合、ログイン成功時にシステムがユーザーをリダイレクトするURLに値を設定します。
- 非Webベースのクライアント(ゲームサーバー、ゲームクライアント、またはサーバーアップローダーなど)の場合、値を
http://127.0.0.1に設定します。
ヒント+ Add moreボタンをクリックして、複数のURIを追加できます。
-
Platform(Game Clientテンプレートにのみ適用):ドロップダウンから、SDKクライアントが実行されるサードパーティプラットフォームを選択します。クライアントをサードパーティプラットフォームにバインドしない場合は、空白のままにします。
注記システムは、クロスプラットフォーム機能のためにこのプラットフォーム情報を必要とします。たとえば、クロスプラットフォーム仮想通貨とウォレット。
-
Description(オプション):IAMクライアントの機能を説明します。
-
-
-
Advanced Configuration:このセクションでは、特定のIAMクライアントの動作を上書きできます。Show Advanced Configurationをクリックしてセクションを表示します。
-
Scopes:これはOAuth 2.0のメカニズムで、IAMクライアントがアクセスできるリソースを制限します。ドロップダウンから、IAMクライアントにアクセス可能にするサービスを選択します。スコープの詳細については、OAuth 2.0ドキュメントを参照してください。
スコープ サービス commerce Platform
Season Passaccount Basic
GDPR
IAM
Legalsocial Achievement
Chat
Cloudsave
Group
Leaderboard
Lobby
Matchmaking
Session
Session Browser
Statisticsanalytics Telemetry -
Target Audience(オプション):これは、このクライアントの目的に基づいて、ユーザーまたはアプリケーショントークンがアクセスできるサービスを制御します。ターゲットオーディエンスドロップダウンに含まれるクライアントのBase URIは、ターゲットサービスを表します。
注記これは、クライアントまたはユーザーの権限をチェックする前に、バックエンドサービスが接続試行を迅速に拒否できるようにするホワイトリストとして機能します。IAMクライアントがサービスエンドポイントにアクセスしようとすると、サービスは最初にクライアントのTarget Audienceリストをチェックします。サービスのURIがTarget AudienceフィールドのクライアントのいずれかのBase URIと一致しない場合、システムは接続試行を拒否します。クライアントがTarget Audienceチェックに合格した場合、またはクライアントのTarget Audienceフィールドが空の場合、サービスは権限やスコープのチェックなど、クライアントのリクエストの次の認証ステップに進みます。
-
Base URI(オプション;Target Audienceと連携):これは、オーディエンス実装におけるサービスのIDです。
-
Override Expiration Time:このトグルをオンにして、デフォルトのAccess Token Expiration TimeとRefresh Token Expiration Timeを上書きし、それらの値を手動で設定します。これにより、プレイヤーがIAMクライアントに関連付けられたサードパーティアプリを使用してプレイヤーポータルにログインしたときに、どのくらいの期間ログイン状態を維持できるかを設定できます。
-
-
Permissionsセクションで、IAMクライアントに権限を追加し始めます。クライアントに追加する権限を見つけます。次に、各権限について、持たせたいアクション(Read、Create、Update、および/またはDelete)のボックスにチェックを入れます。ナビゲーションを簡単にするには、Hide/Show unselected permissionsをクリックします。このステップをスキップして、ステップ5に進んでIAMクライアントを作成できます。IAMクライアントの権限は後で追加および編集できます。IAMクライアント権限を追加および編集するを参照してください。
注記パブリックIAMクライアントを作成している場合、このセクションはフォームに表示されません。コンフィデンシャルIAMクライアントにのみ権限を追加できます。
作成するIAMクライアントと追加する必要がある権限がわかっている場合は、このオプションを選択します。このオプションを選択すると、システムはClient ConfigurationとAdvanced Configurationセクションを表示します。
必要な情報を入力します:
-
Client configuration
-
Client ID:IAMクライアントのシステム生成された一意のID。これは編集できません。
-
Client Name:クライアントの名前を入力します。AGSシステムは、この名前を使用して、ユーザー向けのフォームやドキュメントでIAMクライアントを識別します。
-
Client Type:クライアントがAGSとどのように対話するかを定義します。PublicとConfidentialから選択します。詳細については、IAMクライアントタイプを参照してください。
-
Secret:これはコンフィデンシャルクライアントのパスワードとして機能します。推奨される形式に従って手動でフィールドに入力するか、GenerateをクリックしてAGSシステムに作成させることができます。
警告クライアントシークレットの安全なコピーを保管してください。クライアントを作成した後、これは表示またはアクセスできなくなります。
-
Redirect URI
- Webベースのクライアント(ウェブサイトやランチャーなど)の場合、ログイン成功時にシステムがユーザーをリダイレクトするURLに値を設定します。
- 非Webベースのクライアント(ゲームサーバー、ゲームクライアント、またはサーバーアップローダーなど)の場合、値を
http://127.0.0.1に設定します。
ヒント+ Add moreボタンをクリックして、複数のURIを追加できます。
-
Platform:ドロップダウンから、SDKクライアントが実行されるサードパーティプラットフォームを選択します。クライアントをサードパーティプラットフォームにバインドしない場合は、空白のままにします。
注記システムは、クロスプラットフォーム機能のためにこのプラットフォーム情報を必要とします。たとえば、クロスプラットフォーム仮想通貨とウォレット。
-
Description(オプション):IAMクライアントの機能を説明します。
-
-
Advanced Configuration:このセクションでは、特定のIAMクライアントの動作を上書きできます。Show Advanced Configurationをクリックしてセクションを表示します。
-
Scopes:これはOAuth 2.0のメカニズムで、IAMクライアントがアクセスできるリソースを制限します。ドロップダウンから、IAMクライアントにアクセス可能にするサービスを選択します。スコープの詳細については、OAuth 2.0ドキュメントを参照してください。
スコープ サービス commerce Platform
Season Passaccount Basic
GDPR
IAM
Legalsocial Achievement
Chat
Cloudsave
Group
Leaderboard
Lobby
Matchmaking
Session
Session Browser
Statisticsanalytics Telemetry -
Target Audience(オプション):これは、このクライアントの目的に基づいて、ユーザーまたはアプリケーショントークンがアクセスできるサービスを制御します。ターゲットオーディエンスドロップダウンに含まれるクライアントのBase URIは、ターゲットサービスを表します。
注記これは、クライアントまたはユーザーの権限をチェックする前に、バックエンドサービスが接続試行を迅速に拒否できるようにするホワイトリストとして機能します。IAMクライアントがサービスエンドポイントにアクセスしようとすると、サービスは最初にクライアントのTarget Audienceリストをチェックします。サービスのURIがTarget AudienceフィールドのクライアントのいずれかのBase URIと一致しない場合、システムは接続試行を拒否します。クライアントがTarget Audienceチェックに合格した場合、またはクライアントのTarget Audienceフィールドが空の場合、サービスは権限やスコープのチェックなど、クライアントのリクエストの次の認証ステップに進みます。
-
Base URI(オプション;Target Audienceと連携):これは、オーディエンス実装におけるサービスのIDです。
-
Override Expiration Time:このトグルをオンにして、デフォルトのAccess Token Expiration TimeとRefresh Token Expiration Timeを上書きし、それらの値を手動で設定します。これにより、プレイヤーがIAMクライアントに関連付けられたサードパーティアプリを使用してプレイヤーポータルにログインしたときに、どのくらいの期間ログイン状態を維持できるかを設定できます。
-
-
Createをクリックします。新しいIAMクライアントが作成され、編集できないシステム生成されたクライアントIDとともにIAMクライアントリストに追加されます。IAMクライアントへの権限の追加に進みます。
-
AGS管理ポータルで、ネームスペースに移動します。
-
サイドバーで、Game Setup > Games and Apps > IAM Clientsを選択します。
-
IAM Clientsページで、+ Create IAM Clientsボタンをクリックします。Create IAM Clientフォームが表示されます。

-
必要な情報を入力します:
-
Basic Information
-
Client ID:IAMクライアントのシステム生成された一意のID。これは編集できません。
-
Client Type:クライアントがAGSとどのように対話するかを定義します。PublicとConfidentialから選択します。詳細については、IAMクライアントタイプを参照してください。
-
Secret(コンフィデンシャルタイプにのみ適用):これはコンフィデンシャルクライアントのパスワードとして機能します。推奨される形式に従って手動でフィールドに入力するか、GenerateをクリックしてAGSシステムに作成させることができます。
警告クライアントシークレットの安全なコピーを保管してください。クライアントを作成した後、これは表示またはアクセスできなくなります。
-
Client Name:クライアントの名前を入力します。AGSシステムは、この名前を使用して、ユーザー向けのフォームやドキュメントでIAMクライアントを識別します。
-
Scopes:これはOAuth 2.0のメカニズムで、IAMクライアントがアクセスできるリソースを制限します。ドロップダウンから、IAMクライアントにアクセス可能にするサービスを選択します。スコープの詳細については、OAuth 2.0ドキュメントを参照してください。
スコープ サービス commerce Platform
Season Passaccount Basic
GDPR
IAM
Legalsocial Achievement
Chat
Cloudsave
Group
Leaderboard
Lobby
Matchmaking
Session
Session Browser
Statisticsanalytics Telemetry -
Redirect URI
- Webベースのクライアント(ウェブサイトやランチャーなど)の場合、ログイン成功時にシステムがユーザーをリダイレクトするURLに値を設定します。
- 非Webベースのクライアント(ゲームサーバー、ゲームクライアント、またはサーバーアップローダーなど)の場合、値を
http://127.0.0.1に設定します。
ヒント+ Add moreボタンをクリックして、複数のURIを追加できます。
-
Target Audience(オプション):これは、IAMクライアントがアクセスできるサービスエンドポイントを制御します。Target Audienceドロップダウンには、IAMクライアントが存在するネームスペースからのクライアントのリストと、クライアントが指定するBase URI値が含まれています。
注記これは、クライアントまたはユーザーの権限をチェックする前に、バックエンドサービスが接続試行を迅速に拒否できるようにするホワイトリストとして機能します。IAMクライアントがサービスエンドポイントにアクセスしようとすると、サービスは最初にクライアントのTarget Audienceリストをチェックします。サービスのURIがTarget AudienceフィールドのクライアントのいずれかのBase URIと一致しない場合、システムは接続試行を拒否します。クライアントがTarget Audienceチェックに合格した場合、またはクライアントのTarget Audienceフィールドが空の場合、サービスは権限やスコープのチェックなど、クライアントのリクエストの次の認証ステップに進みます。
-
Base URI(オプション;Target Audienceと連携):別のクライアント(クライアントB)がこのクライアント(クライアントA)をターゲットオーディエンスとして使用する場合は、クライアントBのURLを使用します。そうでない場合は、空白のままにします。
-
Description(オプション):IAMクライアントの機能を説明します。
-
-
Client SDK Configuration
-
Platform(オプション):ドロップダウンから、SDKクライアントが実行されるサードパーティプラットフォームを選択します。クライアントをサードパーティプラットフォームにバインドしない場合は、空白のままにします。
注記システムは、クロスプラットフォーム機能のためにこのプラットフォーム情報を必要とします。たとえば、クロスプラットフォーム仮想通貨とウォレット。
-
-
Advanced Configurations:このセクションでは、特定のIAMクライアントの動作を上書きできます。
- Two-Factor Authentication:このトグルをオンにして、IAMクライアントの二要素認証(2FA)を有効にします。
- Override Expiration Time:このトグルをオンにして、デフォルトのAccess Token Expiration TimeとRefresh Token Expiration Timeを上書きし、それらの値を手動で設定します。これにより、プレイヤーがIAMクライアントに関連付けられたサードパーティアプリを使用してプレイヤーポータルにログインしたときに、どのくらいの期間ログイン状態を維持できるかを設定できます。
-
-
CreateをクリックしてIAMクライアントを作成します。IAMクライアントの詳細ページが表示されます。コンフィデンシャルIAMクライアントを作成した場合は、権限を追加することができます。IAMクライアント権限を追加および編集するを参照してください。
IAMクライアントを編集する
- 管理ポータルのサイドバーで、Game Setup > Games and Apps > IAM Clientsに移動します。IAM Clientsページが表示されます。
- IAMクライアントリストから、編集するIAMクライアントを見つけて、そのIDをクリックして詳細を表示します。
- IAMクライアントのDetailsタブで、編集するフィールドの横にある編集アイコンをクリックします。
- 必要に応じて情報を編集し、チェックマークをクリックして変更を保存します。
IAMクライアント権限を追加および編集する
AGS管理ポータルで、既存のコンフィデンシャルIAMクライアントの権限を追加および編集できます。
IAMクライアントの権限を追加および編集するには、次の手順に従います:
- AGS Shared Cloud
- AGS Private Cloud
-
AGS管理ポータルで、ネームスペースに移動します。
-
サイドバーで、Game Setup > Games and Apps > IAM Clientsを選択します。IAM Clientsページが表示されます。
-
IAMクライアントのリストから、更新する権限を持つクライアントを見つけます。対応するViewボタンをクリックします。IAMクライアントの詳細ページが表示されます。
-
IAMクライアントの右上にあるEditをクリックします。Edit IAM Clientフォームが表示されます。
-
フォームで、Permissionsセクションまでスクロールダウンします。
-
追加または編集する権限を見つけます。追加または削除するアクション(Read、Create、Update、および/またはDelete)のボックスにチェックを入れます。ナビゲーションを簡単にするには、Hide/Show unselected permissionsをクリックします。
-
Saveをクリックして変更を保存します。
-
AGS管理ポータルで、ネームスペースに移動します。
-
サイドバーで、Game Setup > Games and Apps > IAM Clientsを選択します。IAM Clientsページが表示されます。
-
IAMクライアントのリストから、更新する権限を持つIAMクライアントをクリックします。IAMクライアントの詳細ページが表示されます。
-
詳細ページで、Permissionsタブに移動します。クライアントが現在持っている権限のリストが表示されます。
-
権限を更新するには、次のいずれかを実行します:
- + Addをクリックして、クライアントに新しい権限を追加します。Resourceフィールドに権限タグを入力します。権限リソースは、システムが特定のリソースへのアクセスを許可するために使用する複数のトークンを含む文字列です。権限に対して有効にするアクションを選択し、Confirmをクリックして権限を作成し、IAMクライアントの権限リストに追加します。
- クライアントの既存の権限を編集します。リストから、権限のEditオプションをクリックします。必要に応じて権限の名前を変更し、アクションを選択または選択解除できます。次に、Editをクリックして変更を保存します。
- Deleteをクリックし、確認メッセージで再度クリックして権限を削除します。
AGS SDKを使用してアプリケーションアクセストークンを取得する
Credentialクライアントは、AGSへのサービス間(S2S)呼び出しに有効なアクセストークンを必要とします。
以下のコードは、AGS SDKを使用してCredentialクライアントの有効なアクセストークンを生成します。
- Unreal
- Unity
- C# Extend SDK
- Go Extend SDK
- Java Extend SDK
- Python Extend SDK
bool bServerLoggedIn = false;
bool bServerLoginComplete = false;
auto ServerApiClient = AccelByteOnlineSubsystemPtr->GetServerApiClient();
ServerApiClient->ServerOauth2.LoginWithClientCredentials(FVoidHandler::CreateLambda([&bServerLoggedIn, &bServerLoginComplete]()
{
UE_LOG(LogAccelByteEcommerceTest, Log, TEXT("Server Login Success"));
bServerLoginComplete = bServerLoggedIn = true;
}), FErrorHandler::CreateLambda([&bServerLoggedIn, &bServerLoginComplete](int32 ErrCode, FString const& ErrMsg)
{
UE_LOG(LogAccelByteEcommerceTest, Error, TEXT("Server Login Success"));
bServerLoginComplete = true;
}));
WaitUntil(bServerLoginComplete, "Waiting for server logged in...");
DedicatedServer server = AccelByteSDK.GetServerRegistry().GetApi().GetDedicatedServer();
Result loginServerResult = null;
server.LoginWithClientCredentials(result => loginServerResult = result);
yield return TestHelper.WaitForValue(() => loginServerResult);
string accessToken = String.Empty;
bool isSuccess = sdk.LoginClient((tokenResp) =>
{
accessToken = tokenResp.AccessToken!;
});
if (isSuccess)
{
//do something with `accessToken`.
}
err := oauth.LoginClient(&clientId, &clientSecret)
DefaultConfigRepository configRepo = new DefaultConfigRepository();
final AccelByteSDK sdk1 =
new AccelByteSDK(
new AccelByteConfig(new OkhttpClient(), new DefaultTokenRepository(), configRepo));
boolean loggedIn = sdk1.loginClient();
assertTrue(loggedIn);
final String token = sdk1.getSdkConfiguration().getTokenRepository().getToken();
final AccessTokenPayload payload = sdk1.parseAccessToken(token, false);
assertNotNull(payload);
import accelbyte_py_sdk.services.auth as auth_service
from accelbyte_py_sdk.core import AccelByteSDK
from accelbyte_py_sdk.core import MyConfigRepository
sdk = AccelByteSDK()
sdk.initialize(
options={
"config": MyConfigRepository(
base_url="https://****.accelbyte.io",
client_id="********************************",
client_secret="********************************",
namespace="********",
)
}
)
result, error = auth_service.login_client(sdk=sdk)
if error:
exit(error)