1

使用 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");

从这个注册表中,有机会得到它吗?

4

2 回答 2

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 的编程先决条件。我强烈建议您查看 Infocenter 文档。

于 2013-07-17T15:45:50.693 回答
0

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

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

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

于 2013-07-22T17:58:17.217 回答