为用户池配置身份提供商
注意
只有在您编辑现有用户池时才会显示 Identity providers (身份提供商) 选项卡。
在 Identity providers (身份提供商) 选项卡上,您可以为自己的用户池指定身份提供商(IdP)。有关更多信息,请参阅通过第三方添加用户池登录。
使用社交 IdP 设置用户登录
您可以使用联合身份验证,将 Amazon Cognito 用户池与社交身份提供商(如 Facebook、Google 和 Login with Amazon)集成起来。
要添加社交身份提供商,您首先要通过该身份提供商创建一个开发人员账户。在拥有开发人员账户后,您应向身份提供商注册您的应用程序。该身份提供商将为您的应用程序创建应用程序 ID 和应用程序密钥,然后您在您的 Amazon Cognito 用户池中配置这些值。
以下是帮助您开始使用社交身份提供商的链接:
- Original console
-
将用户登录与社交 IdP 集成
-
选择一个社交身份提供商,例如 Facebook、Google、Login with Amazon 或 Sign In with Apple。
-
根据您选择的 IdP,完成以下步骤之一,从而输入社交身份提供商的信息:
- Facebook、Google 和 Login with Amazon
-
输入您创建客户端应用程序时收到的应用程序密钥。
- Sign In with Apple
-
输入您向 Apple 提供的服务 ID,以及创建应用程序客户端时收到的团队 ID、密钥 ID 和私有密钥。
-
对于 App secret(应用程序密钥),输入您创建客户端应用程序时收到的应用程序密钥。
-
对于 Authorize scopes(授权范围),输入要映射到用户池属性的社交身份提供商范围的名称。范围定义了您要通过应用程序访问的用户属性(如名称和电子邮件)。输入范围时,根据您选择的 IdP 使用以下准则:
-
Facebook – 以英文逗号分隔范围。例如:
public_profile, email
-
Google、Login with Amazon 和 Sign In with Apple – 以空格分隔范围。例如:
-
Google:
profile email openid
-
Login with Amazon:
profile postal_code
-
Sign In with Apple:
name email
注意
对于 Sign in with Apple(控制台),请使用复选框以选择范围。
-
您的用户需要同意向应用程序提供这些属性。关于每个社交身份提供商范围的更多信息,请参阅 Google、Facebook 和 Login with Amazon 或 Sign In with Apple 的文档。
-
-
选择 Enable Facebook(启用 Facebook)、Enable Google(启用 Google)、Enable Login with Amazon(启用 Login with Amazon)或 Enable Sign in with Apple(启用 Sign in with Apple)。
-
- New console
-
将用户登录与社交 IdP 集成
-
登录 Amazon Cognito 控制台
。如果出现提示,请输入 Amazon 凭证。 -
在导航窗格中,选择 User Pools(用户池),然后选择要编辑的用户池。
-
选择 Sign-in experience(登录体验)选项卡并找到 Federated sign-in(联合登录)。
-
选择 Add an identity provider(添加身份提供商),或者选择已配置的身份提供商(例如 Facebook、Google、Amazon 或 Apple),找到 Identity provider information(身份提供商信息),然后选择 Edit(编辑)。有关添加社交身份提供商的更多信息,请参阅向用户池添加社交身份提供商。
-
根据您选择的 IdP,完成以下步骤之一,从而输入社交身份提供商的信息:
- Facebook、Google 和 Login with Amazon
-
输入您创建客户端应用程序时收到的应用程序密钥。
- Sign In with Apple
-
输入您向 Apple 提供的服务 ID,以及创建应用程序客户端时收到的团队 ID、密钥 ID 和私有密钥。
-
对于 Authorize scopes(授权范围),输入要映射到用户池属性的社交身份提供商范围的名称。范围定义了您要通过应用程序访问的用户属性(如名称和电子邮件)。输入范围时,根据您选择的 IdP 使用以下准则:
-
Facebook – 以英文逗号分隔范围。例如:
public_profile, email
-
Google、Login with Amazon 和 Sign In with Apple – 以空格分隔范围。例如:
-
Google:
profile email openid
-
Login with Amazon:
profile postal_code
-
Sign In with Apple:
name email
注意
对于 Sign in with Apple(控制台),请使用复选框以选择范围。
-
-
-
选择 Save changes(保存更改)。
-
从 App client integration(应用程序客户端集成)选项卡上的列表中选择一个 App clients(应用程序客户端),然后选择 Edit hosted UI settings(编辑托管 UI 设置)。将新的社交身份提供商添加到 Identity providers(身份提供商)下的应用程序客户端。
-
选择 Save changes(保存更改)。
-
有关社交 IdP 的更多信息,请参阅 向用户池添加社交身份提供商。
使用 OIDC IdP 设置用户登录
您可以将用户登录与 OpenID Connect (OIDC) 身份提供商 (IdP) 集成,例如 Salesforce 或 Ping Identity。
- Original console
-
-
转到 Amazon Cognito 控制台
。如果出现提示,请输入 Amazon 凭证。 -
选择 Manage User Pools(管理用户池)。
-
从列表中选择一个现有用户池,或创建一个用户池。
-
在左侧导航栏上,选择 Identity providers(身份提供商)。
-
选择 OpenID Connect。
-
在 Provider name(提供商名称)中输入一个唯一名称。
-
将 OIDC IdP 的客户端 ID 输入到 Client ID(客户端 ID)中。
-
将 OIDC IdP 的客户端密钥输入到 Client secret(客户端密钥)中。
-
在下拉列表中,选择 Amazon Cognito 用于将用户详细信息从 userinfo 端点提取到 Attributes request method(属性请求方法)的 HTTP 方法(GET 或 POST)。
-
输入要授权的范围的名称。范围定义了您要通过应用程序访问的用户属性 (如
name
和email
)。根据 OAuth 2.0规范,范围由空格分隔。 您的应用程序用户需要同意向您的应用程序提供这些属性。
-
输入 IdP 的 URL,然后选择 Run discovery(运行发现)。例如,Salesforce 使用以下 URL:
https://login.salesforce.com
注意
URL 应该以
https://
开头,并且不应以下斜杠/
结尾。-
如果 Run discovery(运行发现)不成功,则必须提供 Authorization endpoint(授权端点)、Token endpoint(令牌端点)、Userinfo endpoint(Userinfo 端点)和 Jwks uri [JSON Web Key
(JSON Web 密钥)的位置]。
-
-
选择 Create provider(创建提供商)。
-
在左侧导航栏上,选择 App client settings(应用程序客户端设置)。
-
选择您的 OIDC 提供商作为其中一个 Enabled Identity Providers(启用的身份提供商)。
-
输入回调 URL,供 Amazon Cognito 授权服务器在用户通过身份验证之后进行调用。这是页面的 URL,Amazon Cognito 在您的用户成功登录后将其重定向到该页面。
https://
www.example.com
-
在 Allowed OAuth Flows(允许的 OAuth 流程)下,激活 Authorization code grant(授权代码授予)和 Implicit code grant(隐式代码授予)。
除非您希望明确地排除一个允许的 OAuth 范围,否则请选中所有 Allowed OAuth scopes(允许的 OAuth 范围)的复选框。
-
选择 Save changes(保存更改)。
-
在左侧导航栏的 Attribute mapping(属性映射)选项卡上,将 OIDC 声明的映射添加到用户池属性。
-
作为默认值,OIDC 声明 sub 将映射到用户池属性 Username(用户名)。您可以将其他 OIDC 声明
映射到用户池属性。输入 OIDC 声明,然后从下拉列表中选择对应的用户池属性。例如,email(电子邮件)声明通常会映射到用户池 Email(电子邮件)属性中。 -
在下拉列表中,选择目标用户池属性。
-
选择 Save changes(保存更改)。
-
选择 Go to summary(转到摘要页面)。
-
-
- New console
-
-
转到 Amazon Cognito 控制台
。如果出现提示,请输入 Amazon 凭证。 -
从导航菜单中选择 User Pools(用户池)。
-
从列表中选择一个现有用户池,或创建一个用户池。
-
选择 Sign-in experience(登录体验)选项卡。找到 Federated sign-in(联合登录),然后选择 Add an identity provider(添加身份提供商)。
-
选择 OpenID Connect 身份提供商。
-
在 Provider name(提供商名称)中输入一个唯一名称。
-
将您从提供商那里收到的客户端 ID 输入到 Client ID(客户端 ID)。
-
将您从提供商那里收到的客户端密钥输入到 Client secret(客户端密钥)。
-
为该提供商输入 Authorized scopes(授权范围)。范围定义了应用程序将向您的提供商请求的用户属性组(例如
name
和email
)。根据 OAuth 2.0规范,范围必须以空格分隔。 您的用户必须同意向您的应用程序提供这些属性。
-
请选择一个 Attribute request method(属性请求方法),以便为 Amazon Cognito 提供 HTTP 方法(GET 或 POST),Amazon Cognito 使用该方法从提供商运营的 userInfo 端点中获取用户的详细信息。
-
请选择 Setup method(设置方法)并通过 Auto fill through issuer URL(自动填充发布者 URL)或 Manual input(手动输入)检索 OpenID Connect 端点。当您的提供商具有公有
.well-known/openid-configuration
端点且 Amazon Cognito 可以在其中检索authorization
、token
、userInfo
和jwks_uri
端点的 URL 时,使用 Auto fill through issuer URL(自动填充发布者 URL)。 -
请输入发布者 URL 或 IdP 中的
authorization
、token
、userInfo
和jwks_uri
端点 URL。注意
您只能将端口号 443 和 80 用于发现、自动填充和手动输入的 URL。如果您的 OIDC 提供商使用任何非标准 TCP 端口,则用户登录失败。
发布者 URL 必须以
https://
开头,而且不得以/
字符结尾。例如,Salesforce 使用以下 URL:https://login.salesforce.com
与您的发布者 URL 关联的
openid-configuration
文档必须为以下值提供 HTTPS URL:authorization_endpoint
、token_endpoint
、userinfo_endpoint
和jwks_uri
。同样,当您选择 Manula input(手动输入)时,只能输入 HTTPS URL。 -
默认情况下,sub OIDC 声明将映射到用户池 Username(用户名)属性中。您可以将其他 OIDC 声明
映射到用户池属性。输入 OIDC 声明,然后从下拉列表中选择对应的用户池属性。例如,声明 email 通常会映射到用户池属性 Email(电子邮件)。 -
请将身份提供商的其它属性映射到您的用户池。有关更多信息,请参阅指定适用于用户池的身份提供程序属性映射。
-
选择 Create(创建)。
-
从 App client integration(应用程序客户端集成)选项卡上的列表中选择 App clients(应用程序客户端)的其中一个,然后选择 Edit hosted UI settings(编辑托管 UI 设置)。将新的 OIDC 身份提供商添加到 Identity providers(身份提供商)下的应用程序客户端。
-
选择 Save changes(保存更改)。
-
有关 OIDC IdP 的更多信息,请参阅向用户池添加 OIDC 身份提供商。
使用 SAML IdP 设置用户登录
您可以使用 Amazon Cognito 用户池的联合身份验证与 SAML 身份提供商(IdP)集成。您可以通过上传文件或输入元数据文档端点 URL 来提供元数据文档。有关获取第三方 SAML IdP 元数据文档的信息,请参阅 将第三方 SAML 身份提供商与 Amazon Cognito 用户池集成。
- Original console
-
将用户登录与 SAML IdP 集成
-
选择 SAML 以显示 SAML 身份提供商选项。
-
要上传元数据文档,请选择 Select file (选择文件),或输入元数据文档端点 URL。元数据文档必须是有效的 XML 文件。
-
输入您的 SAML Provider name (提供商名称),例如
"SAML_provider_1"
,以及您需要的任何 Identifiers (标识符)。提供商名称是必需的;标识符是可选的。有关更多信息,请参阅向用户池添加 SAML 身份提供商。 -
如果希望用户在从 Amazon Cognito 注销的同时从 SAML IdP 注销,请选择 Enable IdP sign out flow (启用 IdP 注销流程)。
如果启用此流程,在调用 注销端点 时,将会向 SAML IdP 发送已签名的注销请求。
注意
如果选择此选项,并且您的 SAML IdP 需要已签名的注销请求,则您还需要为您的 SAML IdP 配置 Amazon Cognito 提供的签名证书。
SAML IdP 将处理已签名的注销请求并从 Amazon Cognito 会话中注销您的用户。
-
选择 Create provider(创建提供商)。
-
要创建其他提供商,请重复前面的步骤。
-
- New console
-
在您的用户池中配置 SAML 2.0 身份提供商
-
转到 Amazon Cognito 控制台
。如果出现提示,请输入 Amazon 凭证。 -
选择 User Pools(用户池)。
-
从列表中选择一个现有用户池,或创建一个用户池。
-
选择 Sign-in experience(登录体验)选项卡。找到 Federated sign-in(联合登录),然后选择 Add an identity provider(添加身份提供商)。
-
选择 SAML 身份提供商。
-
输入以逗号分隔的 Identifiers(标识符)。标识符指示 Amazon Cognito 检查用户登录电子邮件地址,然后将用户引导到与其域对应的提供商。
-
如果您希望 Amazon Cognito 在用户注销时向您的提供商发送已签名的注销请求,请选择 Add sign-out flow(添加注销流程)。配置 SAML 2.0 身份提供商,向您配置托管 UI 时 Amazon Cognito 创建的
https://
端点发送注销响应。此<your Amazon Cognito domain>
/saml2/logoutsaml2/logout
端点使用 POST 绑定。注意
如果选择此选项,并且您的 SAML 身份提供商需要已签名的注销请求,则您还需要为您的 SAML IdP 配置 Amazon Cognito 提供的签名证书。
SAML IdP 将处理已签名的注销请求并从 Amazon Cognito 会话中注销您的用户。
-
选择 Metadata document source(元数据文档源)。如果您的身份提供商在公有 URL 上提供 SAML 元数据,则可以选择 Metadata document URL(元数据文档 URL),然后输入该公有 URL。否则,请选择 Upload metadata document(上载元数据文档),然后选择您之前从提供商下载的元数据文件。
注意
如果您的提供商具有公有端点,我们建议您输入元数据文档 URL,而不是上载文件。如果您使用 URL,Amazon Cognito 会自动刷新元数据。通常,元数据刷新操作每 6 小时执行一次或在元数据过期前执行(以时间较早者为准)。
-
Map attributes between your SAML provider and your app(在 SAML 提供商和应用程序之间映射属性)将 SAML 提供程序属性映射到用户池中的用户配置文件。在属性映射中包含用户池必需属性。
例如,当您选择 User pool attribute(用户池属性)
email
时,按照您的身份提供商提供的 SAML 断言中显示的内容,输入 SAML 属性名称。您的身份提供商可能会提供示例 SAML 断言以供参考。一些身份提供商使用简单名称(如email
),另一些则使用类似于下面 URL 格式的属性名称:http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
-
选择 Create(创建)。
-
注意
如果您在使用 HTTPS 元数据端点 URL 创建 SAML IdP 时看见 InvalidParameterException
,请确保元数据端点已正确设置 SSL,并且存在与之关联的有效 SSL 证书。这种例外的一个例子是“Error retrieving metadata from <metadata endpoint>
”(从 <元数据端点> 检索元数据时出错)。
设置 SAML IdP 以添加签名证书
-
要获取包含 IdP 用于验证已签名注销请求的公钥的证书,请在 Federation(联合身份)控制台页面上的 Identity providers(身份提供商)下,在 SAML 对话框的 Active SAML Providers(使用中的 SAML 提供商)下选择 Show signing certificate(显示签名证书)对话框。
有关 SAML IdP 的更多信息,请参阅 向用户池添加 SAML 身份提供商。