View a markdown version of this page

添加以社交身份提供者身份使用 Apple 登录 - Amazon Cognito
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)。

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

添加以社交身份提供者身份使用 Apple 登录

注意

上次通过提供商控制台进行验证的时间为 2026 年 10 月 2 日。Apple 步骤使用 Apple 开发者账户中的证书、标识符和配置文件。您必须具有账户持有人或管理员角色。

使用 Apple 登录需要四个构件:应用程序 ID、服务 ID(您的 Amazon Cognito 客户端 ID)、私钥和您的团队 ID。然后,您将 Apple 作为身份提供商 (IdP) 添加到您的用户池中。必须先启用托管登录。

创建你的 Apple 标识符和密钥

创建 Apple 工件
  1. 在 “证书、标识符和配置文件” 中,创建应用程序 ID(依次是标识符,+,然后是应用程序 ID,然后是应用程序),然后启用 “使用 Apple 登录” 功能。

  2. 创建服务 ID(标识符,然后是 +,然后是服务 ID)。例如,输入描述和反向域标识符。com.example.auth.cognito此标识符是您的亚马逊 Cognito 服务 ID(客户端 ID)。

  3. 选择服务 ID,启用 “使用 Apple 登录”,然后选择 “配置”。选择您的主应用程序 ID,然后输入网址:

    • 域名和子域名(仅限主机,无方案):<your-prefix>.auth.<region>.amazoncognito.com用于默认 Amazon Cognito 域名auth.example.com或自定义域。

    • 返回网址(带有:的完整网址https://)https://<your-prefix>.auth.<region>.amazoncognito.com/oauth2/idpresponse,或者https://auth.example.com/oauth2/idpresponse返回自定义域名的网址。

  4. 创建私钥(密钥,然后是 +),启用 “使用 Apple 登录”,然后下载.p8文件。您只能下载一次。记录密钥 ID。

  5. 在 “成员资格” 页面上记录您的 10 个字符的球队 ID。将 Apple 添加到用户池时,您需要输入服务 ID、团队 ID、密钥 ID 和私钥。

将 Apple 添加到你的用户池

要将 Apple 添加为 IdP,请在 Amazon Web Services 管理控制台
  1. 在 Amazon Cognito 控制台中,选择您的用户池,然后选择社交和外部提供商,然后选择添加身份提供商,然后选择 “使用 Apple 登录”。

  2. 输入服务 ID、团队 ID、密钥 ID 和私钥。Amazon Cognito 使用私钥为您生成客户端密钥。

  3. 对于授权范围,请输入email name。email仅在不需要用户名时使用。

  4. 映射email到email和映射sub到您的用户名属性。Apple 仅在首次登录时返回用户的姓名,因此,如果您将其映射,请将其捕获。

  5. 选择 “添加身份提供商”,然后在应用程序客户端上启用 Apple。

测试用 Apple 登录

打开您的托管登录页面,然后选择 “继续使用 Apple”。同时测试 “共享我的电子邮件” 和 “隐藏我的电子邮件”。

检查点

浏览器使用授权码/oauth2/idpresponse返回您的应用程序。用户与SignInWithApple提供者一起出现在您的用户池中,并且sub. “共享我的电子邮件” 运行显示的是真实的电子邮件;“隐藏我的电子邮件” 运行显示一个@privaterelay.appleid.com地址。invalid_client错误几乎总是意味着客户端密钥 JWT 已过期,或者服务 ID 或返回 URL 不完全匹配/oauth2/idpresponse。

Apple-specific 陷阱

客户端密钥是已过期的 JWT

Apple 的客户机密不是静态字符串。这是一款最长使用寿命为六个月(15,77.7万秒)的 ES256-signed 智威汤逊,当它到期时,Apple的登录会中断并且没有警告。invalid_client在此处描述的配置中,您向 Amazon Cognito 提供私钥(以及服务 ID、团队 ID 和密钥 ID),然后 Amazon Cognito 会根据该密钥生成客户端密钥 JWT,您无需粘贴预先构建的密钥。在 Apple 注册的私钥在 IdP 配置中保持有效且最新;如果您撤销或替换 Apple 密钥,请使用新密钥更新 IdP(例如,使用UpdateIdentityProvider)。

私人中继电子邮件和账户关联

当用户选择 “隐藏我的电子邮件” 时,Apple 会返回一个@privaterelay.appleid.com地址而不是真实地址。此地址不同于同一个人与其他提供商使用的电子邮件地址,因此,当 Apple 参与时,请勿通过电子邮件将不同身份提供商的账户关联起来,而是由提供商进行链接。sub要将邮件发送到中继地址,请在 “使用 Apple 登录电子邮件通信” 下注册您的发送域。

email_verified 类型和托管账户

Apple 的email_verified声明可以以字符串"true"或布尔值true的形式出现,两者兼而有之。对于消费者 Apple 账户来说,情况总是如此。对于 Apple at Work & School(托管)账户,这可能是错误的。首选sub基于链接的方式,并在任何合并逻辑之前对字符串值进行标准化处理。