Login with Amazon (ID プール) - Amazon Cognito

Login with Amazon (ID プール)

Amazon Cognito は Login with Amazon と統合して、モバイルアプリケーションユーザーとウェブアプリケーションユーザーにフェデレーションされた認証を提供します。このセクションでは、ID プロバイダーとして Login with Amazon を使用してアプリケーションを登録し、セットアップする方法について説明します。

Amazon Cognito を使用するために Login with Amazon をセットアップする方法は 2 つあります。どちらを使用すればいいかわからない場合、または両方を使用する必要がある場合は、Login with Amazon のよくある質問の「Login with Amazon のセットアップ」を参照してください。

  • Amazon 開発者ポータルから。エンドユーザーを Login with Amazon で認証するが Seller Central アカウントを持っていない場合は、この方法を使用します。

  • http://login.amazon.com/ を使用して、Seller Central から。Seller Central を使用する小売業者の場合は、この方法を使用します。

注記

Xamarin の場合は、Xamarin 入門ガイドに従って、Login with Amazon を Xamarin アプリケーションに統合します。

注記

Login with Amazon との統合は、Unity プラットフォームではネイティブにサポートされていません。現在、この統合では、ウェブビューを使用してブラウザのサインインの流れに従う必要があります。

Login with Amazon のセットアップ

Login with Amazon を実装するには、次のいずれかを実行します。

  • Amazon 開発者ポータルを通じて、アプリケーションのセキュリティプロファイル ID を作成します。エンドユーザーを Amazon で認証するが Seller Central アカウントを持っていない場合は、この方法を使用します。開発者ポータルの Login with Amazon ドキュメントでは、アプリケーションでの Login with Amazon のセットアップ、クライアント SDK のダウンロード、および Amazon 開発者プラットフォームでのアプリケーションの宣言の手順を説明しています。セキュリティプロファイル ID を書き留めます。これは、「認証情報を取得する」で説明しているように、Amazon Cognito ID プールを作成するときに Amazon アプリ ID として入力する必要があります。

  • http://login.amazon.com/ を使用して、Seller Central を通じてアプリケーションのアプリケーション ID を作成します。Seller Central を使用する小売業者の場合は、この方法を使用します。Seller Central の Login with Amazon ドキュメントでは、アプリケーションでの Login with Amazon のセットアップ、クライアント SDK のダウンロード、および Amazon 開発者プラットフォームでのアプリケーションの宣言の手順を説明しています。アプリケーション ID を書き留めます。これは、「認証情報を取得する」で説明しているように、Amazon Cognito ID プールを作成するときに Amazon アプリ ID として入力する必要があります。

Amazon Cognito コンソールでの外部プロバイダーの設定

Amazon Cognito コンソールのホームページから [ID プールの管理] を選択します。

  1. 外部プロバイダーとして Login with Amazon を有効にする ID プールの名前を選択します。ID プールの [ダッシュボード] ページが表示されます。

  2. [ダッシュボード] ページの右上にある、[ID プールの編集] を選択します。[Edit identity pool] ページが表示されます。

  3. 下にスクロールし、[認証プロバイダー] を選択して展開します。

  4. [Amazon] タブを選択します。

  5. [ロック解除] を選択します。

  6. Amazon から取得した Amazon アプリ ID を入力して、[変更の保存] を選択します。

Login with Amazon の使用: Android

Amazon のログインを実装したら、TokenListener インターフェイスの onSuccess メソッドで Amazon Cognito 認証情報プロバイダーにトークンを渡すことができます。コードは次のようになります。

@Override public void onSuccess(Bundle response) { String token = response.getString(AuthzConstants.BUNDLE_KEY.TOKEN.val); Map<String, String> logins = new HashMap<String, String>(); logins.put("www.amazon.com", token); credentialsProvider.setLogins(logins); }

Login with Amazon の使用: iOS - Objective-C

Amazon のログインを実装したら、AMZNAccessTokenDelegate の requestDidSucceed メソッドで Amazon Cognito 認証情報プロバイダーにトークンを渡すことができます。

- (void)requestDidSucceed:(APIResult \*)apiResult { if (apiResult.api == kAPIAuthorizeUser) { [AIMobileLib getAccessTokenForScopes:[NSArray arrayWithObject:@"profile"] withOverrideParams:nil delegate:self]; } else if (apiResult.api == kAPIGetAccessToken) { credentialsProvider.logins = @{ @(AWSCognitoLoginProviderKeyLoginWithAmazon): apiResult.result }; } }}

Login with Amazon の使用: iOS - Swift

Amazon のログインを実装したら、AMZNAccessTokenDelegaterequestDidSucceed メソッドで Amazon Cognito 認証情報プロバイダーにトークンを渡すことができます。

func requestDidSucceed(apiResult: APIResult!) { if apiResult.api == API.AuthorizeUser { AIMobileLib.getAccessTokenForScopes(["profile"], withOverrideParams: nil, delegate: self) } else if apiResult.api == API.GetAccessToken { credentialsProvider.logins = [AWSCognitoLoginProviderKey.LoginWithAmazon.rawValue: apiResult.result] } }

Login with Amazon の使用: JavaScript

ユーザーが Login with Amazon と認証し、ウェブサイトにリダイレクトされると、Login with Amazon access_token がクエリ文字列で提供されます。このトークンを認証情報ログインマップに渡します。

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'www.amazon.com': 'Amazon Access Token' } });

Login with Amazon の使用: Xamarin

Xamarin for Android

AmazonAuthorizationManager manager = new AmazonAuthorizationManager(this, Bundle.Empty); var tokenListener = new APIListener { Success = response => { // Get the auth token var token = response.GetString(AuthzConstants.BUNDLE_KEY.Token.Val); credentials.AddLogin("www.amazon.com", token); } }; // Try and get existing login manager.GetToken(new[] { "profile" }, tokenListener);

Xamarin for iOS

AppDelegate.cs で、次のコードを挿入します。

public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation) { // Pass on the url to the SDK to parse authorization code from the url bool isValidRedirectSignInURL = AIMobileLib.HandleOpenUrl (url, sourceApplication); if(!isValidRedirectSignInURL) return false; // App may also want to handle url return true; }

次に、ViewController.cs で、以下の作業を行います。

public override void ViewDidLoad () { base.LoadView (); // Here we create the Amazon Login Button btnLogin = UIButton.FromType (UIButtonType.RoundedRect); btnLogin.Frame = new RectangleF (55, 206, 209, 48); btnLogin.SetTitle ("Login using Amazon", UIControlState.Normal); btnLogin.TouchUpInside += (sender, e) => { AIMobileLib.AuthorizeUser (new [] { "profile"}, new AMZNAuthorizationDelegate ()); }; View.AddSubview (btnLogin); } // Class that handles Authentication Success/Failure public class AMZNAuthorizationDelegate : AIAuthenticationDelegate { public override void RequestDidSucceed(ApiResult apiResult) { // Your code after the user authorizes application for requested scopes var token = apiResult["access_token"]; credentials.AddLogin("www.amazon.com",token); } public override void RequestDidFail(ApiError errorResponse) { // Your code when the authorization fails InvokeOnMainThread(() => new UIAlertView("User Authorization Failed", errorResponse.Error.Message, null, "Ok", null).Show()); } }