メニュー
Amazon Cognito
開発者ガイド (Version 最終更新日: 2016 年 7 月 28 日)

認証情報の取得

このセクションでは、認証情報を取得する方法と、Amazon Cognito ID を取得する方法について説明します。

Android

Amazon Cognito を使用して、権限が制限されている一時的な認証情報をアプリケーションに提供し、ユーザーが AWS リソースにアクセスするようにできます。Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。アプリに AWS 証明書を提供するには、次の手順に従います。

  1. Amazon Cognito コンソールで ID プールを作成し、初歩的なコードスニペットをコピーします。

  2. まだ行っていない場合は、AWS Mobile SDK for Android をプロジェクトに追加します。手順については、「Mobile SDK for Android のセットアップ」を参照してください。

  3. 次の import ステートメントを追加します。

    Copy
    import com.amazonaws.auth.CognitoCachingCredentialsProvider; import com.amazonaws.regions.Regions;
  4. Amazon Cognito コンソールによって生成されたコードスニペットを使用して、Amazon Cognito 認証情報プロバイダーを初期化します。IDENTITY_POOL_ID の値はアカウントに固有のものになります。

    Copy
    CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( getApplicationContext(), // Context "IDENTITY_POOL_ID", // Identity Pool ID Regions.US_EAST_1 // Region );
  5. 初期化された Amazon Cognito 認証情報プロバイダーを、使用する AWS クライアントのコンストラクタに渡します。必要なコードは、初期化するサービスによって異なります。クライアントはこのプロバイダーを使用して、AWS リソースにアクセスするための認証情報を取得します。

    注記

    2015 年 2 月以前に ID プールを作成した場合は、ロールなしでこのコンストラクタをパラメーターとして使用するには、ロールを ID プールと再度関連付ける必要があります。そのためには、Amazon Cognito コンソールを開き、ID プールを選択して、[Edit Identity Pool] を選択します。次に、認証されたロールと認証されていないロールを指定し、変更を保存します。

Amazon Cognito ID の取得

非認証ユーザーを許可している場合、すぐにエンドユーザーの固有 Amazon Cognito 識別子 (識別 ID) を取得できます。ユーザーを認証する場合、認証情報プロバイダでログイントークンを設定した後に識別 ID を取得できます。

Copy
String identityId = credentialsProvider.getIdentityId(); Log.d("LogTag", "my ID is " + identityId);

注記

アプリケーションのメインスレッドで、getIdentityId()refresh()、または getCredentials() を呼び出さないでください。Android 3.0(API レベル 11)時点では、メインアプリケーションスレッドでネットワーク I/O を実行すると、アプリで自動的にエラーが発生し、NetworkOnMainThreadException がスローされます。AsyncTask を使用して、バックグラウンドスレッドにコードを移動する必要があります。詳細については、Android のドキュメントを参照してください。getCachedIdentityId() を呼び出して ID を取得することもできますが、この操作が可能なのは、既に ID がローカルにキャッシュされている場合のみです。それ以外の場合、メソッドは null を返します。

iOS - Objective-C

Amazon Cognito を使用して、権限が制限されている一時的な認証情報をアプリケーションに提供し、ユーザーが AWS リソースにアクセスするようにできます。Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。アプリに AWS 証明書を提供するには、次の手順に従います。

  1. Amazon Cognito コンソールで ID プールを作成し、初歩的なコードスニペットをコピーします。

  2. まだ行っていない場合は、AWS Mobile SDK for iOS をプロジェクトに追加します。手順については、「Mobile SDK for iOS のセットアップ」を参照してください。

  3. ソースコードに、AWSCore ヘッダーを含めます。

    Copy
    #import <AWSCore/AWSCore.h>
  4. Amazon Cognito コンソールによって生成されたコードスニペットを使用して、Amazon Cognito 認証情報プロバイダーを初期化します。IDENTITY_POOL_ID の値はアカウントに固有のものになります。

    Copy
    AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"IDENTITY_POOL_ID"]; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider]; AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;

    注記

    2015 年 2 月以前に ID プールを作成した場合は、ロールなしでこのコンストラクタをパラメーターとして使用するには、ロールを ID プールと再度関連付ける必要があります。そのためには、Amazon Cognito コンソールを開き、ID プールを選択して、[Edit Identity Pool] を選択します。次に、認証されたロールと認証されていないロールを指定し、変更を保存します。

Amazon Cognito ID の取得

認証されたユーザーを許可する場合や、認証されたユーザーの場合は認証情報プロバイダーでログイントークンを設定した後で、エンドユーザー用の一意の Amazon Cognito ID (アイデンティティ ID) をすぐに取得できます。

Copy
// Retrieve your Amazon Cognito ID [[credentialsProvider getIdentityId] continueWithBlock:^id(AWSTask *task) { if (task.error) { NSLog(@"Error: %@", task.error); } else { // the task result will contain the identity id NSString *cognitoId = task.result; } return nil; }];

注記

getIdentityId は非同期呼び出しです。アイデンティティ ID が既にプロバイダーで設定されている場合は、credentialsProvider.identityId を呼び出して(ローカルにキャッシュされた)その ID を取得できます。ただし、プロバイダーでアイデンティティ ID が設定されていない場合、credentialsProvider.identityId を呼び出すと nil が返されます。詳細については、「Mobile SDK for iOS の API リファレンス」を参照してください。

iOS - Swift

Amazon Cognito を使用して、権限が制限されている一時的な認証情報をアプリケーションに提供し、ユーザーが AWS リソースにアクセスするようにできます。Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。アプリに AWS 証明書を提供するには、次の手順に従います。

  1. Amazon Cognito コンソールで ID プールを作成し、初歩的なコードスニペットをコピーします。

  2. まだ行っていない場合は、Mobile SDK for iOS をプロジェクトに追加します。手順については、「SDK for iOS のセットアップ」を参照してください。

  3. ソースコードに、AWSCore ヘッダーを含めます。

    Copy
    import AWSCore
  4. Amazon Cognito コンソールによって生成されたコードスニペットを使用して、Amazon Cognito 認証情報プロバイダーを初期化します。IDENTITY_POOL_ID の値はアカウントに固有のものになります。

    Copy
    let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "IDENTITY_POOL_ID") let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialsProvider) AWSServiceManager.default().defaultServiceConfiguration = configuration

    注記

    2015 年 2 月以前に ID プールを作成した場合は、ロールなしでこのコンストラクタをパラメーターとして使用するには、ロールを ID プールと再度関連付ける必要があります。そのためには、Amazon Cognito コンソールを開き、ID プールを選択して、[Edit Identity Pool] を選択します。次に、認証されたロールと認証されていないロールを指定し、変更を保存します。

Amazon Cognito ID の取得

認証されたユーザーを許可する場合や、認証されたユーザーの場合は認証情報プロバイダーでログイントークンを設定した後で、エンドユーザー用の一意の Amazon Cognito ID (アイデンティティ ID) をすぐに取得できます。

Copy
// Retrieve your Amazon Cognito ID credentialsProvider.getIdentityId().continueWith(block: { (task) -> AnyObject? in if (task.error != nil) { print("Error: " + task.error!.localizedDescription) } else { // the task result will contain the identity id let cognitoId = task.result! print("Cognito id: \(cognitoId)") } return task; })

注記

getIdentityId は非同期呼び出しです。アイデンティティ ID が既にプロバイダーで設定されている場合は、credentialsProvider.identityId を呼び出して(ローカルにキャッシュされた)その ID を取得できます。ただし、プロバイダーでアイデンティティ ID が設定されていない場合、credentialsProvider.identityId を呼び出すと nil が返されます。詳細については、「Mobile SDK for iOS の API リファレンス」を参照してください。

JavaScript

Amazon Cognito を使用して、権限が制限されている一時的な認証情報をアプリケーションに提供し、ユーザーが AWS リソースにアクセスするようにできます。Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。アプリに AWS 証明書を提供するには、次の手順に従います。

Copy
// Set the region where your identity pool exists (us-east-1, eu-west-1) AWS.config.region = 'us-east-1'; // Configure the credentials provider to use your identity pool AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', }); // Make the call to obtain credentials AWS.config.credentials.get(function(){ // Credentials will be available when this function is called. var accessKeyId = AWS.config.credentials.accessKeyId; var secretAccessKey = AWS.config.credentials.secretAccessKey; var sessionToken = AWS.config.credentials.sessionToken; });

注記

2015 年 2 月以前に ID プールを作成した場合は、ロールなしでこのコンストラクタをパラメーターとして使用するには、ロールを ID プールと再度関連付ける必要があります。そのためには、Amazon Cognito コンソールを開き、ID プールを選択して、[Edit Identity Pool] を選択します。次に、認証されたロールと認証されていないロールを指定し、変更を保存します。

Amazon Cognito ID の取得

認証されたユーザーを許可する場合や、認証されたユーザーの場合は認証情報プロバイダーでログイントークンを設定した後で、エンドユーザー用の一意の Amazon Cognito ID (アイデンティティ ID) をすぐに取得できます。

Copy
var identityId = AWS.config.credentials.identityId;

Unity

Amazon Cognito を使用して、権限が制限されている一時的な認証情報をアプリケーションに提供し、ユーザーが AWS リソースにアクセスするようにできます。Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。アプリに AWS 証明書を提供するには、次の手順に従います。

  1. Amazon Cognito コンソールで ID プールを作成し、初歩的なコードスニペットをコピーします。

  2. まだ行っていない場合は、AWS Mobile SDK for Unity パッケージをダウンロードしてプロジェクトにインポートします。この操作は、[Assets] > [Import Package] > [Custom Package] メニューから行うことができます。

  3. コンソールから Amazon Cognito の呼び出し元のスクリプトに、初歩的なコードスニペットを貼り付けます。IDENTITY_POOL_ID の値はアカウントに固有のものになります。

    Copy
    CognitoAWSCredentials credentials = new CognitoAWSCredentials ( "IDENTITY_POOL_ID", // Cognito Identity Pool ID RegionEndpoint.USEast1 // Region );
  4. 初期化された Amazon Cognito 認証情報を、使用する AWS クライアントのコンストラクタに渡します。必要なコードは、初期化するサービスによって異なります。クライアントはこのプロバイダーを使用して、AWS リソースにアクセスするための認証情報を取得します。

    注記

    2015 年 2 月以前に ID プールを作成した場合は、ロールなしでこのコンストラクタをパラメーターとして使用するには、ロールを ID プールと再度関連付ける必要があります。そのためには、Amazon Cognito コンソールを開き、ID プールを選択して、[Edit Identity Pool] を選択します。次に、認証されたロールと認証されていないロールを指定し、変更を保存します。

Amazon Cognito ID の取得

認証されたユーザーを許可する場合や、認証されたユーザーの場合は認証情報プロバイダーでログイントークンを設定した後で、エンドユーザー用の一意の Amazon Cognito ID (アイデンティティ ID) をすぐに取得できます。

Copy
credentials.GetIdentityIdAsync(delegate(AmazonCognitoIdentityResult<string> result) { if (result.Exception != null) { //Exception! } string identityId = result.Response; });

Xamarin

Amazon Cognito を使用して、権限が制限されている一時的な認証情報をアプリケーションに提供し、ユーザーが AWS リソースにアクセスするようにできます。Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。アプリに AWS 証明書を提供するには、次の手順に従います。

  1. Amazon Cognito コンソールで ID プールを作成し、初歩的なコードスニペットをコピーします。

  2. まだ行っていない場合は、AWS Mobile SDK for Xamarin をプロジェクトに追加します。手順については、「SDK for Xamarin のセットアップ」を参照してください。

  3. 次の using ステートメントを含めます。

    Copy
    using Amazon.CognitoIdentity;
  4. コンソールから Amazon Cognito の呼び出し元のスクリプトに、初歩的なコードスニペットを貼り付けます。IDENTITY_POOL_ID の値はアカウントに固有のものになります。

    Copy
    CognitoAWSCredentials credentials = new CognitoAWSCredentials ( "IDENTITY_POOL_ID", // Cognito Identity Pool ID RegionEndpoint.USEast1 // Region );
  5. 初期化された Amazon Cognito 認証情報を、使用する AWS クライアントのコンストラクタに渡します。必要なコードは、初期化するサービスによって異なります。クライアントはこのプロバイダーを使用して、AWS リソースにアクセスするための認証情報を取得します。

注記

注意: 2015 年 2 月以前に ID プールを作成した場合は、ロールなしでこのコンストラクタをパラメータとして使用するには、ロールを ID プールと再度関連付ける必要があります。そのためには、Amazon Cognito コンソールを開き、ID プールを選択して、[Edit Identity Pool] を選択します。次に、認証されたロールと認証されていないロールを指定し、変更を保存します。

Amazon Cognito ID の取得

認証されたユーザーを許可する場合や、認証されたユーザーの場合は認証情報プロバイダーでログイントークンを設定した後で、エンドユーザー用の一意の Amazon Cognito ID (アイデンティティ ID) をすぐに取得できます。

Copy
var identityId = await credentials.GetIdentityIdAsync();