

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

# 为托管登录配置身份验证方法
<a name="authentication-flows-selection-managedlogin"></a>

当您希望用户登录、注销或重置密码时，可以调用[托管登录页面](cognito-user-pools-managed-login.md)，这是用户池身份验证的 Web 前端。在此模式下，您的应用程序导入 OIDC 库，以处理在用户池托管登录页面上进行的基于浏览器的身份验证尝试。用户可用的身份验证方式取决于您的用户池配置和应用程序客户端的配置。在应用程序客户端中实现 `ALLOW_USER_AUTH` 流程后，Amazon Cognito 会提示用户从可用选项中选择一种登录方式。如果实现 `ALLOW_USER_PASSWORD_AUTH` 并分配一个 SAML 提供商，则登录页面会向用户提供输入用户名和密码或通过其 IdP 进行登录的选项。

Amazon Cognito 用户池控制台可帮助您快速为应用程序设置托管登录身份验证。创建新的用户池时，请指定您要开发的平台，控制台将为您提供实现 OIDC 的示例，以及带有用于实现登录和注销流程的入门代码的 OAuth 库。您可以使用多种 OIDC 依赖方实现来构建托管登录。建议您尽可能使用[经过认证的 OIDC 依赖方库](https://openid.net/developers/certified-openid-connect-implementations/)。有关更多信息，请参阅 [用户池入门](getting-started-user-pools.md)。

通常，OIDC 信赖方库会定期检查用户池的`.well-known/openid-configuration`终端节点，以确定发行者， URLs 例如令牌端点和授权端点。作为最佳实践，只要存在相应选项，就应实现这种自动发现行为。手动配置颁发者端点可能引入错误。例如，您可能会更改用户池的域。而 `openid-configuration` 的路径并不与用户池域链接，因此能够自动发现服务端点的应用程序将自动适配您的域变更。

## 托管登录的用户池设置
<a name="authentication-flows-selection-managedlogin-settings"></a>

您可能希望为应用程序启用多个身份提供者的登录方式，或者将 Amazon Cognito 用作独立的用户目录。您还可能希望收集用户属性、设置并提示 MFA，或要求使用电子邮件地址作为用户名。您无法直接编辑托管登录和托管 UI 中的字段。相反，托管登录身份验证流程的处理方式由您的用户池配置自动决定。

以下用户池配置项决定了 Amazon Cognito 在托管登录和托管 UI 中向用户展示的身份验证方法。

------
#### [ User pool options (Sign-in menu) ]

以下选项位于 Amazon Cognito 控制台中用户池的**登录**菜单中。

**Cognito 用户池登录选项**  
提供用户名选项。您的托管登录和托管 UI 页面仅接受您所选格式的用户名。例如，当您将用户池设置为使用**电子邮件**作为唯一登录选项时，托管登录页面就只接受电子邮件格式的用户名。

**必需的属性**  
当您在用户池中将某个属性设置为必填项时，托管登录会在用户注册时提示其提供该属性的值。

**基于选择的登录选项**  
[基于选择的身份验证](authentication-flows-selection-sdk.md#authentication-flows-selection-choice)中包含身份验证方法的设置。在此处，您可以启用或禁用[通行密钥](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passkey)和[无密码](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless)等身份验证方法。这些方法仅适用于配置了[托管登录域](managed-login-branding.md)且[功能计划](cognito-sign-in-feature-plans.md)高于**精简版**层级的用户池。

**多重身份验证**  
托管登录和托管 UI 负责处理 [MFA](user-pool-settings-mfa.md) 的注册和身份验证操作。当您的用户池要求使用 MFA 时，登录页面会自动提示用户设置额外的身份验证因素。对于已配置 MFA 的用户，登录页面也会提示其输入 MFA 验证码以完成身份验证。当用户池中关闭或设为可选 MFA 时，登录页面不会提示用户设置 MFA。

**用户账户恢复**  
用户池的自助[账户恢复]()设置决定了登录页面是否显示供用户重置密码的链接。

------
#### [ User pool options (Domain menu) ]

以下选项位于 Amazon Cognito 控制台中用户池的**域**菜单中。

**域：**  
您选择的用户池域决定了在调用用户浏览器进行身份验证时，用户所打开链接的路径。

**品牌版本**  
您选择的品牌版本决定了用户池域显示的是托管登录还是托管 UI。

------
#### [ User pool options (Social and external providers menu) ]

以下选项位于 Amazon Cognito 控制台中用户池的**社交和外部提供商**菜单中。

**提供商**  
对于用户池中的每个应用程序客户端，您添加到用户池中的身份提供者 (IdPs) 可以处于活动状态或非活动状态。

------
#### [ App client options ]

以下选项位于 Amazon Cognito 控制台中用户池的**应用程序客户端**菜单中。要查看这些选项，请从列表中选择一个应用程序客户端。

**快速设置指南**  
快速设置指南包含适用于各种开发人员环境的代码示例。它们包含将托管登录身份验证与您的应用程序集成所需的库。

**应用程序客户端信息**  
编辑此配置以设置 IdPs 为当前应用程序客户端所代表的应用程序分配的设置。在托管登录页面上，Amazon Cognito 会向用户显示相应的选项。这些选项由已分配的身份验证方法和 IdP 决定。例如，如果您分配了一个名为 `MySAML` 的 SAML 2.0 IdP 以及本地用户池登录，则托管登录页面将显示身份验证方法提示以及一个用于 `MySAML` 的按钮。

**身份验证设置**  
编辑此配置可设置应用程序的身份验证方法。在托管登录页面上，Amazon Cognito 会向用户显示相应的选项。这些选项由用户池作为 IdP 的可用性以及您所分配的身份验证方法决定。例如，如果您分配了基于选择的 `ALLOW_USER_AUTH` 身份验证，则托管登录页面将显示可用选项，例如输入电子邮件地址或使用通行密钥登录。托管登录页面还会为分配的用户呈现按钮 IdPs。

**登录页面**  
使用此选项卡中提供的选项，可设置托管登录或托管 UI 用户交互式页面的视觉效果。有关更多信息，请参阅 [将品牌应用于托管登录页面](managed-login-branding.md)。

------