如何从Websphere UserRegistry获取用户详细信息

时间:2013-07-17 15:21:16

标签: java websphere

如何使用在WebSphere服务器中配置的LDAP注册表登录应用程序后从AD获取用户的其他详细信息。我有Java EE应用程序,它使用单点登录。我想获取其他详细信息,如电子邮件,在Active Directory中配置的用户的办公地点。我怎么做到的?

        // Retrieves the default InitialContext for this server.
        javax.naming.InitialContext ctx = new javax.naming.InitialContext();

        // Retrieves the local UserRegistry object.
        com.ibm.websphere.security.UserRegistry reg = (com.ibm.websphere.security.UserRegistry) ctx
                .lookup("UserRegistry");

从这个注册表中,是否有机会获得它?

2 个答案:

答案 0 :(得分:2)

在WebSphere Application Server中,您可以访问用户注册表信息 - 并通过Virtual Member Manager组件及其API进行修改。

IBM Infocenter上有大量文档和示例。从那里,代码片段获取像用户一样的实体属性:

DataObject root = SDOHelper.createRootDataObject();
DataObject entity = SDOHelper.createEntityDataObject(root, null, DO_PERSON_ACCOUNT);
entity.createDataObject(DO_IDENTIFIER).set(PROP_UNIQUE_NAME, 
                             "uid=SalesManager,cn=users,dc=yourco,dc=com");
DataObject propCtrl = SDOHelper.createControlDataObject(root, null, DO_PROPERTY_CONTROL);           
propCtrl.getList(PROP_PROPERTIES).add("sn");
propCtrl.getList(PROP_PROPERTIES).add("uid");
propCtrl.getList(PROP_PROPERTIES).add("cn");
propCtrl.getList(PROP_PROPERTIES).add("telephoneNumber");
propCtrl.getList(PROP_PROPERTIES).add("createTimestamp");

root = service.get(root);

要获取与注册表通信的服务实例,首先需要执行API的Programming Prerequisites。我强烈建议您查看Infocenter文档。

答案 1 :(得分:0)

我写了一篇关于这个问题的文章:

http://veithen.github.io/2012/12/13/retrieving-custom-user-attributes-from.html

请注意,结论与Carlos所写的内容兼容:您必须使用VMM。