1 May 2011

The Lightweight Directory Access Protocol ( LDAP )

          บทความนี้ จะนำเสนอ Lightweight Directory Access Protocol หรือที่เรียกสั่นๆว่า  LDAP นั้นเองนะครับ  ก็ถือโอกาส ลงบทความไว้ เพราะยังไง ก็นั่งสรุปอยู่แล้ว นะครับ  เป็น Protocol ตัวเล็กๆๆ แต่ประสิทธิภาพ ไม่ได้เล็กอย่างตัวเลย นะ ....^^ ผิดพลาด ประการใด ก็ขอ ม้าดินมังกร (อภัย) ไว้ขี่เล่นแล้วกันครับ 5555+ T__T! มุข ร้านหมูกระทะ แถวๆบ้าน !!!

ต้นเหตุและผลของ LDAP

           โดยทั่วไปแล้วในการให้บริการของการเข้าถึงทรัพยากรบนเซิร์ฟเวอร์นั้นผู้ดูแลระบบหรือผู้ใช้บริการจะต้องมีบัญชีผู้ใช้งาน(Username) และ รหัสผ่าน (Password) บนเครื่องเซิร์ฟเวอร์นั้นๆ จึงจะสามารถใช้บริการนั้นได้ แต่ถ้าเกิดว่ามีเครื่องเซิร์ฟเวอร์ที่เราต้องใช้บริการถึง 10 เครื่อง แสดงว่าเราจะต้องมีบัญชีผู้ใช้งาน (Username) และ รหัสผ่าน (Password) ในเครื่องเซิร์ฟเวอร์ทั้งหมด 10 เครื่อง จึงจะสามารถใช้บริการได้
                ผลที่ตามมาคือ ผู้ดูแลระบบหรือผู้ใช้บริการจะต้อง จำบัญชีผู้ใช้งาน (Username) และรหัส (Password) ทั้งหมด หรืออาจจะจำแต่ (Password) 10 เครื่อง ซึ่งเป็นเรื่องที่ยากในทางปฏิบัติ แต่ถ้าเราใช้บัญชีผู้ใช้งาน (Username) และรหัส (Password) เหมือนทั้งหมด ก็เป็นเรื่องที่ไม่เข้าท่านัก ซึ่งไม่รวมในการบำรุงรักษาระบบของผู้ดูแลระบบ ซึ่งในการจัดการเกี่ยวกับ User  นั้น ยิ่งเป็นเรื่องยากเข้าไปใหญ่
                จึงทำให้เกิดแนวคิดที่ว่า จะเป็นไปได้ไหม ถ้าเราใช้งานในหลายๆ ระบบด้วยข้อมูลชุดเดียวกันได้ จึงเกิดบริการที่เรียกว่า  “Network Information Service”   ซึ่ง LDAP หรือ Lightweight Directory Access protocol เป็นการให้บริการในอีกรูปแบบหนึ่ง



LDAP คืออีหยั๋งล่ะ......ครับ (ไม่เขียนเยอะนะครับ ขี้เกียจอ่าน! )
LDAP หรือ Lightweight Directory Access protocol เป็นโปรโตคอลหนึ่งที่ใช้เข้าถึงบริการข้อมูลแบบ Directory Service มีการจัดเก็บข้อมูลแบบ Hierarchy (แบ่งเป็นระดับชั้น) มีการให้บริการแบบ Client – Server ปัจจุบันมีพัฒนาเป็นเวอร์ชั่น 3 ได้มีการพัฒนาโดยองค์กร IETR ซึ่งอยู่บนพื้นฐานของ TCP/IP โปรโตคอล โดยมีต้นแบบและมีการปรับลดคุณสมบัติที่ไม่จำเป็นออกไปจาก X.519 DAP ยังคงความสามารถในการใช้งานร่วมกับมาตรฐาน X.500 ได้ 

LDAP Server 
LDAP Server จะเป็นเครื่องที่เก็บข้อมูลลงฐานข้อมูลที่เป็นไดเร็คเทอรีมีลักษณะแบบระดับชั้น (Hierarchy) สำหรับเครื่อง Client ที่ต้องการใช้บริการจะต้องติดตั้ง LDAP Client ด้วยจึงจะสามารถติดต่อกับ LDAP Server ได้ในการให้บริการเมื่อมี Client ร้องขอมา เครื่องเซิร์ฟเวอร์จะทำการค้นหาข้อมูลและตอบกลับไปยัง Client  ด้วย LDAP โปรโตคอล  ถ้ากรณีที่เครื่องเซิร์ฟเวอร์นั้นไม่มีฐานข้อมูลที่เครื่อง Client  ร้องขอมาก็จะตอบกลับไปด้วย Pointer ที่บอกถึง LDAP Server เครื่องต่อไปในการค้นหาข้อมูล ซึ่งมีการทำงานคล้ายๆ กับ DNS Server 
        ถ้ากรณีของ Client ทำการเชื่อมต่อกับ Directory Server ที่ใช้มาตรฐาน X.500  ตัว DLAP Server ก็จะติดต่อด้วย DAP โปรโตคอลแทน


องค์ประกอบของ LDAP Object Model

โดยปกติแล้ว LDAP จะไม่ได้มุ่งเน้นที่การจัดเก็บข้อมูลแต่จะเน้นการให้บริการข้อมูลมากว่า ซึ่งจะเป็นลักษณะของการที่เรียกดูข้อมูลมากกว่าการที่จะปรับปรุงหรือการเขียนข้อมูล ดังนั้นในการให้บริการในลักษณะนี้จะไม่เหมาะกับการให้บริการบ่อยๆ ถ้าเปรียบเทียบกับ Relational Database 
โครงสร้างของ LDAP มีลักษณะดังนี้

1. Object Tree Structure (โครงสร้างต้นไม้ของวัตถุ)
        คือ ลักษณะของ LDAP จะเก็บข้อมูลลักษณะโครงสร้างต้นไม้ (Tree ) หรือการแบ่งระดับชั้น 
        (Hierarchy) ซึ่งเรียกกันว่า “Data Information Tree ”(DIT)  ในแต่ละลำดับชั้นจะประกอบไปด้วย 
       Objects, Attributes เรียกรวมกันว่า  “Entry” ประกอบด้วยหลายๆ object Class และมีการกำหนดชื่อให้
       กับแต่ละ Object Class ด้วย ภายใน Object Class จะประกอบไปด้วย Attributes ต่างๆ ดังรูป


               จะสังเกตเห็นว่า ใน Entry แต่ละตัวจะมี Parent Entry ได้เพียงตัวเดียวเท่านั้น แต่สามารถมีหลาย                Child Entry ได้ เราจะเรียกจุดเริ่มต้นโครงสร้างว่า “Root” 

2. Attributes (คุณสมบัติ)

              คือ เป็นลักษณะของ “Object Unit” มันเป็นหน่วยย่อยที่สุดที่ใช้เก็บข้อมูล โดยแต่ละ Attribute มีการกำหนดชื่อที่ไม่ซ้ำกัน และสามารถเก็บข้อมูลได้เฉพาะคุณลักษณะที่กำหนดไว้ (Type) เช่น ตัวเลข , ข้อความ , เวลา เป็นต้น  ซึ่ง Attribute มีคุณสมบัติดังนี้ 

           1. ใน Object Class เราสามารถที่จะกำหนด Attribute ว่าให้เป็นตัวที่ต้องกำหนดค่าเสมอ (Mandatory) หรือเป็นส่วนเสริมที่จะกำหนดค่าหรือไม่กำหนดค่าก็ได้ (Optional) โดยกำหนด Keyword ว่า “MAY”= Optional หรือ “MUST” =Mandatory เป็นต้น

           2. Attribute ที่อยู่คนละ Object Class  สามารถกำหนดเป็น Optional และ Mandatory ได้ (เป็นลักษณะ Attribute ที่เหมือนกัน) 

          3. Attribute   จะสามารถเก็บข้อมูลได้ทั้งแบบค่าเดียว (Single Value) และ แบบมีหลายค่า (Multi Value) ได้

          4. Attribute ต้องมีชื่อไม่ซ้ำกัน สามารถมีชื่อเต็มและชื่อย่อได้ เช่น  Attribute ชื่อ “Useid” มีชื่อเล่นว่า  “uid” 

          5. ในการค้นหาข้อมูลใน Attribute ของแต่ละ Entry ในรูปแบบเป็น Naming Attribute หรือ Relatively Distinguished Name (RDN) ข้อมูลที่ค้นหาจะต้องกำหนดเงื่อนไขที่ชัดเจนในการค้นหา ไม่เช่นนั้นจะเกิดการซ้ำกันของข้อมูลได้เช่น ใน Entry X มี Object Class A และ B โดยที่  

        Object Class A ประกอบด้วย commonName=Strum_jub , countryName=TH , mail=SS@v-smart.local
Object Class B ประกอบด้วย commonName=Strum_jub ,countryName=CA , mail=Tum@mail.local
เมื่อต้องการปรับปรุงข้อมูล mail ซึ่งเรียกค้นหาโดยกำหนดเงื่อนไขเป็น “ commonName=Strum_jub”  ซึ่งทำให้ได้ผลลัพธ์ไม่มีเพียงหนึ่งเดียว จะทำให้เกิดข้อผิดพลาดได้   

  ดังนั้น ในการเรียกข้อมูลแบบ RDN ควรที่จะได้ค่าที่ไม่ซ้ำกัน  ซึ่งจะต้องเรียก Attribute ที่มากกว่า 1 เพื่อให้เกิดความแตกต่างของเงื่อนไข เช่น  “commonName=Strum_jub + countryName=TH” ซึ่งจะทำให้ข้อมูลไม่ซ้ำกัน

##โปรดติดตามบทความต่อไปครับ.........................!!>> อ่านลำบากนิดหน่อยนะครับ เป็นทฤษฏี ซะเยอะเลย 5555+ ^^