[英]How can I enforce a LDAP bindRequest in java using JNDI?
我有到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发出。 但是,我对此无能为力。 我只需要检查凭据。 有什么方法可以强制执行“ bindRequest”吗?
否则,应该将动作用作自己的NOP吗? 搜索不存在的对象,还是应该查询某个存在或...的对象的某些属性? 它需要快速,不应在服务器端创建任何工作,并且应使用尽可能少的带宽。 (因为实际上从一开始就不应该采取必要的行动...)
问候,斯特芬
LdapContext.reconnect()执行LDAP绑定。
据我了解,一种解决方案是在目录中查找主体,并使用以下过滤器进行搜索:
(&(objectCategory=person)(sAMAccountName=principal))
如果主体的格式为:“ user1”
(&(objectCategory=person)(userPrincipalName=principal))
如果主体的格式为:“ user1@dom.fr”
对于NO-OP操作,您只需搜索根DSE即可 。 那应该在服务器的内存中。 如果您有权访问BIND请求和响应,则可以在BIND请求中包括授权身份请求控件。 如果服务器支持此请求控制(在这种情况下,它将在根DSE中列出),则服务器将在BIND响应中包括授权身份响应控制。 该响应控制将是连接的身份验证标识。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.