我们目前正在AWS上使用完整的无服务器堆栈构建Web应用程序。到目前为止,我们使用AWS Lambda,AWS DynamoDB和Cognito用户池非常成功。此应用程序旨在成为企业应用程序,我的一个客户希望能够使用其当前的Active Directory凭据记录所有用户。我过去曾在其他应用程序中使用过AD FS,但它总是让它变得有点神奇。
现在,我想向客户发送有关如何配置其AD FS依赖方信任以对我的应用程序进行身份验证的说明。
我已经读过,最好的方法是创建一个链接到Cognito用户池的Cognito Identity Provider。在用户池中,您应该创建SAML提供程序并从AD FS服务器上载metadata.xml。
我已经设置了一个带有AD FS的实验室服务器,我可以使用它。现在我不确定在依赖方信任设置或Cognito设置方面我做错了什么。我已经在这里工作了很长时间,并阅读了我能找到的每篇博客文章。如果有人能帮助我或指出我正确的方向,将非常感激。
答案 0 :(得分:10)
经过多次挫折之后,我现在可以回答这个问题,所以我决定为这些挣扎的初学者提供一个简单的逐步解答。
我只进入身份验证设置而不是授权。授权需要IAM角色和一些特定于体系结构的其他逻辑。我很乐意在别处讨论。
这种设置有两个组件:
在常规设置下的Cognito用户池中,选择应用客户端,如果没有,则添加一个(稍后您将需要该ID)。
然后转到应用集成下的域名,并选择有效的域名前缀并保存。
您需要让公司设立依赖方信任。所需步骤如下:
https://<domain_prefix>.auth.<region>.amazoncognito.com/saml2/idpresponse
(在上一步中设置域前缀)urn:amazon:cognito:sp:<pool-id>
,其中pool-id
是在用户池的常规设置中找到的AWS Cognito用户池ID 现在您需要向信赖方信任添加声明。
因此,作为应用程序开发人员,您需要设置Cognito用户池。完成向导并选择您喜欢的设置。无论如何,联合身份都不一定遵循与用户池本身相同的规则。
设置联合身份的步骤如下:
https://<fqdn>/FederationMetadata/2007-06/FederationMetadata.xml
的形式)。如果您无法下载该文件并通过点击&#34;上传文件&#34; 测试前的最后一步是设置您之前创建的应用客户端。
要进行测试,您可以尝试使用以下形式的几个不同的网址: -
https://<domain_prefix>.auth.<region>.amazoncognito.com/authorize?idp_identifier=<idp_identifier>&response_type=token&client_id=<app_client_id>&redirect_uri=<app_client_callback_URL>
直接转到授权端点https://<domain_prefix>.auth.<region>.amazoncognito.com/login?response_type=token&client_id=<app_client_id>&redirect_uri=<app_client_callback_URL>
转到AWS托管登录界面 idp_identifier
是创建联合身份时定义的可选字段。这在URL中也不是必需的。
This一页webapp是一个很好的工具,用于测试事情是否有效,并且您正在获得所需的响应。
我希望这有助于其他人。