openam rest api json/users/?_fields=ismemberof 属性不显示更新结果
openam rest api json/users/?_fields=ismemberof attribute does not show updated result
使用 openam 12.0.0.0 发现 openam 有一个问题,使用 api
检索当前登录的组信息
"/json/users/username/?_fields=ismemberof"
场景:
我已经通过从 openam 控制台添加用户属性“ismemberof”来尝试使用此 rest api。
在我使用 restapi "/json/users/username/?_fields=ismemberof"
检索当前登录用户的组信息之后
哪个 return 我这个:
curl --header"iPlanetDirectoryPro:AQIC5wM2LY4SfczExeheltxgjSN7wrCR5XhfEGF5kj6t6C4.*AAJTSQACMDEAAlNLABQtMzQ0NzM3MDc3MzE1MjMwNjEwOQ..*" http://openam.server:8080/openam/json/users/indrani?_fields=ismemberof
输出:
{"ismemberof":["cn=grp1,ou=groups,o=openam","cn=grp2,ou=groups,o=openam"]}
一段时间后,我从 grp1 中删除了我的用户并从 openam 控制台保存
即,现在当前用户只有一个组,即 grp2
再次使用 curl 命令获取当前用户的组列表:
curl --header"iPlanetDirectoryPro:AQIC5wM2LY4SfczExeheltxgjSN7wrCR5XhfEGF5kj6t6C4.*AAJTSQACMDEAAlNLABQtMzQ0NzM3MDc3MzE1MjMwNjEwOQ..*" http://openam.server:8080/openam/json/users/indrani?_fields=ismemberof
输出:
{"ismemberof":["cn=grp1,ou=groups,o=openam","cn=grp2,ou=groups,o=openam"]}
问题是它对两组的响应相同,
即使当前用户也只有一组。即它给出旧的响应
如果我重新启动 openam 服务器,这个问题就解决了,我会得到预期的结果。
{"ismemberof":["cn=grp2,ou=groups,o=openam"]}
不需要重新启动 openam 服务器,以获得原始响应。
当我使用 Active Directory Studio 连接到我的 LDAP 数据存储时,我可以看到针对 ismemberof 的用户更新的值,这是一个虚拟属性,但是当我点击 curl 响应时,只有旧的缓存响应。
根据使用的设置和数据存储,OpenAM 缓存用户身份的属性。通过使用持久搜索或通知更改控制 (AD),缓存与真实 LDAP 服务器保持同步。
如果您的 LDAP 服务器不支持持久搜索控制,或者您不允许通知更改控制,则无法弄脏缓存,因此 OpenAM 将 return 身份属性的过时值 'isMemberOf'
使用 openam 12.0.0.0 发现 openam 有一个问题,使用 api
检索当前登录的组信息 "/json/users/username/?_fields=ismemberof"
场景:
我已经通过从 openam 控制台添加用户属性“ismemberof”来尝试使用此 rest api。
在我使用 restapi "/json/users/username/?_fields=ismemberof"
检索当前登录用户的组信息之后哪个 return 我这个:
curl --header"iPlanetDirectoryPro:AQIC5wM2LY4SfczExeheltxgjSN7wrCR5XhfEGF5kj6t6C4.*AAJTSQACMDEAAlNLABQtMzQ0NzM3MDc3MzE1MjMwNjEwOQ..*" http://openam.server:8080/openam/json/users/indrani?_fields=ismemberof
输出:
{"ismemberof":["cn=grp1,ou=groups,o=openam","cn=grp2,ou=groups,o=openam"]}
一段时间后,我从 grp1 中删除了我的用户并从 openam 控制台保存 即,现在当前用户只有一个组,即 grp2
再次使用 curl 命令获取当前用户的组列表:
curl --header"iPlanetDirectoryPro:AQIC5wM2LY4SfczExeheltxgjSN7wrCR5XhfEGF5kj6t6C4.*AAJTSQACMDEAAlNLABQtMzQ0NzM3MDc3MzE1MjMwNjEwOQ..*" http://openam.server:8080/openam/json/users/indrani?_fields=ismemberof
输出:
{"ismemberof":["cn=grp1,ou=groups,o=openam","cn=grp2,ou=groups,o=openam"]}
问题是它对两组的响应相同, 即使当前用户也只有一组。即它给出旧的响应
如果我重新启动 openam 服务器,这个问题就解决了,我会得到预期的结果。
{"ismemberof":["cn=grp2,ou=groups,o=openam"]}
不需要重新启动 openam 服务器,以获得原始响应。
当我使用 Active Directory Studio 连接到我的 LDAP 数据存储时,我可以看到针对 ismemberof 的用户更新的值,这是一个虚拟属性,但是当我点击 curl 响应时,只有旧的缓存响应。
根据使用的设置和数据存储,OpenAM 缓存用户身份的属性。通过使用持久搜索或通知更改控制 (AD),缓存与真实 LDAP 服务器保持同步。
如果您的 LDAP 服务器不支持持久搜索控制,或者您不允许通知更改控制,则无法弄脏缓存,因此 OpenAM 将 return 身份属性的过时值 'isMemberOf'