如何使用JNDI在java中强制LDAP bindRequest?

如何使用JNDI在java中强制LDAP bindRequest?,java,authentication,ldap,bind,jndi,Java,Authentication,Ldap,Bind,Jndi,我有一个到LDAP服务器(本例中为Active Directory)的JNDI连接。我还ctx.extendedOperation(new StartTlsRequest())以获得安全连接 在此连接上,我需要验证凭据。我可以使用 ctx.addToEnvironment( Context.SECURITY_AUTHENTICATION, "simple" ); ctx.addToEnvironment( Context.SECURITY_PRINCIPAL, principal ); ctx.

我有一个到LDAP服务器(本例中为Active Directory)的JNDI连接。我还
ctx.extendedOperation(new StartTlsRequest())
以获得安全连接

在此连接上,我需要验证凭据。我可以使用

ctx.addToEnvironment( Context.SECURITY_AUTHENTICATION, "simple" );
ctx.addToEnvironment( Context.SECURITY_PRINCIPAL, principal );
ctx.addToEnvironment( Context.SECURITY_CREDENTIALS, credentials );
但是,“bindRequest”命令仅在对JNDI上下文执行下一个操作时通过ldap发出。但我不想和它有任何关系。我只需要检查一下证件。有没有办法强制执行“绑定请求”

否则,我应该将操作用作我自己的NOP吗?搜索一个不存在的对象,或者我应该查询某个存在的对象的某些属性,还是。。。?它需要快速,不应该在服务器端创建任何工作,并且应该使用尽可能少的带宽。(因为事实上,行动从一开始就不是必要的…)

问候,,
Steffen

据我所知,解决方案只是在目录中查找主体,使用如下过滤器进行搜索:

(&(objectCategory=person)(sAMAccountName=principal))
如果主体的格式为:“user1”


如果委托人的格式为:user1@dom.fr“

据我所知,解决方案只是在目录中查找主体,使用如下筛选器进行搜索:

(&(objectCategory=person)(sAMAccountName=principal))
如果主体的格式为:“user1”


如果委托人的格式为:user1@dom.fr“

对于禁止操作的操作,您只需搜索。应该在服务器的内存中。如果您有权访问绑定请求和响应,则可以在绑定请求中包含授权标识请求控件。如果服务器支持此请求控制(在这种情况下,它将列在根DSE中),则服务器将在绑定响应中包含授权标识响应控制。该响应控件将是连接的身份验证标识。

对于禁止操作操作,您只需搜索。应该在服务器的内存中。如果您有权访问绑定请求和响应,则可以在绑定请求中包含授权标识请求控件。如果服务器支持此请求控制(在这种情况下,它将列在根DSE中),则服务器将在绑定响应中包含授权标识响应控制。该响应控件将是连接的身份验证标识。

LdapContext.reconnect()执行LDAP绑定。

正是我想要的。非常感谢。这正是我想要的。谢谢。