如何将 AD FS 组成员身份映射到自定义 AWS Cognito 属性?
Posted
技术标签:
【中文标题】如何将 AD FS 组成员身份映射到自定义 AWS Cognito 属性?【英文标题】:How can I map AD FS group membership to custom AWS Cognito attributes? 【发布时间】:2019-01-08 17:49:56 【问题描述】:我的 AD FS 服务器上有以下声明:
LDAP 属性: 令牌组 - 不合格的名称
传出索赔类型: 组
在我的 Saml 响应中返回用户所属的组:
<AttributeStatement>
<Attribute Name="http://schemas.xmlsoap.org/claims/Group">
<AttributeValue>Domain Users</AttributeValue>
<AttributeValue>AWS-Production</AttributeValue>
<AttributeValue>AWS-Dev</AttributeValue>
</Attribute>
</AttributeStatement>
如何将这些组映射到自定义 cognito 用户池属性?
我已尝试使用以下 SAML 属性名称进行映射: http://schemas.xmlsoap.org/claims/Group 和 http://schemas.microsoft.com/ws/2008/06/identity/claims/groups
但属性不会映射到 Cognito。我尝试将我的自定义映射到电子邮件地址等其他属性并且成功了,只是我无法成功映射这些值的组。
附:抱歉,我会发布更详细地记录该过程的照片,但 imgur 在我的工作中被阻止了。
【问题讨论】:
两个重要的点,1) 确保自定义属性被标记为可变和可写,这听起来可能违反直觉,但它是映射工作的必要条件。 2) 如果您打算将该属性用于授权决策,则必须取消选中“aws.cognito.signin.user.admin”范围。这可以防止用户使用他们的访问令牌写入该属性。 你解决了吗? 【参考方案1】:我最近必须进行类似的设置,当我将 AD 组映射到 Cognito custom:adgroups 用户池属性时,我的映射工作。
我的 SAML 响应片段如下所示:
<Attribute Name="https://aws.amazon.com/SAML/Attributes/Role">
<AttributeValue>DEV-ODATA</AttributeValue>
<AttributeValue>DEV-INDEX_PRICES</AttributeValue>
<AttributeValue>DEV-INDEX_DELAYS</AttributeValue>
<AttributeValue>DEV-WEBSITE_REPORTING</AttributeValue>
<AttributeValue>DEV-VALIDATION</AttributeValue>
<AttributeValue>DEV-ADMIN</AttributeValue>
<AttributeValue>DEV-GUI</AttributeValue>
<AttributeValue>DEV-FLOWS</AttributeValue>
<AttributeValue>DEV-LEGAL</AttributeValue>
<AttributeValue>DEV-IMG</AttributeValue>
<AttributeValue>DEV-USER</AttributeValue>
</Attribute>
而且映射很简单
https://aws.amazon.com/SAML/Attributes/Role -> custom:adgroups
但之后出现了另一个问题,我必须将这些映射到 Cognito 组,您可能也想这样做,以管理应用程序权限。有关我如何找到解决方法的详细信息,请参见:AWS Cognito - create groups from ADFS
希望这会有所帮助。
【讨论】:
【参考方案2】:我刚刚遇到这个问题,我的头撞在墙上好几天了。我终于通过在用户客户端上启用属性的读写权限来让它工作。
转到应用程序客户端页面,向下到底部,您将看到一个链接,其中说明设置属性读取和写入权限。当您单击它时,将出现一个新的 UI。为您的自定义属性单击读取和写入,然后 SAML 将有权进入那里。
【讨论】:
以上是关于如何将 AD FS 组成员身份映射到自定义 AWS Cognito 属性?的主要内容,如果未能解决你的问题,请参考以下文章
使用 AWS Cognito 和 AD FS 作为 Web 应用程序的身份验证
如何使用适用于AWS Cognito的AD FS SAML?
如何继续使用适用于 AWS Cognito 的 AD FS SAML?