本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 IDP 发起的登录 SAML
当您为 IDP 发起的 SAML 2.0 登录配置身份提供商时,您可以向用户池域中的saml2/idpresponse
终端节点提供SAML断言,而无需在上启动会话。对端点授权具有此配置的用户池接受请求的应用程序客户端支持的用户池外部身份提供商发出的由 IDP 发起的SAML断言。以下步骤描述了配置和使用 IDP 启动的 SAML 2.0 提供商登录的整个过程。
-
创建或指定用户池和应用程序客户端。
-
在您的用户池中创建一个 SAML 2.0 IdP。
-
将您的 IdP 配置为支持 IdP 启动。IDP 启动SAML引入了其他SSO提供商不受制于的安全注意事项。因此,您不能向任何使用由 IDP 发起登录的SAML提供商的应用程序客户端添加非-SAML IdPs(包括用户池本身)。
-
将您的 IDP 发起的SAML提供商与用户池中的应用程序客户端相关联。
-
将您的用户引导到您的 Id SAML P 的登录页面并检索SAML断言。
-
使用他们的SAML断言将您的用户引导到您的用户池
saml2/idpresponse
终端节点。 -
接收JSON网络代币 (JWTs)。
要接受用户池中未经请求的SAML断言,必须考虑其对应用程序安全的影响。当您接受 IDP 发起的请求时,可能会出现请求欺骗和CSRF尝试。尽管您的用户池无法验证 IDP 发起的登录会话,但 Amazon Cognito 会验证您的请求参数和断言。SAML
此外,您的SAML索赔不得包含InResponseTo
索赔,并且必须在过去 6 分钟内发出。
您必须向 IdP 发起的请求提交SAML给您。/saml2/idpresponse
对于 SP 发起和托管的 UI 授权请求,您必须提供参数,将您请求的应用程序客户端、范围URI、重定向和其他详细信息标识为请求中的HTTP
GET
查询字符串参数。但是,对于 IDP 发起的SAML断言,请求的详细信息必须格式化为请求正文中的RelayState
参数。HTTP POST
请求正文还必须包含您的SAML断言作为SAMLResponse
参数。
以下是 IdP 发起SAML的提供商的请求示例。
POST /saml2/idpresponse HTTP/1.1 User-Agent:
USER_AGENT
Accept: */* Host:example.auth.us-east-1.amazoncognito.com
Content-Type: application/x-www-form-urlencoded SAMLResponse=[Base64-encoded SAML assertion]
&RelayState=identity_provider%3DMySAMLIdP
%26client_id%3D1example23456789
%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com
%26response_type%3Dcode
%26scope%3Demail%2Bopenid%2Bphone
HTTP/1.1 302 Found Date: Wed, 06 Dec 2023 00:15:29 GMT Content-Length: 0 x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb Location:https://www.example.com
?code=[Authorization code]