gpt4 book ai didi

java - 通过 JAVA 的 LDAP 无需提供密码

转载 作者:太空宇宙 更新时间:2023-11-04 12:34:03 25 4
gpt4 key购买 nike

在 C# 中,我编写了以下代码来连接到 LDAP 服务器并查询相同的内容。

String ldapUrl = "LDAP://...";
DirectoryEntry entry = new DirectoryEntry(ldapUrl);
DirectorySearcher dSearch = new DirectorySearcher(entry);

String Name = "ravi";
dSearch.Filter = "(&(objectClass=user)(sAMAccountName=" + Name + "))";

foreach (SearchResult sResultSet in dSearch.FindAll())
{
String data = "Login Name :" + (GetProperty(sResultSet, "cn")) + "\r\n" +
"First Name :" + (GetProperty(sResultSet, "givenName")) + "\r\n" +
"Middle Initials :" + (GetProperty(sResultSet, "initials")) + "\r\n" +
"Last Name : " + (GetProperty(sResultSet, "sn"));
}

如果您注意到,我没有提供用户名和/或密码。我认为它使用操作系统登录的用户凭据登录到 LDAP 服务器。

但是在JAVA中

String url = "ldap://localhost:10389";
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(***Context.SECURITY_PRINCIPAL, "uid=admin,ou=system"***);
env.put(***Context.SECURITY_CREDENTIALS, "secret"***);

try {
DirContext ctx = new InitialDirContext(env);
System.out.println("connected");
System.out.println(ctx.getEnvironment());

ctx.close();

} catch (Exception ex) {
System.out.println("error when trying to create the context");
}

java中有没有一种方法可以在不提供用户名和密码的情况下绑定(bind)到LDAP服务器?我尝试通过将 Context.SECURITY_AUTHENTICATION 设置为 NONE 来进行绑定(bind),但它们会抛出不允许匿名登录的异常。我不知道如何使用匿名用户凭据,但操作系统已登录用户凭据。

这可能吗?如何实现?

问候,

最佳答案

我使用 JNI 调用 C# dll...问题是 JNI 非常慢。每次调用几乎需要 15-20 秒

关于java - 通过 JAVA 的 LDAP 无需提供密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37523816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com