メインコンテンツまでスキップ

AWS Cognito をアイデンティティプロバイダーとして設定する

Last updated on August 5, 2026

注釈:本資料はAI技術を用いて翻訳されています。

概要

このガイドは、Amazon Web Services (AWS) の登録済み開発者が Amazon Cognito のユーザーを AccelByte Gaming Services (AGS) に接続するための手引きです。ここに記載されていない AWS サービスの追加機能の設定が必要になる場合があります。AWS サービスの設定について詳しくは、AWS の担当者に直接お問い合わせいただくか、AWS の公式ドキュメントを参照することをお勧めします。

目標

AccelByte Game SDK を使用して、ゲームで Amazon Cognito 認証方式を有効にします。

前提条件

  • AWS アカウント。
  • 最新バージョンの AccelByte Game SDK をインポートした Unity または Unreal のゲームプロジェクト。
  • 認証の設定と権限管理を行うための AGS Admin Portal アカウント。
  • ゲームネームスペース。
  • AGS Identity and Access Management (IAM) クライアントに関する知識。

Amazon Cognito の設定

Amazon Cognito ユーザープールの作成

ユーザープールは、Amazon Cognito のユーザーディレクトリです。ユーザープールを使用すると、ユーザーは Amazon Cognito を通じてゲームにサインインできます。ユーザープールの作成ガイドに従って、新しいユーザープールを作成してください。

Integrate your app セクションでは、次の設定を行う必要があります。

  • 初期アプリクライアントタイプを public に設定します。
  • 許可されたコールバック URL として http://127.0.0.1 を追加します。
  • 認証フローに ALLOW_USER_PASSWORD_AUTH を設定します。

Amazon Cognito ユーザーの設定

ユーザープールを作成したら、ユーザープール内のユーザーを管理する必要があります。詳細については、ユーザープール内のユーザーの管理ガイドを参照してください。

AGS で AWS Cognito ログインプロバイダーを設定する

以下の手順に従ってゲーム用の Amazon Cognito ログインを設定し、プレイヤーが自分の Amazon Cognito アカウントでゲームにサインインできるようにします。

  1. AGS Admin Portal で、ゲームネームスペースに移動します。

  2. サイドバーメニューで、Foundations > 3rd Party Integrations > Auth & Account Linking に移動します。

  3. Auth & Account Linking ページで、+ Add New をクリックします。

    Auth & Account Linking のプロバイダー一覧

  4. ログインプロバイダーの選択肢の中から AWS Cognito を探してクリックします。

    AWS Cognito を選択したログインプロバイダーギャラリー

  5. Set up AWS Cognito login provider フォームが表示されます。以下のフィールドを入力し、Add & Activate をクリックすると、プロバイダーの作成と有効化を一度に実行できます。有効化せずに作成する場合は、代わりに Add をクリックします。

    Set up AWS Cognito login provider フォーム

    • Platform ID: awscognito です。自動的に設定されるため、変更できません。
    • AWS Cognito User Pool: Amazon Cognito のユーザープール ID です。
    • AWS Cognito Region: ユーザープールがホストされている AWS リージョン(例: us-west-2)です。

ログインプロバイダーを編集する

  1. Auth & Account Linking ページで、AWS Cognito の項目をクリックします。

  2. プロバイダーの設定内容を示すダイアログが表示されます。必要に応じて各フィールドを更新します。

  3. 画面上部の Status トグルで、プロバイダーを有効化または無効化します。

    Status トグルが表示された AWS Cognito ログインプロバイダーダイアログ

  4. Save をクリックします。

IAM クライアントを作成する

IAM クライアントは、ターゲットプラットフォームでリリースするゲームクライアントを表すものです。

特定の SDK プラットフォーム(Xbox、Steam、PlayStation など)向けの IAM クライアントをゲーム用にすでに作成している場合は、新しく IAM クライアントを作成する必要はありません。AWS Cognito はゲームを構築するためのプラットフォームではないため、既存の IAM クライアントを使用できます。IAM クライアントの詳細については、Manage access control for applicationsを参照してください。

ゲーム内ログイン手順

各ゲームエンジンの設定は異なります。利用可能なタブからゲームエンジンを選択してください。

ゲーム内ログインの統合 (Unreal)

ゲームを AccelByte SDK のサインイン機能と統合すると、プレイヤーは Amazon Cognito の認証情報を使用してゲームにログインできるようになります。実装には AWS SDK を使用します。

準備と設定 (Unreal)

依存関係の追加 (Unreal)

まず、AccelByteUe4Sdk という公開依存関係モジュールを追加します。この依存関係は、Unreal Engine 内で AccelByte SDK プラグインを使用できるようにプロジェクトを構成するために必要です。

public ABThirdPartyLogin(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" , "AccelByteUe4Sdk", "Slate", "SlateCore" , "AWSCore"});

PrivateDependencyModuleNames.AddRange(new string[] { "Json", "HTTP" });

}

<YourProject>.Target.cs<YourProjectEditor>.Target.csAccelByteUe4Sdk を追加します。

public ABThirdPartyLoginTarget( TargetInfo Target) : base(Target)
{
Type = TargetType.Game;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "ABThirdPartyLogin", "AccelByteUe4Sdk" } );
}
public ABThirdPartyLoginEditorTarget( TargetInfo Target) : base(Target)
{
Type = TargetType.Editor;
DefaultBuildSettings = BuildSettingsVersion.V2;
ExtraModuleNames.AddRange( new string[] { "ABThirdPartyLogin", "AccelByteUe4Sdk" } );
}

Amazon Cognito ログイン用のプロジェクト設定 (Unreal)

DefaultEngine.ini ファイルに AccelByte の認証情報を追加します。

[/Script/AccelByteUe4Sdk.AccelByteSettings]
ClientId=<Your Client_Id>
ClientSecret=<Your Client_Secret>
Namespace=<Your Namespace>
PublisherNamespace=<Your Publisher Namespace>
RedirectURI="http://127.0.0.1"
BaseUrl="https://prod.gamingservices.accelbyte.io"
IamServerUrl="https://prod.gamingservices.accelbyte.io/iam"
PlatformServerUrl="https://prod.gamingservices.accelbyte.io/platform"

サンプルコードの実装 (Unreal)

AWS SDK for C++ を Unreal Engine プロジェクトに組み込む手順は次のとおりです。

  1. Unreal Engine プロジェクトを開きます。
  2. プロジェクトの Source ディレクトリに新しいフォルダを作成します。フォルダ名は AWS などとしてください。
  3. 展開した AWS SDK のソースコードから aws-cpp-sdk-core フォルダを、Unreal Engine プロジェクトに新しく作成した AWS フォルダにコピーします。
  4. Unreal Engine プロジェクトのソースコードから <YourProjectName>.Build.cs ファイルを探します。通常は Source ディレクトリにあり、プロジェクトと同じ名前が付いています。
  5. <YourProjectName>.Build.cs ファイルをテキストエディタで開きます。
  6. <YourProjectName>.Build.cs ファイル内の PublicDependencyModuleNames セクションに AWSCore を追加します。
  7. 変更を保存してファイルを閉じます。
  8. Unreal Engine プロジェクトをビルドします。AWS SDK for C++ のコードがプロジェクトとあわせてコンパイルされます。

以上の手順が完了すると、必要な AWS SDK のヘッダーをインクルードして、Unreal Engine プロジェクトで AWS SDK のクラスと関数を使用できるようになり、AccelByte にログインするためのアクセストークンを取得できます。以下は、実際のコードに実装できるサンプルです。

注記

スニペットで使用している AccelByteOnlineSubsystemPtr を取得する方法については、こちらのガイドを参照してください。

// Set up AWS credentials
Aws::Auth::AWSCredentials credentials("YOUR_ACCESS_KEY_ID", "YOUR_SECRET_ACCESS_KEY");

// Create an Amazon Cognito Identity Provider client object
Aws::CognitoIdentityProvider::CognitoIdentityProviderClient cognitoClient(credentials);

// Construct the authentication request
Aws::CognitoIdentityProvider::Model::InitiateAuthRequest initiateAuthRequest;
initiateAuthRequest.SetAuthFlow(Aws::CognitoIdentityProvider::Model::AuthFlowType::USER_PASSWORD_AUTH);
initiateAuthRequest.SetClientId("YOUR_USER_POOL_CLIENT_ID");
initiateAuthRequest.SetAuthParameters({
{"USERNAME", "YOUR_USERNAME"},
{"PASSWORD", "YOUR_PASSWORD"}
});

// Send the authentication request to Amazon Cognito
auto initiateAuthOutcome = cognitoClient.InitiateAuth(initiateAuthRequest);

if (initiateAuthOutcome.IsSuccess())
{
// Retrieve the access token from the authentication response
const auto& challengeResponse = initiateAuthOutcome.GetResult().GetChallengeParameters();
const auto& accessToken = challengeResponse["ACCESS_TOKEN"];

// Use the access token for AWS SDK calls
// Create an S3 client object
Aws::S3::S3Client s3Client(credentials);

// Example API call: List S3 buckets
Aws::S3::Model::ListBucketsRequest listBucketsRequest;
auto listBucketsOutcome = s3Client.ListBuckets(listBucketsRequest);

if (listBucketsOutcome.IsSuccess())
{
// Handle successful response
FString Message = TEXT("Successfully listed S3 buckets!");
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
OnActionInfoUpdated.Broadcast(Message);
const FString PlatformToken = accessToken;
UE_LOG(LogTemp, Warning, TEXT("PlatformToken : %s"), *PlatformToken);
OnActionInfoUpdated.Broadcast(FString::Printf(TEXT("PlatformToken : %s"), *PlatformToken));

auto ApiClient = AccelByteOnlineSubsystemPtr->GetApiClient(TEXT("YOUR_KEY"));
auto UserApi = ApiClient->GetUserApi().Pin();

UserApi->LoginWithOtherPlatform(EAccelBytePlatformType::AWSCognito, PlatformToken, OnLoginSuccessDelegate, OnLoginErrorDelegate);
UE_LOG(LogTemp, Warning, TEXT("Request LoginWithOtherPlatform"));
OnActionInfoUpdated.Broadcast(TEXT("Request LoginWithOtherPlatform"));
}
else
{
// Handle error
FString Message = FString::Printf(TEXT("Error listing S3 buckets: %s"), *listBucketsOutcome.GetError().GetMessage().c_str());
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
OnActionInfoUpdated.Broadcast(Message);
}
}
else
{
// Handle authentication error
FString Message = FString::Printf(TEXT("Authentication error: %s"), *initiateAuthOutcome.GetError().GetMessage().c_str());
UE_LOG(LogTemp, Warning, TEXT("%s"), *Message);
OnActionInfoUpdated.Broadcast(Message);
}
注記

Amazon Cognito 認証における platform_token は、アクセストークンを指します。

このサンプルコードをプロジェクトに追加したら、プロジェクトをコンパイルし、ビルドして実行します。設定は以上です。

サンプルコードのテスト (Unreal)

以下のスクリーンショットは、コードが正しく動作し、サンプルコードを使用して Amazon Cognito でログインできることを示しています。 Unreal でサンプルコードのテストに成功した画面