0

我们有一个在生产中运行的 SCIM api,我们遇到了 Group PUT 的问题。我已经扫描了官方 SCIM 规范,但我无法找到答案——当使用具有 的有效负载调用 Group PUT 时会发生什么members: [...]

确切地说,如果我们收到一个带有如下正文的 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

4

1 回答 1

1

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

你提到:

但是从 Azure 云 SCIM 对我们的要求来看,我们似乎不应该在这里删除成员?

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

于 2020-12-18T01:05:29.690 回答