

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

# 将 Login with Amazon 添加为社交身份提供者
<a name="cognito-user-pools-social-idp-lwa"></a>

**注意**  
**上次通过提供商控制台进行验证的时间为** 2026 年 10 月 2 日。使用 Login With Amazon 登录步骤使用[亚马逊开发者控制台](https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html)（不是 Amazon 控制台）。

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

## 注册 Login with Amazon 安全配置文件
<a name="social-idp-lwa-register"></a>

**创建和配置安全配置文件**

1. 登录[亚马逊开发者控制台](https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html)，或者前往**应用程序和服务**，然后使用 Log **in with Amazon**。

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

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

1. 打开配置文件的 **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 添加到您的用户池中
<a name="social-idp-lwa-configure"></a>

**要将 Login with Amazon 添加为 IdP Amazon Web Services 管理控制台**

1. 在 [Amazon Cognito 控制台](https://console.amazonaws.cn/cognito/home)中，选择您的用户池，然后选择**社交和外部提供商**，然后选择**添加身份提供商，然后选择 L** og **in** with Amazon。

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

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

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

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

## 测试 Login with Amazon 登录功能
<a name="social-idp-lwa-test"></a>

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

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

## 使用 Login with Amazon 登录的陷阱
<a name="social-idp-lwa-pitfalls"></a>

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

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

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