首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用WSO2更新单个用户组,而不使用修补程序/组,因为当用户计数较高时会导致超时?

如何使用WSO2更新单个用户组,而不使用修补程序/组,因为当用户计数较高时会导致超时?
EN

Stack Overflow用户
提问于 2021-01-25 15:16:55
回答 1查看 441关注 0票数 0

我们使用WSO2 SCIM为用户定义角色并对其进行更新。对于角色更新操作,我们目前正在添加新的用户角色(使用SCIM将用户添加到新的角色组),然后删除现有的用户角色(调用一个组下的用户请求,从列表中删除现有用户,并使用新创建的列表作为正文参数来调用该组的SCIM 修补程序请求)。通过这种方法,我们能够更新角色。但随着用户数的增加,修补程序操作的上述方法出现超时错误(新角色被更新为用户,但当第二个api失败时,现有角色仍然存在)。

下面是我尝试过的一个解决方案:

添加新角色,删除用户详细信息中新创建的角色,并使用更新的用户角色调用修补程序api。但是经过进一步的研究发现,用户内部的角色是只读的,不能使用补丁/put操作进行更新。所以我没能找到合适的解决方案。

有没有一种方法可以在不使用修补程序/Groups端点的情况下更新组内单个用户的角色?

EN

回答 1

Stack Overflow用户

发布于 2021-01-26 21:32:54

正如我在答案https://stackoverflow.com/a/64225419/10055162中提到的,SCIM规范不允许使用PATCH /Users/{userId}更新用户的组属性。

此外,当组成员计数过高时,PATCH /Groups/{groupId}可能会导致性能问题。

WSO2在一定程度上提高了PATCH /Groups/{groupId}的性能。

  1. https://github.com/wso2/product-is/issues/6918 -可用5.10.0 onwards
  2. https://github.com/wso2/product-is/issues/9120 -可提供5.11.0起

因此,如果您使用的是一个旧版本的IS,请您尝试使用最新的GA版本(5.11.0)。它可以提高性能。

更新:

您可以使用SCIM POST /Bulk端点通过单个REST调用更新用户组,而不是使用多个PATCH /Groups/{group-id}调用。有关大容量端点的详细信息,请参阅https://anuradha-15.medium.com/scim-2-0-bulk-operation-support-in-wso2-identity-server-5-10-0-8041577a4fe3

示例:若要将两个组(Group1和Group2)分配给用户,请使用类似于以下内容的有效负载执行POST https://<host>:<port>/scim2/Bulk

代码语言:javascript
运行
复制
{
    "Operations": [
        {
            "data": {
                "Operations": [
                    {
                        "op": "add",
                        "value": {
                            "members": [
                                {
                                    "display": "anuradha",
                                    "value": "db15b161-a205-454d-9da1-4a2a0df0585e"
                                }
                            ]
                        }
                    }
                ]
            },
            "method": "PATCH",
            "path": "/Groups/f707b6cc-91f8-4b8a-97fb-a01c2a79515c"
        },
        {
            "data": {
                "Operations": [
                    {
                        "op": "add",
                        "value": {
                            "members": [
                                {
                                    "display": "anuradha",
                                    "value": "db15b161-a205-454d-9da1-4a2a0df0585e"
                                }
                            ]
                        }
                    }
                ]
            },
            "method": "PATCH",
            "path": "/Groups/8c91215f-1b7a-4cdb-87d9-ae29c60d70de"
        }
    ],
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:BulkRequest"
    ]
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65887494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档