前言
这篇比较精华,亲身踩坑两天完成,利用UnboundID LDAP SDK完成对AD域用户进行普通登录和ssl登录场景实现,挺实用来着。
普通登录
package com.example.demo.controller;
import com.unboundid.ldap.sdk.LDAPConnection;
import com.unboundid.ldap.sdk.LDAPException;
import lombok.extern.slf4j.Slf4j;
/**
* @author apollo
* @description
* @date 2021年12月14日 16:59
*/
@Slf4j
public class AdLogin {
public static void main(String[] args) {
String host = "your host";
//一般普通登录端口为389
Integer port = 389;
//用户登录名两种格式 userPrincipalName和sAMAccountName
//userPrincipalName : 账号@域 lisi@test.com
//sAMAccountName : 域\账号 test\lisi
String userName = "lisi@test.com";
String password = "123456";
LDAPConnection connection = new LDAPConnection();
try {
connection = new LDAPConnection(host, port, userName, password);
log.info("ad域账号登录成功!");
} catch (LDAPException e) {
log.info("ad域账号登录失败:{}", e.getMessage());
log.error(e.getMessage(), e);
} finally {
connection.close();
}
}
}
SSL登录 且 筛选获取某用户组下用户
package com.example.demo.controller;
import com.unboundid.ldap.sdk.LDAPConnection;
import com.unboundid.ldap.sdk.SearchResult;
import com.unboundid.ldap.sdk.SearchResultEntry;
import com.unboundid.ldap.sdk.SearchScope;
import com.unboundid.util.ssl.SSLUtil;
import com.unboundid.util.ssl.TrustAllTrustManager;
import lombok.extern.slf4j.Slf4j;
import javax.naming.directory.SearchControls;
import javax.net.ssl.SSLSocketFactory;
import java.util.Iterator;
import java.util.List;
/**
* @author apollo
* @description
* @date 2022年02月14日 16:59
*/
@Slf4j
public class AdLogin {
public static void main(String[] args) {
LDAPConnection connection = new LDAPConnection();
String host = "www....com";
String userName = "lisi@test.bb.com";
String baseDn = "DC=test,DC=bb,DC=COM";
String password = "123456";
try {
SSLUtil sslUtil = new SSLUtil(new TrustAllTrustManager());
SSLSocketFactory sslSocketFactory = sslUtil.createSSLSocketFactory();
connection = new LDAPConnection(sslSocketFactory);
connection.connect(host, 636);
connection.bind(userName, password);
//查询某个用户组里面的用户
String filter = "(&(memberOf:1.2.840.113556.1.4.1941:=CN=user-group,OU=haha,DC=test,DC=bb,DC=COM))";
//返回值
String retrunedAtts[] = {"name"};
SearchResult search = connection.search(baseDn, SearchScope.valueOf(SearchControls.SUBTREE_SCOPE), filter, retrunedAtts);
List<SearchResultEntry> searchEntries = search.getSearchEntries();
Iterator<SearchResultEntry> iterator = searchEntries.iterator();
while (iterator.hasNext()) {
log.info("{}", iterator.next());
}
} catch (Exception e) {
log.info("ad域账号登录失败:{}", e.getMessage());
} finally {
connection.close();
}
}
}
这篇算是跨年篇吧…哈哈hahhaa…从21年的12月一直拖到今天才发…羞涩…
就
先
说
到
这
\color{#008B8B}{ 就先说到这}
就先说到这
在
下
A
p
o
l
l
o
\color{#008B8B}{在下Apollo}
在下Apollo
一
个
爱
分
享
J
a
v
a
、
生
活
的
小
人
物
,
\color{#008B8B}{一个爱分享Java、生活的小人物,}
一个爱分享Java、生活的小人物,
咱
们
来
日
方
长
,
有
缘
江
湖
再
见
,
告
辞
!
\color{#008B8B}{咱们来日方长,有缘江湖再见,告辞!}
咱们来日方长,有缘江湖再见,告辞!