View a markdown version of this page

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

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

将 Login with Amazon 添加为社交身份提供者

注意

上次通过提供商控制台进行验证的时间为 2026 年 10 月 2 日。使用 Login With Amazon 登录步骤使用亚马逊开发者控制台(不是 Amazon 控制台)。

要让您的用户使用他们的亚马逊账户登录,您需要注册一个 Login with Amazon 安全配置文件,然后将 Login with Amazon 作为身份提供者 (IdP) 添加到您的用户池中。必须先启用托管登录。

注册 Login with Amazon 安全配置文件

创建和配置安全配置文件
  1. 登录亚马逊开发者控制台,或者前往应用程序和服务,然后使用 Log in with Amazon。

  2. 选择 “创建新的安全配置文件”。输入姓名(显示在同意屏幕上)、描述和同意隐私声明网址。选择保存。

  3. 显示安全配置文件的 “客户端 ID” 和 “客户机密钥”。当您将 Login with Amazon 添加到您的用户池中时,您可以输入这些信息。

  4. 打开配置文件的 Web 设置,然后选择编辑。输入以下值,然后保存。

    • 允许的来源(HTTPS,无路径):https://<your-prefix>.auth.<region>.amazoncognito.com或https://auth.example.com。

    • 允许的返回 URL(/oauth2/idpresponse端点):https://<your-prefix>.auth.<region>.amazoncognito.com/oauth2/idpresponse或https://auth.example.com/oauth2/idpresponse。Amazon Cognito 使用重定向流程,因此返回网址就是它所依赖的值。

将 Login with Amazon 添加到您的用户池中

要将 Login with Amazon 添加为 IdP Amazon Web Services 管理控制台
  1. 在 Amazon Cognito 控制台中,选择您的用户池,然后选择社交和外部提供商,然后选择添加身份提供商,然后选择 L og in with Amazon。

  2. 输入安全配置文件中的客户端 ID 和客户机密钥。

  3. 对于授权范围,请输入profile。这将返回用户的姓名、电子邮件和用户 ID。(postal_code仅在需要邮政编码或邮政编码时才添加。)

  4. 映射email到email、映射name到name和映射user_id到您的用户名属性。

  5. 选择添加身份提供商,然后在您的应用程序客户端上启用 Login with Amazon。

测试 Login with Amazon 登录功能

打开您的托管登录页面并选择继续使用Amazon,然后进行身份验证并接受同意屏幕。

检查点

浏览器使用授权码/oauth2/idpresponse返回您的应用程序,该用户以用户名为前缀LoginWithAmazon_的联合用户的身份出现在您的用户池中。ID 令牌包含映射的email和name。请注意,false除非你用触发器进行设置,否则会email_verified读取(参见陷阱)。

使用 Login with Amazon 登录的陷阱

没有经过电子邮件验证的索赔

profile作用域仅返回emailname、和 user_id —没有要映射的email_verified声明。默认情况下,映射的电子邮件未经验证,因此 Login with Amazon 用户在email_verified设置为时登陆false。

对账户关联的影响

由于电子邮件未经验证,因此 Amazon Cognito 不会自动将 “用亚马逊账户登录” 用户合并到已通过电子邮件验证的现有用户中。要链接电子邮件或将电子邮件标记为已验证,请使用注册前 Lambda 触发器(AdminLinkProviderForUser和),并且仅当您的信任模型证明信任该电子邮件是合理的。 Amazon-asserted

映射的属性必须是可写的

您映射的任何自定义属性都必须是可变且可由应用程序客户端写入的,否则登录失败或静默跳过该属性。标准email而且name还不错。