「Apple でサインイン」 (ID プール) - Amazon Cognito

「Apple でサインイン」 (ID プール)

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

認証プロバイダーとして「Apple でサインイン」を ID プールに追加するには、2 つのステップが必要です。まず、アプリケーションで「Apple でサインイン」を統合し、次に ID プールで「Apple でサインイン」を設定します。

「Apple でサインイン」を設定する

ID プロバイダーとして「Apple でサインイン」を設定するには、クライアント ID を受け取るためにアプリケーションを Apple に登録する必要があります。

  1. Apple のデベロッパーアカウントを作成します。

  2. Apple 認証情報を使用してサインインします。

  3. 左のナビゲーションペインで、[Certificates, IDs & Profiles (証明書、ID & プロファイル)] を選択します。

  4. 左のナビゲーションペインで、[Identifiers (識別子)] を選択します。

  5. [Identifiers] (識別子) ページで [+] アイコンをクリックします。

  6. [Register a New Identifier (新しい識別子の登録)] ページで、[App IDs (アプリ ID)]、[Continue (続行)] の順に選択します。

  7. [Register an App ID] (アプリ ID の登録) ページで、以下の操作を実行します。

    1. [説明] に、説明を入力します。

    2. [Bundle ID (バンドル ID)] に、識別子を入力します。このバンドル ID をメモしておきます。この値は、ID プールで Apple をプロバイダーとして設定するために必要になります。

    3. [Capabilities (機能)] で、[Apple でサインイン] を選択してから [Edit (編集)] を選択します。

    4. [Sign in with Apple: App ID Configuration (Apple でサインイン: アプリ ID の設定)] ページで、アプリの適切な設定を選択後、[Save (保存)] を選択します。

    5. [Continue] を選択します。

  8. [Confirm your App ID] ページで、[登録] を選択します。

  9. 「Apple でサインイン」をネイティブ iOS アプリケーションと統合する場合は、ステップ 10 に進みます。ステップ 11 は、「Apple JS でサインイン」と統合するアプリケーション用です。

  10. [Identifiers] (識別子) ページで、ページの右側にある [App IDs] (アプリ ID) を長押しします。[Services IDs (サービス ID)] を選択し、[plus + (プラス +)] アイコンを選択します。

  11. [Register a New Identifier (新しい識別子の登録)] ページで、[Services IDs (サービス ID)]、[Continue (続行)] の順に選択します。

  12. [Register a Services ID] ページで、次の操作を行います。

    1. [説明] に、説明を入力します。

    2. [Identifier] に、識別子を入力します。このサービス ID を書き留めておきます。Apple を ID プールのプロバイダーとして設定するには、この値が必要になります。

    3. [Apple でサインイン] を選択後、[Configure (設定)] を選択します。

    4. [Web Authentication Configuration] ページで、[Primary App ID] を選択します。[Website URL’s] (ウェブサイトの URL) で [+] アイコンをクリックします。[Domains and Subdomains (ドメインとサブドメイン)] で、アプリのドメイン名を入力します。[Return URLs (リターン URL)] に、Apple 認証でサインインした後に認可がリダイレクトするコールバック URL を入力します。

    5. [Next (次へ)] を選択します。

    6. [Continue (続行)] を選択し、[Register (登録)] を選択します。

  13. 左のナビゲーションペインで [Keys (キー)] を選択します。

  14. [Keys] (キー) ページで [+] アイコンを選択します。

  15. [Register a New Key] (新しいキーの登録) ページで、以下を実行します。

    1. [Key Name] (キー名) に、キー名を入力します。

    2. [Apple でサインイン] を選択後、[Configure (設定)] を選択します。

    3. [Configure Key (キーの設定)] ページで、[Primary App ID (プライマリアプリ ID)]、[Save (保存)] の順に選択します。

    4. [Continue (続行)] を選択し、[Register (登録)] を選択します。

注記

Apple でサインインをネイティブ iOS アプリケーションに統合するには、「Apple でサインインしてユーザー認証を実装する」を参照してください。

ネイティブ iOS 以外のプラットフォームで「Apple でサインイン」を統合する方法については、「Apple JS でサインイン」を参照してください。

Amazon Cognito フェデレーティッド ID コンソールで外部プロバイダーを設定する

以下の手順を使用して、外部プロバイダーを設定します。

  1. Amazon Cognito コンソールのホームページで [Manage Identity Pools] (ID プールの管理) をクリックします。

  2. 外部プロバイダーとして Apple を有効にする ID プールの名前を選択します。

  3. ダッシュボードの右上にある、[Edit identity pool (ID プールの編集)] を選択します。

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

  5. [Apple] タブを選択します。

  6. https://developer.apple.com から取得したバンドル ID を入力します。次に、[変更の保存] を選択します。

  7. ネイティブ iOS アプリケーションで「Apple でサインイン」を使用する場合は、developer.apple.com から取得した BundleID を入力します。または、ウェブやその他のアプリケーションで 「Apple でサインイン」を使用している場合は、サービス ID を入力します。次に、[変更の保存] を選択します。

Amazon Cognito フェデレーティッド ID で Apple をプロバイダーとして Apple でサインインするための CLI 例

この例では、ID プロバイダーとして Apple でサインインする MyIdentityPool という名前の ID プールを作成します。

aws cognito-identity create-identity-pool --identity-pool-name MyIdentityPool --supported-login-providers appleid.apple.com="sameple.apple.clientid"

詳細については、「ID プールの作成」を参照してください。

Amazon Cognito アイデンティティ ID を生成する

この例では、Amazon Cognito ID を生成 (または取得) します。これはパブリック API なので、この API を呼び出すために認証情報は必要ありません。

aws cognito-identity get-id --identity-pool-id SampleIdentityPoolId --logins appleid.apple.com="SignInWithAppleIdToken"

詳細については、「get-id」を参照してください。

Amazon Cognito アイデンティティ ID の認証情報を取得する

この例では、指定された ID および 「Apple でサインイン」のログインの認証情報を返します。これはパブリック API なので、この API を呼び出すために認証情報は必要ありません。

aws cognito-identity get-credentials-for-identity --identity-id SampleIdentityId --logins appleid.apple.com="SignInWithAppleIdToken"

詳細については、「get-credentials-for-identity」を参照してください。

Apple でサインインを使用する: Android

Apple では、Android 版の 「Apple でサインイン」をサポートする SDK を提供していません。代わりにウェブビューでウェブフローを使用できます。

「Apple でサインイン」は、その状態の追跡にセッションオブジェクトを使用します。Amazon Cognito は、このセッションオブジェクトからの ID トークンを使用してユーザーの認証と固有識別子の生成を行い、必要に応じて他の AWS リソースへのアクセス権をユーザーに付与します。

@Override public void onSuccess(Bundle response) { String token = response.getString("id_token"); Map<String, String> logins = new HashMap<String, String>(); logins.put("appleid.apple.com", token); credentialsProvider.setLogins(logins); }

「Apple でサインインを使用する」: iOS-Objective-C

Apple は、ネイティブ iOS アプリケーションでの「Apple でサインイン」の SDK サポートを提供しました。ネイティブ iOS デバイスで「Apple でサインイン」を使用してユーザー認証を実装するには、Apple のドキュメントで「「Apple でサインイン」を使用したユーザー認証の実装」を参照してください。

Amazon Cognito は、ID トークンを使用してユーザーの認証と固有識別子の生成を行い、必要に応じて他の AWS リソースへのアクセス権をユーザーに付与します。

(void)finishedWithAuth: (ASAuthorizationAppleIDCredential *)auth error: (NSError *) error { NSString *idToken = [ASAuthorizationAppleIDCredential objectForKey:@"identityToken"]; credentialsProvider.logins = @{ "appleid.apple.com": idToken }; }

「Apple でサインイン」: iOS - Swift

Apple は、ネイティブ iOS アプリケーションでの「Apple でサインイン」の SDK サポートを提供しました。ネイティブ iOS デバイスで「Apple でサインイン」を使用してユーザー認証を実装するには、Apple のドキュメントで「「Apple でサインイン」を使用したユーザー認証の実装」を参照してください。

Amazon Cognito は、ID トークンを使用してユーザーの認証と固有識別子の生成を行い、必要に応じて他の AWS リソースへのアクセス権をユーザーに付与します。

iOS で「Apple でサインイン」を設定する方法についての詳細は、「Apple でサインインを設定する」を参照してください。

func finishedWithAuth(auth: ASAuthorizationAppleIDCredential!, error: NSError!) { if error != nil { print(error.localizedDescription) } else { let idToken = auth.identityToken, credentialsProvider.logins = ["appleid.apple.com": idToken!] } }

「Apple でサインイン」を使用する: JavaScript

Apple では、JavaScript 用の「Apple でサインイン」をサポートする SDK は提供していません。代わりにウェブビューでウェブフローを使用できます。

「Apple でサインイン」は、その状態の追跡にセッションオブジェクトを使用します。Amazon Cognito は、このセッションオブジェクトからの ID トークンを使用してユーザーの認証と固有識別子の生成を行い、必要に応じて他の AWS リソースへのアクセス権をユーザーに付与します。

function signinCallback(authResult) { // Add the apple's id token to the Amazon Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'appleid.apple.com': authResult['id_token'] } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); }

「Apple でサインイン」を使用する: Xamarin

Xamarin 用の「Apple でサインイン」をサポートする SDK はありません。代わりにウェブビューでウェブフローを使用できます。

「Apple でサインイン」は、その状態の追跡にセッションオブジェクトを使用します。Amazon Cognito は、このセッションオブジェクトからの ID トークンを使用してユーザーの認証と固有識別子の生成を行い、必要に応じて他の AWS リソースへのアクセス権をユーザーに付与します。

トークンを取得したら、CognitoAWSCredentials で設定できます。

credentials.AddLogin("appleid.apple.com", token);