应用程序通过开放式ID连接协议与AWS Cognito进行通信,该协议连接到ADFS,通过SAML进行通信。Cognito本质上是“代理”ADFS服务器。
ADFS拥有应用程序所需的组映射,我想将这些组作为实际的Cognito组导入到Cognito中-然后应用程序将从cognito:groups中从Cognito提供的ID-token读取这些组。
在AWS Cognito用户池设置中,我看不到一种将ADFS组映射到Cognito组的方法-我必须绝对依赖于我的用户池的自定义属性,我可以映射到ADFS-property,或者我是否遗漏了允许Cognito动态创建新组并自动将用户分配到Cognito中的组的配置部分?
:为了澄清,在导入用户时,是否可以设置Cognito来添加/创建组(不是作为自定义属性,而是实际可管理的认知组)?
发布于 2019-12-11 00:13:42
我也遇到了同样的问题,而且我也没有在Cognito中找到静态映射选项。
我看到的唯一方法是将AD组映射到Cognito中的custom:adgroups属性,并设置Cognito“预令牌生成”lambda触发器。lambda读取custom:adgroups的值,并手动覆盖用户的Cognito组。
注意--这并不会永久地改变认知用户组,只是在当前会话中,但从应用程序的角度来看,这正是我所需要的。
请参阅此处的虚拟静态(非条件)管理员组分配示例:
def lambda_handler(event, context):
print(f'incoming event: {json.dumps(event)}')
# manual cognito group override
if event['triggerSource'] == "TokenGeneration_HostedAuth":
event['response'] = {
"claimsOverrideDetails": {
"groupOverrideDetails": {
"groupsToOverride": [
"ADMIN"
]
}
}
}
return event更详细的文档在这里:https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token-generation.html
发布于 2022-02-21 13:33:49
您可以使用Post authentication Lambda trigger根据AD中的组更新Cognito User Pool中的用户组吗?您可以使用API:AdminAddUserToGroup和AdminRemoveUserFromGroup。这种方法的唯一问题是,如果您在AD中更改了用户组,那么在用户再次向Cognito进行身份验证之前,它不会在Cognito中更新。
发布于 2019-03-20 04:10:35
this link中记录了如何使用Cognito设置ADFS。回答您问题的部分是第4步第5项中的映射。我将相关文本复制到下面:
Choose Attribute mapping. These mappings map the claims from the SAML assertion from AD FS to the user pool attributes.
确保ADFS正在发送断言中的组。对于设置组的ADFS端,this link可能很有用。
你可以在火狐中使用SAML-tracer插件来调试这个流程。
https://stackoverflow.com/questions/55240196
复制相似问题