如何使用 WSO2 SCIM 2.0 REST API 更新单个用户的组?

How to update a single user's groups with WSO2 SCIM 2.0 REST API?

我正在尝试用一组全新的组替换单个用户的组。我可以使用 https://docs.wso2.com/display/IS570/apidocs/SCIM2-endpoints/#!/operations#GroupsEndpoint#patchGroup API.

将用户添加到组并从组中删除用户

但是,我想用一个新数组完全替换这些组,这样我就不必从每个组中单独 add/remove 用户。我尝试使用以下请求

POST {url}/scim2/Users/{groupID}

具有以下 POST 正文

{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:PatchOp"
    ],
    "Operations": [
        {
            "op": "replace",
            "value": {
                "groups": [
                    {
                        "display": "group1",
                        "value": "092555e8-1636-4642-924e-27aef49757fe"
                    },
                    {
                        "display": "group2",
                        "value": "b0d42429-67e2-4447-9846-2b001add431f"
                    }
                ]
            }
        }
    ]
}

然而,返回的响应是

{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:Error"
    ],
    "detail": "Error in performing the add operation",
    "status": "500"
}

我怎样才能做到这一点?

POST {url}/scim2/Users/{groupID} 这样的端点不存在。您可能必须坚持使用 /Groups PATCH 操作来添加或删除用户的角色。 (在这种情况下以编程方式迭代请求。)

POST {url}/scim2/Users/{groupID} 请求将无效,因为没有这样的端点。我认为您试图通过补丁操作替换用户资源的 groups 属性。如果是这样,请求将是 PATCH {url}/scim2/Users/{userId}。 但是,由于以下原因,这不起作用。

  1. 根据 SCIM 规范(参见 https://www.rfc-editor.org/rfc/rfc7643#section-4.1.2 中的组描述)用户的组属性应使用 /Groups 端点进行管理。

    直接组成员资格表示用户与组直接关联,应该表示客户端可以通过“组”资源修改成员资格

  2. 此外,用户资源的组属性也是 ReadOnly 属性。因此,无法使用 PATCH /User 端点对其进行修改。 (https://www.rfc-editor.org/rfc/rfc7643#section-8.7.1) Schema definition in WSO2 IS: https://github.com/wso2/charon/blob/f5229c1ed55548d74b833e1a04656ac695899d9b/modules/charon-core/src/main/java/org/wso2/charon3/core/schema/SCIMSchemaDefinitions.java#L791

因此您必须使用 PATCH /Groups 端点来修改用户的组详细信息。