AWS Cognito-从ADFS创建组

时间:2019-03-19 11:40:28

标签: amazon-cognito saml openid-connect adfs user-management

一个应用程序正在与AWS Cognito(通过Open ID Connect协议)进行通信,后者已连接到ADFS(通过SAML进行通信)。 Cognito本质上是在“代理” ADFS服务器。

ADFS包含应用程序所需的组映射,我想在应用程序中显示这些组(由ID令牌中的cognito:groups属性检索。

在AWS Cognito用户池设置中,我看不到将ADFS组映射到Cognito组的方法-我需要依靠我的用户池的自定义属性来映射到ADFS属性,还是我是否缺少一些配置,这些配置允许Cognito动态创建新组并自动将用户分配给Cognito中的组?

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

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并且在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

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

答案 1 :(得分:-1)

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正在发送断言中的组。为组this link设置ADFS端可能会很有用。

您可以在Firefox中使用SAML-tracer插件调试流。