Java 请参阅当前连接的Ldap用户的属性

Java 请参阅当前连接的Ldap用户的属性,java,ldap,jndi,Java,Ldap,Jndi,我作为Bob连接到LDAP服务器: Hashtable props = new Hashtable(); props.put(Context.SECURITY_PRINCIPAL, "cn=Bob,cn=Users,dc=myCompany,dc=com"); props.put(Context.SECURITY_CREDENTIALS, "Password1"); props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.Lda

我作为Bob连接到LDAP服务器:

Hashtable props = new Hashtable();
props.put(Context.SECURITY_PRINCIPAL, "cn=Bob,cn=Users,dc=myCompany,dc=com");
props.put(Context.SECURITY_CREDENTIALS, "Password1");
props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
props.put(Context.PROVIDER_URL, url);
InitialLdapContext context = new InitialLdapContext(props, null);
现在我想看看鲍勃的名字和电子邮件地址

我希望在上下文中找到一个方法来返回当前连接用户的属性,但我找不到

Bob没有搜索目录的权限,因此我无法在连接后使用context.search

有没有一种方法可以获取这些属性,而无需再次调用LDAP服务器,或者先作为其他人连接?

您需要使用“whoami”扩展操作,OID=1.3.6.1.4.1.4203.1.11.3。您需要为自己编写一个ExtendedRequest和ExtendedResponse类,因为我不能发布我的类,但它很简单,使用方法如下:

WhoAmIExtendedResponse  response = (WhoAmIExtendedResponse)context.extendedOperation(new WhoAmIExtendedRequest());
然后从响应中获取authZId。这是当前用户的DN,前缀为DN:。然后通过context.getAttributes获取他的属性