我们目前正在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设置方面我做错了什么。我已经在这里工作了很长时间,并阅读了我能找到的每篇博客文章。如果有人可以帮助我或指出我正确的方向,将不胜感激。
在经历了很多挫折之后,我现在可以回答这个问题,所以我决定为这些挣扎的初学者提供一个简单的逐步解答。
我只进入身份验证设置而不是授权。授权需要IAM角色和一些特定于体系结构的其他逻辑。我很高兴在别处讨论。
这种设置有2个组件:
在“常规设置”下的“Cognito用户池”中,选择“应用程序客户端”,如果没有,则添加一个(稍后您将需要该ID)。
然后转到App Integration下的Domain Name并选择一个有效的域前缀并保存。
您需要让公司建立信赖方信任。所需步骤如下:
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
的形式)。如果您无法下载该文件并通过单击“选择文件”上传该文件测试之前的最后一步是设置您之前创建的应用客户端。
要进行测试,您可以尝试使用以下形式的几个不同的URL: -
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托管登录UIidp_identifier
是创建联合身份时定义的可选字段。这在URL中也不是必需的。
This一页webapp是一个很好的工具,用于测试事情是否正常,你得到了所需的响应。
我希望这有助于其他人。