You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
2.0 KiB
Markdown

1 year ago
---
icon: edit
date: 2023-04-17
category:
- Java
headerDepth: 5
---
# java 使用 ldap 例子
```java
import java.util.Hashtable;
import javax.naming.AuthenticationException;
import javax.naming.CommunicationException;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
public class AdTest {
public AdTest() {
}
public static int connect(String host, String post, String username, String password) {
DirContext ctx = null;
int rs = 0;
String domain = "@example.com"; //ldap 服务器域控
String name = username.indexOf(domain) > 0 ? username : username + domain;
Hashtable<String, String> HashEnv = new Hashtable();
HashEnv.put("java.naming.security.authentication", "simple");
HashEnv.put("java.naming.security.principal", name);
HashEnv.put("java.naming.security.credentials", password);
HashEnv.put("java.naming.factory.initial", "com.sun.jndi.ldap.LdapCtxFactory");
HashEnv.put("com.sun.jndi.ldap.connect.timeout", "3000");
HashEnv.put("java.naming.provider.url", "ldap://" + host + ":" + post);
try {
ctx = new InitialDirContext(HashEnv);
System.out.println("身份验证成功!");
} catch (AuthenticationException var22) {
System.out.println("身份验证失败!");
rs = 1;
var22.printStackTrace();
} catch (CommunicationException var23) {
System.out.println("AD域连接失败!");
rs = 2;
var23.printStackTrace();
} catch (Exception var24) {
System.out.println("身份验证未知异常!");
rs = 3;
var24.printStackTrace();
} finally {
if (null != ctx) {
try {
ctx.close();
ctx = null;
} catch (Exception var21) {
var21.printStackTrace();
}
}
}
return rs;
}
}
```