我正在尝试向我的用户个人资料添加自定义布尔声明。我在http://wso2.org/oidc/claim方言中添加了声明,然后在http://wso2.org/claims中添加了必要的映射,并默认支持声明。我想在该自定义声明中存储布尔值(true / false)。一旦我打开一些身份,我就会看到该声明的空白值。如果我存储值“true”并保存配置文件,我会收到一个勾选复选框。如果我然后去更新同一身份的其他字段并单击save,则保留布尔值,我仍然看到带有tick的复选框(表示“true”值)。然后我决定取消选中我的自定义布尔声明的值,以便存储声明的“false”值。但是一旦我点击“保存”按钮,我就不再看到空的复选框(我希望它代表“假”值)。相反,我看到一个期望值的空白字段。此时,如果我尝试调用用户信息端点,我不会检索上述自定义声明。为了接收它的假值,我需要转到提到的身份,明确键入“false”并保存身份。之后,我收到该声明的“虚假”值。然后,如果由于某种原因有人追踪我并更新身份的另一部分,我的自定义声明的“虚假”值将丢失,我陷入以前的情况,我无法获得自定义声明的值,因为它没有定义。
我使用“账户锁定”声明,我无法通过此声明观察此类行为。我想因为它是一种特殊的,因为身份管理使用它
有办法解决这种情况吗?目前我将声明设为“必需”,并且您无法使用该声明的空值保存身份(通过IS管理控制台)。
当涉及到WSO2 IS 5.0.0中的布尔声明时,这是预期的行为吗?
答案 0 :(得分:0)
这是预期的行为。声明可以具有任何值(数字,布尔值,文本等),因此Identity Server无法识别声明的数据类型。然而,布尔值的处理方式略有不同。最初添加声明时,它将显示为文本框,因为IS无法确定数据类型。保存用户配置文件后,添加“true”或“false”作为文本框的值(第一次),然后内部IS将此声明标识为布尔值。从那时起,它将显示为UI中的复选框。