1.LDAP介紹
LDAP,(Light Directory Access Protocol),基于X.500標準的輕量級目錄訪問協議,類似于目錄服務一樣,是一個為查詢瀏覽和搜索的數據庫,優勢在于他的數據存儲結構,即樹狀結構組織數據,他的讀性能高,寫性能差,不支持事務功能。
LDAP目錄服務是由目錄數據庫和一套訪問協議組成的協議(ssl (port:389) / ssh (port:636)),不同的協議端口不一致。
2.LDAP登錄實現原理
每一個登錄,連接請求去發送本地的用戶、密碼給LDAP服務器,然后在LDAP服務器上進行匹配,然后判斷是否可以通過認證。
3. LDAP配置代碼
private LdapContext getLdapContext() {
EnterpriseLDAPConfig config = new EnterpriseLDAPConfig()
.baseDN("dc=fanuc,dc=com")
.ip("106.38.46.129").port("389")
.username("cn=Manager,dc=fanuc,dc=com")
.password(IdsBase64Utils.encrypt("secret"));
LDAPConnector ldapConnector = new LDAPConnector(config);
assertNotNull(ldapConnector);
return ldapConnector.connect();
}
/**
* 根據 配置 初始化LDAP的連接
*
*/
public class LDAPConnector extends AbstractLdapHandler {
private static final Logger LOG = LoggerFactory.getLogger(LDAPConnector.class);
private EnterpriseLDAPConfig ldapConfig;
public LDAPConnector(EnterpriseLDAPConfig ldapConfig) {
this.ldapConfig = ldapConfig;
}
public LdapContext connect() {
return connect(ldapConfig.baseDN());
}
public LdapContext connect(String baseDN) {
baseDN = formatDN(baseDN);
String url = createUrl(ldapConfig.ip(), ldapConfig.port(), baseDN);
Hashtable<String, String> env = initialEnv(url, ldapConfig.username(), IdsBase64Utils.decrypt(ldapConfig.password()));
try {
if (ldapConfig.connType().equals(LDAPConnType.SSL)){
env.put(Context.SECURITY_PROTOCOL, "ssl");
}
return new InitialLdapContext(env, null);
} catch (NamingException e) {
LOG.warn("Initial LDAPContext failed, url: " + url, e);
return null;
}
}
public abstract class AbstractLdapHandler {
public static final String LDAP_START = "ldap://";
/**
* ldap://12.2.3.44:389/dc=idsmanager,DC=com
*/
String createUrl(String ip, String port, String baseDN) {
return LDAP_START + ip + ":" + port + "/" + baseDN;
}
/**
* 初始化配置參數
*/
Hashtable<String, String> initialEnv(String url, String userDN, String pwd) {
Hashtable<String, String> 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, userDN);
env.put(Context.SECURITY_CREDENTIALS, pwd);
//支持 解析 AD中的 objectGUID
env.put("java.naming.ldap.attributes.binary", "objectGUID");
return env;
}
//其中env中的所需如下
String INITIAL_CONTEXT_FACTORY = "java.naming.factory.initial";
String PROVIDER_URL = "java.naming.provider.url";
String SECURITY_AUTHENTICATION = "java.naming.security.authentication";
String SECURITY_PRINCIPAL = "java.naming.security.principal";
String SECURITY_CREDENTIALS = "java.naming.security.credentials";
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
關于WPE的詳細解釋?WPE(Winsock packet editor)中文名是:網絡包編輯器在大多數編程工具中,Winsock被封裝為一個控件,成為一個網絡編程控件,非常方便,使用這個控件,編程工具可以編寫插件工具。WPE的工作原理及可行性分析在客戶端/服務器模式下的網絡游戲中,我們的信息都在服務器上。從服務器上修改個人用戶信息的可能性很小??蛻舳税惭b在您的機器上,當您玩游戲時,您發送一條指令...
天津哪有廚具批發市場?解放橋旁邊靠近勸業場一側的那條街是專門做廚具的。另外河西樂園旁邊也有家廚具城,,一樣這兩個地方是天津津批零比較集中的地方。天津哪里有賣廚具的_?天津的批發廚具用品市場有很多,比較被當地人接受和認知(熟悉)的是以下幾處:1、在樂園,前進道的天津廚具城,就是前進道與白云路交叉口區域,里面廚具挺齊全的。2、解放橋南頭那,有個專門批發廚具的,地址:和平區解放北路21號。3、中國北方五...
中國有哪些知名的K12教育培訓機構?易學中文培訓學校位于武漢。每年都有上萬人參加楚蔡作文比賽,只有5個小學特等獎獲得,易漢語獲得了其中的4個。這個傳說已經有15年了?!薄堕L江日報》、《武漢晨報》、《武漢電視臺》多次采訪報道。近日,央視《圓夢時代》節目組也前往武漢采訪報道!你知道嗎?k12教育網是什么的?K12,一個特殊的教育術語(從幼兒園到兩個五年級),是學前教育到高中教育的縮寫?,F在它被廣泛用于...