Azure User/Group 配置布尔值的 SCIM 问题
Azure User/Group provisioning with SCIM problem with boolean values
我已经编写了一个符合 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"
}
]
}
属性 active
接受布尔值 (https://www.rfc-editor.org/rfc/rfc7643#section-4.1.1), so following the PATCH protocol (https://www.rfc-editor.org/rfc/rfc6902#section-4.3) 的 SCIM 协议“sais” 我期望一个布尔值而不是一个在其中写入布尔值的字符串,因此预期的请求是以下:
PATCH /Users/:id
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "Replace",
"path": "active",
"value": false
}
]
}
所以问题是给定的值"False"
应该是false
.
这是 Azure 的错误还是我遗漏了什么?如果它是一个错误,我应该尝试解析字符串并最终提取一个布尔值吗?但如果我那样做,我就会不合标准。你是如何解决这个问题的?
我也花了很多时间试图弄清楚 Azure 是否符合 SCIM 规范,答案是不符合。
他们为 PATCH 请求发送的默认值确实是字符串,而不是 User
JSON 模式定义的布尔值。
您可以通过以下方式覆盖 send/mapped 进入 SCIM 模式的值:
- 进入您的配置应用程序
- 映射 >
Synchronize Azure Active Directory Users to customappsso
(此处的名称在您的目录中可能不同)
- 查找
Switch([IsSoftDeleted], "False", "True", "True", "False")
- 替换为
Switch([IsSoftDeleted], false, true, true, false)
- 点击确定并保存
请注意,保存后它仍会看到布尔值周围的引号,但 PATCH 请求将被正确发送。
查看截图以供参考
我已经编写了一个符合 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"
}
]
}
属性 active
接受布尔值 (https://www.rfc-editor.org/rfc/rfc7643#section-4.1.1), so following the PATCH protocol (https://www.rfc-editor.org/rfc/rfc6902#section-4.3) 的 SCIM 协议“sais” 我期望一个布尔值而不是一个在其中写入布尔值的字符串,因此预期的请求是以下:
PATCH /Users/:id
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "Replace",
"path": "active",
"value": false
}
]
}
所以问题是给定的值"False"
应该是false
.
这是 Azure 的错误还是我遗漏了什么?如果它是一个错误,我应该尝试解析字符串并最终提取一个布尔值吗?但如果我那样做,我就会不合标准。你是如何解决这个问题的?
我也花了很多时间试图弄清楚 Azure 是否符合 SCIM 规范,答案是不符合。
他们为 PATCH 请求发送的默认值确实是字符串,而不是 User
JSON 模式定义的布尔值。
您可以通过以下方式覆盖 send/mapped 进入 SCIM 模式的值:
- 进入您的配置应用程序
- 映射 >
Synchronize Azure Active Directory Users to customappsso
(此处的名称在您的目录中可能不同) - 查找
Switch([IsSoftDeleted], "False", "True", "True", "False")
- 替换为
Switch([IsSoftDeleted], false, true, true, false)
- 点击确定并保存
请注意,保存后它仍会看到布尔值周围的引号,但 PATCH 请求将被正确发送。
查看截图以供参考