首页 文章

使用NTLM安全协议连接到LDAP(Active Directory)

提问于
浏览
1

Currently, I'm using user and password as the connection credentials to ldap (in order to authenticate user of AD).

对于身份验证,我使用InitialDirContext创建了一个初始上下文(对于Active Directory),我们提供了一组环境属性,其中包含身份验证信息 .

我的代码看起来像:

env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ...);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, ...);
env.put(Context.SECURITY_CREDENTIALS, ...);
env.put("com.sun.jndi.ldap.connect.timeout", ...);

try {
  ctx = new InitialLdapContext(env);
}
catch (NamingException e) {
    System.out.println("error")
}

我想更改此代码,因此它将使用NTLM验证输入的用户名和密码作为LDAP的凭据 .

你能举个例子吗?

NTLM - 是一套Microsoft安全协议,提供 - 身份验证 - 完整性 - 机密性

2 回答

  • 0

    算了吧 . Java中没有对NTLM的SASL支持 . 使用GSS-API . 总是弃权使用专有技术,有一个死胡同 . 永远不要使用 simple auth,它会在明文上传输密码 . 至少使用Digest MD5 .

  • 0

    我还想使用NTLM连接到Microsoft LDAP目录 .

    不幸的是,微软在LDAP管理员权限方面存在差异,这取决于你是否使用Kerberos / NTLM与BIND / MD5连接,并且我厌倦了使用标准管理工具 . 并且Kerberos仅限于用户,用户客户端和LDAP服务器位于同一域中,并且需要为JRE配置错误JAAS配置文件 .

    由于它是最常用的目录,因为我也找不到任何现有的解决方案,我试图自己创建一个NTLM BIND解决方案,并且我成功了 .

    它是一个单独的Java类文件,它使用额外的LDAP BIND类扩展UnboundID Java LDAP SDK:https://sourceforge.net/projects/javaldapntlmbind/

    该解决方案使用UnboundID Java LDAP SDK,对于NTLM处理,它使用samba.org的JCIF Java库 . 由于使用JCIF,它独立于平台,不需要在Windows上运行 .

相关问题