如何在 SCIM 中处理组资源的 PUT?会员怎么办?

How to handle PUT of a group resource in SCIM? What happens with members?

我们在生产中有一个 SCIM api 运行,我们 运行 遇到了 Group PUT 的问题。 我已经扫描了官方 SCIM 规范,但我无法找到这个问题的答案 - 当使用具有 members: [...]?

的有效负载调用 Group PUT 时应该发生什么

绝对准确地说,如果我们收到一个正文如下的 PUT:

{
  "schemas": [
    "urn:ietf:params:scim:schemas:core:2.0:Group"
  ],
  "externalId": "8a06f2c2-aaaa-401b-b2b6-f54e5dac6f34",
  "id": "7447",
  "displayName": "Whatever",
  "members": [
    {
      "value": "322257"
    }
  ],
  "meta": {
    "resourceType": "Group"
  }

因为这是一个 PUT,我们从该组中删除所有成员,然后在单个数据库事务中将用户 322257 添加到该组。这个对吗? PUT 应该替换所有 SCIM 属性,所以我希望它是,但是从 Azure 云 SCIM 调用我们这边来看,我们似乎不应该删除这里的成员?也许我们应该保留当前成员,只添加用户 322257?

您的解释是正确的 - 您提供的 PUT 请求应该删除所有组成员并仅添加 322257 作为成员。虽然 SCIM RFC 要求您需要支持 PUT,但实际上只有 POST + PATCH 应该分别用于 create/update。

您提到:

but from what Azure cloud SCIM calls to our side it might seem like maybe we should not remove members here?

Azure AD 的 SCIM 服务发出 PUT 调用的唯一方法是,如果库中启用了配置的应用程序已配置为使用 PUT 而不是 PATCH。此时,为 Azure AD 构建的任何新配置集成都需要对组的 PATCH 支持,并且永远不会看到 PUT 使用。如果您的应用程序仍配置为对组使用 PUT,则应从 Microsoft 方面更新该应用程序以更新该行为,假设另一端的 SCIM 实现支持对组进行 PATCH。