我有一个到LDAP服务器的JNDI连接(在这种情况下是Active Directory)。我也ctx.extendedOperation( new StartTlsRequest() )
获得安全连接。
在此连接上,我需要验证凭据。我可以使用
登录ctx.addToEnvironment( Context.SECURITY_AUTHENTICATION, "simple" );
ctx.addToEnvironment( Context.SECURITY_PRINCIPAL, principal );
ctx.addToEnvironment( Context.SECURITY_CREDENTIALS, credentials );
然而,只有在对JNDI上下文执行的下一个操作时,才会通过ldap发出“bindRequest”命令。然而我没有什么可以做的。我只需要查看凭据。有没有办法强制执行“bindRequest”?
否则,我应该将动作用作我自己的NOP吗?搜索不存在的对象或者我应该查询某个存在的对象的某些属性还是......?它需要很快,它不应该在服务器端创建任何工作,它应该使用尽可能少的带宽。 (因为实际上行动永远不应该是首要的......)
此致 斯特芬
答案 0 :(得分:1)
LdapContext.reconnect()执行LDAP绑定。
答案 1 :(得分:0)
据我所知,解决方案只是在目录中查找主体,使用以下过滤器进行搜索:
(&(objectCategory=person)(sAMAccountName=principal))
如果本人的格式为:“user1”
(&(objectCategory=person)(userPrincipalName=principal))
如果委托人的格式为:“user1@dom.fr”
答案 2 :(得分:0)
对于您的NO-OP操作,您只需搜索root DSE即可。那应该在服务器的内存中。如果您有权访问BIND请求和响应,则可以在BIND请求中包含授权标识请求控件。如果服务器支持此请求控制(在这种情况下,它将在根DSE中列出),则服务器将在BIND响应中包含授权标识响应控制。该响应控件将是连接的身份验证标识。