欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

[點(diǎn)晴永久免費(fèi)OA]LDAP入門(mén)

admin
2021年6月18日 9:12 本文熱度 4233

LDAP入門(mén)

  • 首先要先理解什么是LDAP,當(dāng)時(shí)我看了很多解釋?zhuān)彩窃评镬F里,弄不清楚。在這里給大家稍微捋一捋。
  • 首先LDAP是一種通訊協(xié)議,LDAP支持TCP/IP。協(xié)議就是標(biāo)準(zhǔn),并且是抽象的。在這套標(biāo)準(zhǔn)下,AD(Active Directory)是微軟出的一套實(shí)現(xiàn)。
    那AD是什么呢?暫且把它理解成是個(gè)數(shù)據(jù)庫(kù)。也有很多人直接把LDAP說(shuō)成數(shù)據(jù)庫(kù)(可以把LDAP理解成存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù))。像是其他數(shù)據(jù)庫(kù)一樣,LDAP也是有client端和server端。server端是用來(lái)存放資源,client端用來(lái)操作增刪改查等操作。
  • 而我們通常說(shuō)的LDAP是指運(yùn)行這個(gè)數(shù)據(jù)庫(kù)的服務(wù)器。
  • 可以簡(jiǎn)單理解AD =LDAP服務(wù)器+LDAP應(yīng)用。

那LDAP這種數(shù)據(jù)庫(kù)有什么特殊的呢?

  • 我們知道,像MySQL數(shù)據(jù)庫(kù),數(shù)據(jù)都是按記錄一條條記錄存在表中。而LDAP數(shù)據(jù)庫(kù),是樹(shù)結(jié)構(gòu)的,數(shù)據(jù)存儲(chǔ)在葉子節(jié)點(diǎn)上。看看下面的比喻:

假設(shè)你要樹(shù)上的一個(gè)蘋(píng)果(一條記錄),你怎么告訴園丁它的位置呢?當(dāng)然首先要說(shuō)明是哪一棵樹(shù)(dc,相當(dāng)于MYSQL的DB),然后是從樹(shù)根到那個(gè)蘋(píng)果所經(jīng)過(guò)的所有“分叉”(ou),最后就是這個(gè)蘋(píng)果的名字(uid,相當(dāng)于MySQL表主鍵id)。好了!這時(shí)我們可以清晰的指明這個(gè)蘋(píng)果的位置了,就是那棵“歪脖樹(shù)”的東邊那個(gè)分叉上的靠西邊那個(gè)分叉的再靠北邊的分叉上的半紅半綠的……,暈了!你直接爬上去吧!

就這樣就可以描述清楚“樹(shù)結(jié)構(gòu)”上的一條記錄了。
說(shuō)一下LDAP里如何定義一個(gè)記錄的位置吧。

樹(shù)(dc=ljheee)
分叉(ou=bei,ou=xi,ou= dong)
蘋(píng)果(cn=redApple)

好了,redApple的位置出來(lái)了:
dn:cn=honglv,ou=bei,ou=xi,ou=dong,dc=ljheee
其中dn標(biāo)識(shí)一條記錄,描述了一條數(shù)據(jù)的詳細(xì)路徑。
咦!有人疑問(wèn),為什么ou會(huì)有多個(gè)值?你想想,從樹(shù)根到達(dá)蘋(píng)果的位置,可能要經(jīng)過(guò)好幾個(gè)樹(shù)杈,所有ou可能有多個(gè)值。關(guān)于dn后面一長(zhǎng)串,分別是cn,ou,dc;中間用逗號(hào)隔開(kāi)。

總結(jié)一下LDAP樹(shù)形數(shù)據(jù)庫(kù)如下:

dn :一條記錄的詳細(xì)位置
dc :一條記錄所屬區(qū)域    (哪一顆樹(shù))
ou :一條記錄所屬組織    (哪一個(gè)分支)
cn/uid:一條記錄的名字/ID   (哪一個(gè)蘋(píng)果名字)
LDAP目錄樹(shù)的最頂部就是根,也就是所謂的“基準(zhǔn)DN"。
  • 為什么要用LDAP目錄樹(shù)來(lái)存儲(chǔ)數(shù)據(jù),用MySQL不行嗎,為什么非要搞出一個(gè)樹(shù)形的數(shù)據(jù)庫(kù)呢?
  • 這是因?yàn)橛脴?shù)形結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),查詢(xún)效率更高(具體為什么,可以看一下關(guān)系型數(shù)據(jù)庫(kù)索引的實(shí)現(xiàn)原理——B樹(shù)/B+樹(shù))。在某些特定的場(chǎng)景下,使用樹(shù)形數(shù)據(jù)庫(kù)更理想。比如:需要儲(chǔ)存大量的數(shù)據(jù),而且數(shù)據(jù)不是經(jīng)常更改,需要很快速的查找。
  • 把它與傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)相比,LDAP除了快速查找的特點(diǎn),它還有很多的運(yùn)用場(chǎng)景,比如域驗(yàn)證等。

LDAP編程操作

  • 我們可以用JDBC操作MySQL數(shù)據(jù)庫(kù),進(jìn)行對(duì)數(shù)據(jù)的增刪改查。同樣,LDAP樹(shù)形數(shù)據(jù)庫(kù),也可以通過(guò)JDBC方式;除此之外,還可以用JNDI的方式(更推薦),因?yàn)闃?shù)形可以看做是目錄,樹(shù)結(jié)構(gòu)的枝杈相當(dāng)于目錄的層級(jí)。
  • 還有LDAP數(shù)據(jù)庫(kù)展示數(shù)據(jù)也是樹(shù)形的,如下圖是用ApacheDirectoryStudio連接的LDAP服務(wù)器:

可以把ApacheDirectoryStudio看做是連接數(shù)據(jù)庫(kù)服務(wù)器的界面化的client,相當(dāng)于Navicat、WorkBench。新建連接,連接數(shù)據(jù)庫(kù)服務(wù)器的操作類(lèi)似。

ApacheDirectoryStudio下載地址
http://download.csdn.net/download/ljheee/10145654

JNDI連接LDAP服務(wù)器

import org.springframework.beans.factory.annotation.Autowired;
import java.util.Hashtable;
import javax.naming.*;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
public class LdapJNDI {
    @Autowired
    LdapConfiguration ldapConfiguration;
    public void JNDILookup() {
        String rootFilter = "o=xxx.com,o=isp";
//        String filter = "(&(smart-type=E1)(smart-status=1))";
        String filter = "(&(smart-type=E1)(uid=00012047))";
        String username = "uid=USER_NAME,ou=Authorization,ou=People,o=cc.com,o=isp";//xxx為申請(qǐng)的對(duì)接賬戶(hù)
        String password = "PASSW";
        Hashtable env = new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");//設(shè)置連接LDAP的實(shí)現(xiàn)工廠
        env.put(Context.PROVIDER_URL, "ldap://172.26.39.77:389/" + rootFilter);// 指定LDAP服務(wù)器的主機(jī)名和端口號(hào)
        env.put(Context.SECURITY_AUTHENTICATION, "simple");//給環(huán)境提供認(rèn)證方法,有SIMPLE、SSL/TLS和SASL
        env.put(Context.SECURITY_PRINCIPAL, username);//指定進(jìn)入的目錄識(shí)別名DN
        env.put(Context.SECURITY_CREDENTIALS, password); //進(jìn)入的目錄密碼
        env.put("filter",filter);
        DirContext ctx = null;
        try {
            // 得到初始目錄環(huán)境的一個(gè)引用
            ctx = new InitialDirContext(env);
            //The search base entry 'uid=00012047,ou=Internal,ou=People,o=xxx.com,o=isp' does not exist]; remaining name 'uid=00012047,ou=Internal'
//            Attributes attrs = ctx.getAttributes("uid=00012047,ou=Internal,ou=People");//獲取到一個(gè)人員,
            NamingEnumeration bindings = ctx.listBindings("ou=Internal,ou=People");//列舉 內(nèi)部人員
            while (bindings.hasMore()) {
                Binding bd = (Binding)bindings.next();
                System.out.println(bd.getName() + ": " + bd.getObject());
            }
             /*根據(jù)結(jié)點(diǎn)的DN來(lái)查找它的所有屬性, 然后再?gòu)膶傩灾械玫剿械闹?注意一個(gè)屬性可以有多個(gè)值*/
//            for (NamingEnumeration ae = attrs.getAll(); ae.hasMore(); ) {
//                //獲取一個(gè)屬性
//                Attribute attr = (Attribute) ae.next();
//                for (NamingEnumeration ve = attr.getAll(); ve.hasMore(); ) {
//                    System.out.println(String.format("Attribute=%s,Value=%s",attr.getID(),ve.next()) );
//                }
//            }
        } catch (javax.naming.AuthenticationException e) {
            System.out.println("認(rèn)證失敗");
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("認(rèn)證出錯(cuò):");
            e.printStackTrace();
        }finally {
            if (ctx != null) {
                try {
                    ctx.close();
                } catch (NamingException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public static void main(String[] args) {
        LdapJNDI ldapJNDI = new LdapJNDI();
        ldapJNDI.JNDILookup();
    }
}

最后總結(jié)一下LDAP:
1、LDAP的結(jié)構(gòu)用樹(shù)來(lái)表示,而不是用表格。正因?yàn)檫@樣,就不能用SQL語(yǔ)句了。
2、LDAP可以很快地得到查詢(xún)結(jié)果,不過(guò)在寫(xiě)方面,就慢得多。
3、LDAP提供了靜態(tài)數(shù)據(jù)的快速查詢(xún)方式。
4、Client/server模型,Server 用于存儲(chǔ)數(shù)據(jù),Client提供操作目錄信息樹(shù)的工具。
5、LDAP是一種開(kāi)放Internet標(biāo)準(zhǔn),LDAP協(xié)議是跨平臺(tái)的Interent協(xié)議。


作者:消失er
鏈接:https://www.jianshu.com/p/7e4d99f6baaf
來(lái)源:簡(jiǎn)書(shū)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

該文章在 2021/6/18 9:12:44 編輯過(guò)
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專(zhuān)業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶(hù)的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved