Sign in with Apple(身份池) - Amazon Cognito
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Sign in with Apple(身份池)

Amazon Cognito 与 Sign with Apple 集成,以针对移动应用程序和 Web 应用程序用户提供联合身份验证。此节介绍如何使用 Sign in with Apple 作为身份提供商来注册和设置应用程序。

将 Sign in with Apple 作为身份验证提供商添加到身份池的过程包括两个步骤。首先在应用程序中集成 Sign in with Apple,然后在身份池中配置 Sign in with Apple。

设置 Sign in with Apple

要将 Sign in with Apple 配置为身份提供商,您必须向 Apple 注册您的应用程序才能接收客户端 ID。

  1. 创建 Apple 开发人员账户

  2. 使用 Apple 凭证登录

  3. 在左侧导航窗格中,选择 Certificates, IDs & Profiles (证书、ID 和配置文件)

  4. 在左侧导航窗格中,选择Identifiers (标识符)

  5. Identifiers (标识符) 页面上,选择 + 图标。

  6. Register a New Identifier (注册新标识符) 页面上,选择 App IDs (应用程序 ID),然后选择 Continue (继续)

  7. 在存储库的注册应用程序 ID页面上,执行以下操作:

    1. Description (描述) 下方,键入描述。

    2. Bundle ID (服务包 ID) 下,键入标识符。记下此捆绑商品 ID因为您需要此值才能将 Apple 配置为身份池中的提供商。

    3. Capabilities (功能) 下方,选择 Sign In with Apple (使用 Apple 登录),然后选择 Edit (编辑)

    4. 在存储库的使用 Apple 登录:应用程序 ID 配置页面上,为您的应用程序选择适当的设置,然后选择Save

    5. 选择 Continue (继续)

  8. Confirm your App ID (确认您的应用程序 ID) 页面上,选择 Register (注册)

  9. 继续执行步骤10如果要将 Sign with Apple 与本机 iOS 应用程序集成,请使用。步骤 11 适用于您希望与 Sign in with Apple JS 集成的应用程序。

  10. 在存储库的标识符页面上,暂停应用程序 ID在页面右侧。选择 Services IDs (服务 ID),然后选择 plus + (加号 +) 图标。

  11. Register a New Identifier (注册新标识符) 页面上,选择 Services IDs (服务 ID),然后选择 Continue (继续)

  12. Register an Services ID (注册服务 ID) 页面上,执行以下操作:

    1. Description (描述) 下方,键入描述。

    2. Identifier (标识符) 下方,键入标识符。记下服务 ID,因为您需要此值才能将 Apple 配置为身份池中的提供商。

    3. 选择 Sign In with Apple (使用 Apple 登录),然后选择 Configure (配置)

    4. Web Authentication Configuration (Web 身份验证配置) 页面上,选择 Primary App ID (主应用程序 ID)。UNDER网站 URL's中,选择+图标。对于 Domains and Subdomains (域和子域),输入应用程序的域名。在 Return URL (返回 URL) 中,输入授权在进行 Sign in with Apple 身份验证后重定向到的回调 URL。

    5. 选择 Next

    6. 选择 Continue (继续),然后选择 Register (注册)

  13. 在左侧导航窗格中,选择 Keys (密钥)

  14. Keys (密钥) 页面上,选择 + 图标。

  15. Register a New Key (注册新密钥) 页面上,执行以下操作:

    1. Key Name (密钥名称) 下方,键入密钥名称。

    2. 选择 Sign In with Apple (使用 Apple 登录),然后选择 Configure (配置)

    3. Configure Key (配置密钥) 页面上,选择 Primary App ID (主应用程序 ID),然后选择 Save (保存)

    4. 选择 Continue (继续),然后选择 Register (注册)

注意

要将 Sign in with Apple 与本机 iOS 应用程序集成,请参阅通过 Sign in with Apple 实施用户身份验证

要在本机 iOS 以外的平台中集成 Sign in with Apple,请参阅 Sign in with Apple J

配置外部提供商Amazon Cognito 联合身份控制台控制台中

使用以下过程可以配置外部提供商。

  1. 选择管理身份池来自 的Amazon Cognito 控制台主页

  2. 选择想要针对其启用 Apple 作为外部提供商的身份池的名称。

  3. 在控制面板的右上角,选择 Edit identity pool (编辑身份池)

  4. 向下滚动并选择身份验证提供商以将其展开。

  5. 选择 Apple 选项卡。

  6. 输入捆绑 ID从 https://developer.apple.com 获得的信息。然后选择 Save changes (保存更改)

  7. 如果您使用使用 Apple 登录使用本机 iOS 应用程序,请输入BundleID你是从开发者 .apple.com 获得的。或者,如果您在 Web 或其他应用程序中使用 Sign in with Apple,请输入服务 ID。然后选择 Save changes (保存更改)

在 Amazon Cognito 联合身份 CLI 中以 Sign with Apple 作为提供商的示例

此示例以 Sign in with Apple 作为身份提供商创建一个名为 MyIdentityPool 的身份池。

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

有关更多信息,请参阅创建身份池

生成 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 和 Sign in with Apple 登录的凭证。这是一个公有 API,因此您不需要任何凭证即可调用此 API。

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

有关更多信息,请参阅 get-credentials-for-identity

使用 Sign with Apple:Android

Apple 不提供支持 Sign in with Apple for Android 的开发工具包。您可以改为在 Web 视图中使用 Web 流。

使用 Sign with Apple 使用会话对象来跟踪其状态。Amazon Cognito 使用来自此会话对象的 ID 令牌来对用户进行身份验证、生成唯一标识符,并根据需要授予用户对其他Amazon资源的费用。

@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); }

使用 Sign in with Apple:iOS - Objective-C

Apple 为原生 iOS 应用程序中的 Sign in with Apple 提供了开发工具包支持。要在本机 iOS 设备中使用 Sign in with Apple 实施用户身份验证,请按照 Apple 文档中的使用 Sign in with Apple 实施用户身份验证操作。

Amazon Cognito 使用 ID 令牌来对用户进行身份验证、生成唯一标识符,并根据需要授予用户对其他Amazon资源的费用。

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

所用 Sign in with Apple:iOS - Swift

Apple 为原生 iOS 应用程序中的 Sign in with Apple 提供了开发工具包支持。要在本机 iOS 设备中使用 Sign in with Apple 实施用户身份验证,请按照 Apple 文档中的使用 Sign in with Apple 实施用户身份验证操作。

Amazon Cognito 使用 ID 令牌来对用户进行身份验证、生成唯一标识符,并根据需要授予用户对其他Amazon资源的费用。

有关在 iOS 中设置 Sign in with Apple 的更多信息,请参阅设置 Sign in with Apple

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

使用 Sign with Apple:JavaScript

Apple 不提供支持 Sign in with Apple for JavaScript 的开发工具包。您可以改为在 Web 视图中使用 Web 流。

使用 Sign with Apple 使用会话对象来跟踪其状态。Amazon Cognito 使用来自此会话对象的 ID 令牌来对用户进行身份验证、生成唯一标识符,并根据需要授予用户对其他Amazon资源的费用。

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. }); }

使用 Sign with Apple:Xamarin

我们没有支持 Sign in with Apple for Xamarin 的开发工具包。您可以改为在 Web 视图中使用 Web 流。

使用 Sign with Apple 使用会话对象来跟踪其状态。Amazon Cognito 使用来自此会话对象的 ID 令牌来对用户进行身份验证、生成唯一标识符,并根据需要授予用户对其他Amazon资源的费用。

拥有令牌后,您可以在 CognitoAWSCredentials 中对其进行设置:

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