AWS Cognito - 从 ADFS 创建组作为 Cognito 组

Tob*_*and 6 adfs user-management saml openid-connect amazon-cognito

应用程序通过 Open ID Connect 协议与AWS Cognito 进行通信,AWS Cognito连接到ADFS,通过 SAML 进行通信。Cognito 本质上是“代理”ADFS 服务器。

ADFS 拥有应用程序所需的组映射,我想将这些组作为实际的 Cognito 组导入 Cognito - 然后应用程序将从cognito:groupsCognito 提供的 ID 令牌中读取该组。

在 AWS Cognito 用户池设置中,我没有看到将 ADFS 组映射到 Cognito 组的方法——我必须绝对依赖我的用户池的自定义属性,我可以映射到 ADFS 属性,还是我错过了一些允许 Cognito 动态创建新组并自动将用户分配到 Cognito 中的组的配置?

编辑:澄清一下是否可以设置 Cognito 在导入用户时添加/创建组(不是作为自定义属性,而是实际可管理的认知组)?

tib*_*bor 3

我遇到了同样的问题,而且我也没有在 Cognito 中找到静态映射选项。

我看到的唯一方法是将 AD 组映射到 Cognito 中的 custom:adgroups 属性,并设置 Cognito“预令牌生成”lambda 触发器。lambda 读取 custom:adgroups 的值并手动覆盖用户的 Cognito 组。

注意 - 这不会永久更改认知用户的组,仅适用于当前会话,但从应用程序的角度来看,这正是我所需要的。

请在此处查看虚拟静态(无条件)ADMIN 组分配示例:

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
Run Code Online (Sandbox Code Playgroud)

此处更详细的文档:https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-pre-token- Generation.html