如何在LDAP中获取当前登录用户信息

时间:2015-07-09 18:44:01

标签: java ldap

通过LDAP验证用户后,请参阅http://docs.oracle.com/javase/jndi/tutorial/ldap/security/src/Simple.java,我需要检索用户的DN。我尝试了这个,但它返回一个空字符串。

LdapContext ctx = new InitialLdapContext(env, null);
ctx.getNameInNamespace();

我可以使用搜索功能查找用户。但是,这似乎不是一个好方法,因为a)它很慢,b)它可能在另一个OU中有重复的用户名。

ctx.search("DC=example,DC=org", "(&(objectClass=user)(cn=abc))", null);

我无法找到任何相关的例子。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

目前没有用户'在LDAP应用程序中。 LDAP用于通过LDAP'绑定'来验证用户。操作,但随后应用程序与LDAP断开连接,之后没有当前用户。你必须记住你用来做绑定的用户。

答案 1 :(得分:0)

  

通过LDAP验证用户后,请参阅http://docs.oracle.com/javase/jndi/tutorial/ldap/security/src/Simple.java,我需要检索用户的DN。

如果我理解您的权利,您想要的用户DN是否与经过身份验证的用户相同?

此用户DN在示例中用作Context.SECURITY_PRINCIPALcn=S. User, ou=NewHires, o=JNDITutorial

答案 2 :(得分:0)

我们设置了一个示例“BasicAdminSearchBind.java”,我们以具有可以查看所有其他条目的权限的用户身份执行搜索。这将返回与提供的过滤器匹配的所有用户。

您可以使用

sr.getNameInNamespace()

获取返回的搜索结果条目的专有名称。

相关问题