我有一个复杂的 SCIM 属性,如下所示:
"myattr1": {
"subattr1": 5,
"subattr2": [1, 2, 3]
}
我想将其修改为
"myattr1": {
"subattr1": 5,
"subattr2": [1, 3]
}
如何使用 PATCH 做到这一点?我应该替换整个子属性还是可以使用 PATCH 从中删除值 2 ?
我知道如何使用多值属性来做到这一点。但我不知道如何为子属性做这件事。
[编辑:这是错误的..]
我相信这会奏效:
PATCH /resource/id
{ "schemas":
["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations":[
{
"op":"remove",
"path":"myattr1[subattr2 eq \"2\"]"
}
]
}
路径示例取自https://datatracker.ietf.org/doc/html/rfc7644#page-33,其中提到“路径”:“成员 [值 eq”2819c223-7f76-453a-919d-413861904646”]。 displayName”作为针对复杂多值组属性“members”的 displayName 子属性的一种方式。
如果它是一个字符串,则 2 周围的转义引号是必要的 - 如果该值实际上是一个整数,则它们不是必需的。
根据 PingIdentity 文档https://github.com/pingidentity/scim2/wiki/Working-with-SCIM-paths#the-value-sub-attribute,简单的多值属性具有称为“值”的特殊隐式子属性。如果是这样,您的 PATCH 请求有效负载应如下所示。
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "remove",
"path": "myattr1.subattr2[value eq \"2\"]"
}
]
}
但是,这种类型的补丁操作在 RFC 7644 ( https://datatracker.ietf.org/doc/html/rfc7644#section-3.5.2 )中没有明确定义
如果在 SCIM 邮件列表https://mailarchive.ietf.org/arch/browse/scim/中提出问题,您将能够确认这一点