我编写了一个符合 SCIM 标准的应用程序(https://www.rfc-editor.org/rfc/rfc7644 ),但是与 Azure 集成,我可以看到如果禁用它,它无法更新用户,该请求Azure 发送如下:
PATCH /Users/:id
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "Replace",
"path": "active",
"value": "False"
}
]
}
Run Code Online (Sandbox Code Playgroud)
SCIM 协议“说”该属性active
接受布尔值(https://www.rfc-editor.org/rfc/rfc7643#section-4.1.1),因此遵循 PATCH 协议(https://www.rfc- editor.org/rfc/rfc6902#section-4.3)我期望一个布尔值而不是一个内部写入布尔值的字符串,因此预期的请求如下:
PATCH /Users/:id
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "Replace",
"path": "active",
"value": false
}
]
}
Run Code Online (Sandbox Code Playgroud)
所以问题是给定的值"False"
应该是false
。
这是 Azure 的错误还是我错过了什么?如果这是一个错误,我应该尝试解析字符串并最终提取布尔值吗?但如果我这样做,我就会超出标准。你是如何解决这个问题的?
我还花了很多时间试图弄清楚 Azure 是否符合 SCIM 规范,答案是不符合。
它们为 PATCH 请求发送的默认值确实是字符串,而不是User
JSON 模式定义的布尔值。
您可以通过以下方式覆盖发送/映射到 SCIM 架构中的值:
Synchronize Azure Active Directory Users to customappsso
(此处的名称可能与您的目录中的名称不同)Switch([IsSoftDeleted], "False", "True", "True", "False")
Switch([IsSoftDeleted], , false, true, true, false)
(注意附加逗号。)请注意,保存后仍然会看到布尔值周围的引号,但 PATCH 请求将被正确发送。
归档时间: |
|
查看次数: |
1626 次 |
最近记录: |