如何在 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。
我们在生产中有一个 SCIM api 运行,我们 运行 遇到了 Group PUT 的问题。
我已经扫描了官方 SCIM 规范,但我无法找到这个问题的答案 - 当使用具有 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
?
您的解释是正确的 - 您提供的 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。