Amazon Cognito 認証情報プロバイダー - AWS SDK for .NET

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Cognito 認証情報プロバイダー

注記

このトピックの情報は、.NET Framework と AWS SDK for .NET バージョン 3.3 以前に基づくプロジェクトに固有のものです。

Amazon.CognitoIdentity.CognitoAWSCredentialsパッケージにある AWSSDKCognitoIdentity NuGetは、Amazon Cognito と AWS Security Token Service (AWS STS) を使用して AWS 呼び出しを行う認証情報を取得する認証情報オブジェクトです。

CognitoAWSCredentials の設定での最初のステップは「ID プール」を作成することです。(アイデンティティプールとは、お客様のアカウントに固有のユーザー ID 情報のストアです。) 情報はクライアントプラットフォーム、デバイス、およびオペレーティングシステム間で取得可能です。これにより、ユーザーが電話でアプリの使用を開始して、後でタブレットに切り替えた場合でも、保持されたアプリ情報はそのユーザーに対して引き続き利用可能になります。Amazon Cognito コンソールから新しい ID プールを作成できます。コンソールを使用している場合は、必要なその他の情報も提供します。

  • アカウント番号 - 123456789012 などの、アカウントに一意な 12 桁の数字。

  • 認証されていないロール ARN - 認証されていないユーザーが引き受けるロール。たとえば、このロールは、データへの読み取り専用アクセス許可を提供できます。

  • 認証されたロール ARN - 認証されたユーザーが引き受けるロール。このロールは、データへのより広範なアクセス許可を提供できます。

Cognito をセットアップするAWSCredentials

次のコード例では、認証されていないユーザーとして Amazon S3 を呼び出すことを可能にする CognitoAWSCredentials のセットアップ方法を示しています。これにより、ユーザーを認証するのに必要な最小量のデータだけで呼び出すことができます。ユーザーアクセス許可はロールによって制御されるため、必要に応じてアクセスを設定することもできます。

CognitoAWSCredentials credentials = new CognitoAWSCredentials( accountId, // Account number identityPoolId, // Identity pool ID unAuthRoleArn, // Role for unauthenticated users null, // Role for authenticated users, not set region); using (var s3Client = new AmazonS3Client(credentials)) { s3Client.ListBuckets(); }

認証されていないユーザー AWS として を使用する

次のコード例は、認証されていないユーザー AWS として の使用を開始し、Facebook 経由で認証し、Facebook 認証情報を使用するように認証情報を更新する方法を示しています。この方法を使用すると、認証されたロールを通じて、認証されたユーザーにさまざまな機能を付与できるようになります。たとえば、ユーザーが匿名でコンテンツを表示することを許可するものの、1 つ以上の設定済みプロバイダーでログオンしている場合に投稿を許可する電話アプリケーションがあります。

CognitoAWSCredentials credentials = new CognitoAWSCredentials( accountId, identityPoolId, unAuthRoleArn, // Role for unauthenticated users authRoleArn, // Role for authenticated users region); using (var s3Client = new AmazonS3Client(credentials)) { // Initial use will be unauthenticated s3Client.ListBuckets(); // Authenticate user through Facebook string facebookToken = GetFacebookAuthToken(); // Add Facebook login to credentials. This clears the current AWS credentials // and retrieves new AWS credentials using the authenticated role. credentials.AddLogin("graph.facebook.com", facebookAccessToken); // This call is performed with the authenticated role and credentials s3Client.ListBuckets(); }

CognitoAWSCredentials オブジェクトは、 AWS SDK for .NETの一部である AmazonCognitoSyncClient で使用した場合、さらに多くの機能を提供します。AmazonCognitoSyncClientCognitoAWSCredentials の両方を使用している場合は、AmazonCognitoSyncClient を使用して呼び出しを行うときに IdentityPoolIdIdentityId のプロパティを指定する必要はありません。これらのプロパティは CognitoAWSCredentials から自動的に入力されます。次のコード例では、これとともに、IdentityIdCognitoAWSCredentials が変更されるたびに通知するイベントを示します。IdentityId は、たとえば、認証されていないユーザーから認証されたユーザーに変更する際など、場合によって変更されます。

CognitoAWSCredentials credentials = GetCognitoAWSCredentials(); // Log identity changes credentials.IdentityChangedEvent += (sender, args) => { Console.WriteLine("Identity changed: [{0}] => [{1}]", args.OldIdentityId, args.NewIdentityId); }; using (var syncClient = new AmazonCognitoSyncClient(credentials)) { var result = syncClient.ListRecords(new ListRecordsRequest { DatasetName = datasetName // No need to specify these properties //IdentityId = "...", //IdentityPoolId = "..." }); }