本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在用户池中添加和管理SAML身份提供商
将身份提供商配置为与 Amazon Cognito 配合使用后,您可以将其添加到您的用户池和应用程序客户端。以下过程演示如何在 Amazon Cognito 用户SAML池中创建、修改和删除提供商。
- AWS Management Console
-
您可以使用 AWS Management Console 来创建和删除SAML身份提供者 (IdPs)。
在创建 SAML IdP 之前,您必须拥有从第三方 IdP 那里获得的SAML元数据文档。有关如何获取或生成所需SAML元数据文档的说明,请参阅配置您的第三方SAML身份提供商。
在用户池中配置 SAML 2.0 IdP
-
转到 Amazon Cognito 控制台
。如果出现提示,请输入 AWS 凭证。 -
选择用户池。
-
从列表中选择一个现有用户池,或创建一个用户池。
-
选择 Sign-in experience(登录体验)选项卡。找到 Federated sign-in(联合登录),然后选择 Add an identity provider(添加身份提供商)。
-
选择一个 SAMLIdP。
-
输入提供商名称。您可以在
identity_provider
请求参数中将此友好名称传递给对端点授权。 -
输入以逗号分隔的 Identifiers(标识符)。标识符将告知 Amazon Cognito 应该检查用户登录时输入的电子邮件地址,然后将它们引导到与其域名对应的提供商。
-
如果您希望 Amazon Cognito 在用户注销时向您的提供商发送已签名的注销请求,请选择 Add sign-out flow(添加注销流程)。您必须将 SAML 2.0 IdP 配置为向配置托管 UI 时创建的
https://
终端节点发送退出响应。mydomain.us-east-1.amazoncognito.com
/saml2/logoutsaml2/logout
端点使用POST绑定。注意
如果选择了此选项,并且您的 SAML IdP 需要签名的注销请求,则您还必须向 I SAML dP 提供用户池中的签名证书。
SAMLIdP 将处理已签名的注销请求并将您的用户从 Amazon Cognito 会话中注销。
-
选择您的 IDP 启动的SAML登录配置。作为安全最佳实践,请选择 “仅接受 SP 发起的SAML断言”。如果您已准备好安全地接受未经请求的SAML登录会话,请选择接受 SP 发起和 IDP 发起的断言。SAML有关更多信息,请参阅 SAML在 Amazon Cognito 用户池中启动会话。
-
选择 Metadata document source(元数据文档源)。如果您的 IdP 在公开场合提供SAML元数据URL,则可以选择元数据文档URL并公开输入。URL否则,请选择 Upload metadata document(上载元数据文档),然后选择您之前从提供商下载的元数据文件。
注意
URL如果您的提供商有公共终端节点,我们建议您输入元数据文档,而不是上传文件。Amazon Cognito 会自动刷新元数据中的元数据。URL通常,元数据刷新操作每 6 小时执行一次或在元数据过期前执行(以时间较早者为准)。
-
在您的SAML提供商和用户池之间映射属性,以将SAML提供者属性映射到用户池中的用户个人资料。在属性映射中包含用户池必需属性。
例如,当您选择用户池属性时
email
,输入您的 IdP SAML 断言中显示的SAML属性名称。如果您的 IdP 提供示例SAML断言,则可以使用这些示例断言来帮助您找到名称。有些 IdPs 使用简单的名称,例如email
,而另一些则使用如下所示的名称。http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
-
选择创建。
-
- API/CLI
-
使用以下命令创建和管理SAML身份提供商 (IdP)。
创建 IdP 并上传元数据文档
-
AWS CLI:
aws cognito-idp create-identity-provider
带元数据文件的示例:
aws cognito-idp create-identity-provider --user-pool-id
us-east-1_EXAMPLE
--provider-name=SAML_provider_1
--provider-type SAML --provider-details file:///details.json --attribute-mappingemail
=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
其中
details.json
包含:"ProviderDetails": { "MetadataFile": "
<SAML metadata XML>
", "IDPSignout" : "true
", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true
", "IDPInit" : "true
" }注意
如果
<SAML metadata XML>
包含该角色的任何实例"
,必须添加\
为转义字符:\"
。元数据示例URL:
aws cognito-idp create-identity-provider --user-pool-id
us-east-1_EXAMPLE
--provider-name=SAML_provider_1
--provider-type SAML --provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata
--attribute-mappingemail
=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
-
AWS API: CreateIdentityProvider
为 IdP 上传新的元数据文档
-
AWS CLI:
aws cognito-idp update-identity-provider
带元数据文件的示例:
aws cognito-idp update-identity-provider --user-pool-id
us-east-1_EXAMPLE
--provider-name=SAML_provider_1
--provider-details file:///details.json --attribute-mappingemail
=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
其中
details.json
包含:"ProviderDetails": { "MetadataFile": "
<SAML metadata XML>
", "IDPSignout" : "true
", "RequestSigningAlgorithm" : "rsa-sha256", "EncryptedResponses" : "true
", "IDPInit" : "true
" }注意
如果
<SAML metadata XML>
包含该角色的任何实例"
,必须添加\
为转义字符:\"
。元数据示例URL:
aws cognito-idp update-identity-provider --user-pool-id
us-east-1_EXAMPLE
--provider-name=SAML_provider_1
--provider-details MetadataURL=https://myidp.example.com/sso/saml/metadata
--attribute-mappingemail
=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
-
AWS API: UpdateIdentityProvider
获取有关特定 IdP 的信息
-
AWS CLI:
aws cognito-idp describe-identity-provider
aws cognito-idp describe-identity-provider --user-pool-id
us-east-1_EXAMPLE
--provider-name=SAML_provider_1
-
AWS API: DescribeIdentityProvider
列出所有相关信息 IdPs
-
AWS CLI:
aws cognito-idp list-identity-providers
例如:
aws cognito-idp list-identity-providers --user-pool-id
us-east-1_EXAMPLE
--max-results 3 -
AWS API: ListIdentityProviders
删除 IdP
-
AWS CLI:
aws cognito-idp delete-identity-provider
aws cognito-idp delete-identity-provider --user-pool-id
us-east-1_EXAMPLE
--provider-name=SAML_provider_1
-
AWS API: DeleteIdentityProvider
-
设置 SAML IdP 以添加用户池作为信赖方
-
用户池服务提供商URN是:
urn:amazon:cognito:sp:
. Amazon Cognito 要求在响应URN中提供与该值相匹配的SAML受众限制值。将您的 IdP 配置为使用以下POST绑定端点来处理 IdP 到 SP 的响应消息。us-east-1_EXAMPLE
https://
mydomain.us-east-1.amazoncognito.com
/saml2/idpresponse -
您的 SAML IdP 必须在断言中填充
NameID
用户池的所有必需属性。SAMLNameID
用于在用户池中唯一标识您的SAML联合用户。您的 IdP 必须以一致的、区分大小写的格式传递每个用户的SAML姓名 ID。用户名 ID 值的任何变化都会创建一个新的用户个人资料。
为你的 SAML 2.0 提供签名证书 IDP
-
要从 Amazon Cognito 下载公钥副本,供您的 IdP 用来验证SAML注销请求,请选择用户池的登录体验选项卡,选择您的 IdP,然后在查看签名证书下选择下载为.crt。
您可以使用 Amazon Cognito 控制台删除您在用户池中设置的任何SAML提供商。
删除提供SAML商
-
在导航窗格中,选择 User Pools(用户池),然后选择要编辑的用户池。
-
选择 “登录体验” 选项卡,然后找到联邦身份提供商登录信息。
-
选择SAML IdPs 您要删除的旁边的单选按钮。
-
当系统提示您删除身份提供商时,请输入SAML提供商的名称以确认删除,然后选择删除。