openam rest api json / users /?_ fields = ismemberof属性不显示更新的结果

时间:2015-02-12 11:39:00

标签: openam

使用openam 12.0.0.0发现openam的一个问题,使用api检索当前登录的组信息

      "/json/users/username/?_fields=ismemberof"

情形:

我通过从openam控制台添加用户属性“ismemberof”尝试了这个rest api。

之后我使用restapi检索当前登录用户的组信息“/ json / users / username /?_ fields = ismemberof”

让我回复:

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服务器,以获得原始响应。

当我使用活动目录工作室连接到我的LDAP数据存储时,我可以看到针对用户更新的值为ismemberof这是一个虚拟属性,但是当我点击curl时,响应只是旧缓存的一个。

1 个答案:

答案 0 :(得分:0)

取决于使用的设置和数据存储,OpenAM缓存用户身份的属性。通过使用持久搜索或通知更改控制(AD),缓存与真实LDAP服务器保持同步。

如果您的LDAP服务器不支持持久搜索控制或您不允许通知更改控制,则缓存不会变脏,因此OpenAM将返回身份属性的过期值' isMemberOf'