【问题标题】:How to handle PUT of a group resource in SCIM? What happens with members?如何处理 SCIM 中组资源的 PUT?会员怎么办?
【发布时间】:2020-12-17 11:53:00
【问题描述】:

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

确切地说,如果我们收到一个 PUT 的 body 是这样的:

{
  "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

【问题讨论】:

    标签: scim scim2


    【解决方案1】:

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

    你提到:

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

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

    【讨论】:

    • 这非常有帮助。将向我们的客户提出建议。你有 LTC 钱包/贝宝账户吗?我可以给你寄几美元作为小费吗?
    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 1970-01-01
    • 2021-05-20
    • 2013-12-28
    • 1970-01-01
    • 2020-11-24
    • 2011-05-05
    • 1970-01-01
    相关资源
    最近更新 更多