หน้าแรก > คุย Linux > โปรโตคอล LDAP คือ

โปรโตคอล LDAP คือ

LDAP เป็นโปรโตคอลใช้สำหรับติดต่อกับ ไดเรกทอรีเซอร์วิส ( Directory Service) อยู่ในระดับแอปพลิเคชัน เลเยอร์ทำงานอยู่บนโปรโตคอล TCP/IP มาตรฐาน LDAP ให้คำจำกัดความทั้ง 4 รูปแบบ ซึ่งแนะนำให้คุณได้ใช้ directory ซึ่งรูปแบบมีการส่งเสริมการทำงานร่วมกันระหว่าง การติดตั้ง directory ในขณะที่คุณสามารถจะตัดไปยัง directory ที่คุณ ต้องการเฉพาะได้ ซึ่งแนะนำผู้พัฒนา directory เมื่อลูกค้า และผู้ใช้ software มีการออกแบบ และกำลังปฏิบัติการ LDAP LDAP จะมี APIs: ใช้โปรแกรม ภาษา C ใช้ได้กับ netcape’s java SDK ,sunsoft’s JNDI และ Microsoft active Directory Service interface(ADSI) การเปลี่ยนแปลงข้อมูลของ LDAP(LDIF) เป็นมาตรฐาน รูปแบบตัวอักษรสำหรับอธิบายในข้อมูล directory LDIF สามารถอธิบายการสร้าง directory หรือปรับปรุงเพื่อประยุกต์ใช้กับ directory ข้อมูล ใน directory สามารถส่งออก จากที่หนึ่งไปยังที่หนึ่ง โดยใช้ LDIF โดยทั่วไปมักใช้ได้กับคำสั่งซึ่งจะมีประโยชน์ทั้งอ่านและเขียน

    LDAP ได้รับการออกแบบมาให้อยู่บน TCP/IP Layer ที่มีเพียง 4 Layer ทำให้มีความต้องการ Resource น้อยกว่า DAP ของมาตรฐาน X.500 อย่างไรก็ตาม หากมีความต้องการติดต่อกันระหว่าง LDAP Client กับ X.500 Server จำเป็นจะต้องมีการติดต่อผ่าน Gateway ที่เรียกว่า LDAP Server

    LDAP เป็นมาตรฐานที่ได้รับการยอมรับอย่างกว้างขวาง และมี Application Vendor อยู่หลายราย อาทิ OpenLDAP, IBM, Oracle, Microsoft ซึ่ง Product ที่ได้รับความนิยมก็ได้แก่ Slapd ของ University of Michigan และ Openldap, Directory Server ของ Netscape, Active Directory (AD) ของ Microsoft, Novell Directory Services (NDS) ของ Novell, Sun Directory Services (SDS) ของ Sun และ Internet Directory Server (IDS) ของ Lucent เป็นต้น

 

 

——————————————————–

1. รู้จักกับ LDAP

Lightweight Directory Access Protocol ( LDAP นิยมอ่านว่า “แอล-แด็ป”) เป็น Protocol ที่พัฒนามาจาก Protocol X. 500 ซึ่งใช้ในการเข้าถึงและ Update ข้อมูลของ Directory ซึ่ง Directory ในทาง Computer ที่จริงก็อาจเรียกได้ว่าเป็น Database แบบพิเศษหรือ Data repository ที่บรรจุรายละเอียดของ Object ต่างๆ เช่น Users, Application, Files, Printer และอื่นๆ รวมทั้ง Security information ของ Object เหล่านี้ด้วย โดยข้อแตกต่างของ Directory กับ Database ปกติ

LDAP เป็นโปรโตคอลใช้สำหรับติดต่อกับ ไดเรกทอรีเซอร์วิส  (Directory Service)   อยู่ในระดับแอปพลิเคชัน   เลเยอร์ทำงานอยู่บนโปรโตคอล TCP/IP มาตรฐาน LDAP   ให้คำจำกัดความทั้ง 4 รูปแบบ ซึ่งแนะนำให้คุณได้ใช้ directory   ซึ่งรูปแบบมีการส่งเสริมการทำงานร่วมกันระหว่าง   การติดตั้ง directory   ในขณะที่คุณสามารถจะตัดไปยัง  directory   ที่คุณ ต้องการเฉพาะได้ ซึ่งแนะนำผู้พัฒนา directory เมื่อลูกค้า   และผู้ใช้ software มีการออกแบบ และกำลังปฏิบัติการ LDAP LDAP จะมี APIs: ใช้โปรแกรม ภาษา C ใช้ได้กับ netcape’s java SDK ,sunsoft’s JNDI และ Microsoft active Directory Service interface(ADSI) การเปลี่ยนแปลงข้อมูลของ LDAP(LDIF) เป็นมาตรฐาน รูปแบบตัวอักษรสำหรับอธิบายในข้อมูล directory LDIF สามารถอธิบายการสร้าง directory หรือปรับปรุงเพื่อประยุกต์ใช้กับ directory ข้อมูล ใน directory สามารถส่งออก จากที่หนึ่งไปยังที่หนึ่ง โดยใช้ LDIF โดยทั่วไปมักใช้ได้กับคำสั่งซึ่งจะมีประโยชน์ทั้งอ่านและเขียน LDIF

2. หลักการและเหตุผล

    อินเตอร์เน็ตทำให้ทุกสิ่งทุกอย่างในโลกของไอทีเปลี่ยนแปลงไปอย่างรวดเร็ว จากเดิมที่ทรัพยากรต่าง ๆ แม้ว่าจะจัดระเบียบไว้ไม่ดีเท่าที่ควร ก็สามารถค้นหามาใช้งานได้โดยง่าย แต่เมื่อมีการเชื่อมต่อผ่านทางอินเตอร์เน็ตทำให้การทำงานร่วมกันจากหลายมุมโลกเกิดขึ้นได้จริง ทรัพยากรต่าง ๆ ไม่ว่าจะเป็นบัญชีรายชื่อและรายละเอียดของแต่ละรายชื่อนั้น เครื่องพิมพ์ เอกสารที่จำเป็น ฐานข้อมูลที่ต้องการใช้งาน แฟ้มข้อมูลที่ต้องการแชร์ถึงกัน อุปกรณ์เครือข่าย กฎเกณฑ์ขององค์กร และอื่นๆ กลับกลายเป็นสิ่งที่จัดการได้ยากมาก เนื่องจากมีการจัดเก็บกระจัดกระจายไปทั่วทั้งเครือข่ายอินเตอร์เน็ตทีเดียว ข้อมูลต่างๆ ที่พูดถึงเรามักถูกเก็บรวมกันไว้เพื่อสะดวกในการค้นหา โดยเราจะเรียกการจัดเก็บแบบนี้ว่า ไดเร็คทอรี ( Directory) ซึ่งตัวอย่างที่ชัดเจนที่สุดก็คือ สมุดหน้าเหลืองขององค์การโทรศัพท์ การค้นหาข้อมูลทำได้จากดัชนีรายชื่อของบุคคลหรือองค์กร เมื่อพบรายชื่อก็จะพบเบอร์โทรศัพท์ และรายละเอียดอื่น ๆ อีก เป็นต้น ถ้าข้อมูลเหล่านี้มีชุดเดียว และจัดเก็บไว้แห่งเดียวกันก็สามารถค้าหาได้สะดวก แต่หากว่าข้อมูลเหล่านี้มีด้วยกันหลายชุดและจัดเก็บแยกออกจากกันแล้ว การค้นหาก็จะทำได้ยากยิ่งขึ้น ดังนั้น LDAP (Lightweight Distributed Access Protocol) จึงได้เกิดขึ้นเพื่อจัดการปัญหาเหล่านี้ LDAP ถูกออกแบบและพัฒนาขึ้นโดยบริษัท Netscape ร่วมกับทีมวิจัยจากมหาวิทยาลัยมิชิแกน วัตถุประสงค์เพื่อนำมาตรฐาน X.500 ( เป็นมาตรฐานเกี่ยวกับ Directory ที่สร้างขึ้นบน OSI Model) มาใช้งานจริงได้บนโปรโตคอล TCP/IP แนวคิดนี้เกิดขึ้นจากความต้องการที่จะให้เครื่องไคลเอนต์ ( Lightweight PC Client) สามารถเข้าถึงไดเร็คทอรีของมาตรฐาน X.500 ในฝั่งเซิร์ฟเวอร์ผ่านเครือข่ายอินเตอร์เน็ตได้ ปัจจุบัน LDAP กำลังได้รับความนิยมจากผู้ผลิตหลายต่อหลายราย นำไปพัฒนาเป็นผลิตภัณฑ์ของตนเอง เช่น Netscape,Lotus/IBM,NDS ของ Novell และ Active Directory ของไมโครซอฟท์ เป็นต้น ในปี ค.ศ. 1997 LDAP ได้ถูกปรับปรุงขึ้นจากการนำเอามาตรฐาน X.500 มาพัฒนาโดยยึดถือฟังก์ชั่นเดิมของ X.500 ถึง 90% ทีเดียว แต่ได้ตัดบางส่วนที่ทำให้ X.500 มีขนาดใหญ่มากเกินออกไปบ้าง ในปี ค.ศ. 1998 บริษัท Netscape เริ่มเปิดตัวผลิตภัณฑ์ที่สนับสนุน LDAP อย่างเต็มรูปแบบในชื่อ Directory Server เวอร์ชั่น 3 จากนั้นผลิตภัณฑ์ของบริษัท Sun และ IBM ก็ตามเข้าสู่ตลาด แต่กลับพัฒนาออกมาในแนวทางที่เป็นเฉพาะของตนอย่างมากทีเดียว และในปัจจุบันไมโครซอฟท์ก็ได้เปิดตัว Active Directory ตามมาเช่นกัน

3. ประวัติ X.500

    OSI (Open System Interconnection) ได้กำหนด X.500 ในปี ค.ศ. 1988 และค.ศ. 1993 ได้เพิ่มเติมรายละเอียดเข้าไป วัตถุประสงค์ของ OSI เป็นเพียงเพื่อกำหนดมาตรฐานของบริการไดเร็คทอรี แต่มาตรฐานนี้ไม่ได้รับการตอบสนองที่ดีในการนำไปใช้งานจริง เหตุผลหนึ่งที่เป็นเช่นนั้นก็คือ ความยุ่งยากซับซ้อนของโปรโตคอล , ความต้องการทรัพยากรในการนำไปใช้งาน และไม่มีตัวอย่างในการนำไปใช้งานจริง อีกทั้งในเรื่องความปลอดภัยของข้อมูลที่เกี่ยวกับการเปิดเผยข้อมูลที่ไม่เคยต้องเปิดเผยมาก่อนด้วย ข้อกำหนด X.500 กำหนดแบบจำลองข้อมูลที่เป็นตัวกำหนดวิธีการจัดเก็บข้อมูลไว้ในฐานข้อมูลที่เรียกว่า DIB (Directory Information Base) แต่ละรายการในฐานข้อมูลจะประกอบไปด้วยแอตทริบิวต์ (Attribute) หลายตัว แต่ละตัวจะประกอบด้วยฟิลด์ประเภทและค่า ประเภทของแอตทริบิวต์จะเป็นตัวกำหนดค่าของข้อมูลที่เป็นไปได้ในรายการ แอตทริบิวต์อาจจะประกอบด้วยหลายค่าก็ได้ แต่ละรายการสามารถมีจำนวนแอตทริบิวต์แตกต่างกันออกไป บางส่วนอาจเป็นแอตทริบิวต์ภาคบังคับ บางส่วนก็เป็นตัวกำหนดว่าแอตทริบิวต์เป็นภาคบังคับหรือเป็นค่าประเภททางเลือก รายการต่างๆ ในฐานข้อมูลมีการจัดเก็บแบบลำดับชั้น โครงสร้างเช่นนี้มีชื่อเรียกว่า DIT(Directory Information Tree) ซึ่งอาจเป็นฐานข้อมูลแบบกระจายศูนย์ไปตามที่ต่าง ๆ ทางภูมิศาสตร์ หรือแบ่งเป็นลำดับชั้นตามผังองค์กร และกระจายไปตาม Directory Server หลายๆ เครื่องก็ได้ แต่ละรายการในฐานข้อมูลนี้จะมีค่าที่เป็นเอกลักษณ์คือ DN(Distinguished Name) ซึ่งเป็นค่าที่รวมมาจากค่าของแอตทริบิวต์สองตัวที่ใช้ระบุประเทศ , องค์กร , หน่วยขององค์กร และชื่อสามัญ กรณีที่ค่าบางค่าถูกละทิ้งไปจาก DN รายการข้อมูลนั้นจะถูกเรียกเป็น RDN(Relative Distinguish Name) ตัวอย่างของ DN ดังที่ได้แสดงในภาพคือ / c=USA, /o=Aumsoft, /ou=Documentation, /cn=Dilip X.500 ต้องการให้ไคลเอนต์สร้างเซสชัน (Session) สำหรับติดต่อกับเซิร์ฟเวอร์ ก่อนที่จะทำการขอใช้บริการใดๆ สิ่งนี้สามารถกระทำได้โดยการ Bind โดยไคลเอนต์ต้องแนะนำตัวเองแก่เซิร์ฟเวอร์ ระบบความปลอดภัยที่มีให้ก็เป็นได้ตั้งแต่ระบบง่าย ๆ ที่มีการส่งรหัสผ่านเป็นข้อความธรรมดาไปจนถึงอัลกอริทึมที่ใช้คีย์สาธารณะเป็นหลัก การตัดการเชื่อมต่อในแต่ละครั้งไคลเอนต์จะทำ Unbind

 

ภาพที่ 1 ภาพตัวอย่างของชื่อ DN คือ / c= USA , /o=Aumsoft, /ou=Documentation, /cn=Dilip (www2.cs.science.cmu.ac.th)

    เมื่อไคลเอนต์ได้สร้างเซสชันขึ้นมาแล้วจะสามารถค้นหา , อ่าน , แก้ไข , เพิ่ม , ลบ และยกเลิกการดำเนินการ การค้นหานั้นจะดึงข้อมูลที่มีแอตทริบิวต์ตรงตามเงื่อนไขที่ได้กำหนดไว้ ที่เรียกว่า Search Filter ผลที่ได้จากการค้นหาอาจเป็นรายการของชุดของรายการ หรือต้นไม้ย่อยของไดเร็คทอรี การอ่านข้อมูลเป็นเพียงนำข้อมูลที่กำหนดไว้ออกมา การแก้ไขใช้การเปลี่ยนแปลงข้อมูลที่มีอยู่แล้ว โดย X.500 กำหนดการดำเนินงานที่เรียกว่า modifyRDN สำหรับแก้ไขชื่อของรายการนั้น ๆ อีกทั้ง X.500 ยังได้กำหนดวิธีการเพิ่มและลบรายการบางรายการออกไป ส่วนการยกเลิกการดำเนินงานจะใช้สั่งยกเลิกการกระทำใดๆ ก็ได้กำหนดไว้ การดำเนินการต่าง ๆ และผลที่ได้สามารถเซ็นโดยคีย์สาธารณะของไคลเอนต์หรือเซิร์ฟเวอร์ก็ได้ แอพพลิเคชันต่างๆ สามารถเข้าถึงข้อมูลในฐานข้อมูลของบริการไดเร็คทอรี ด้วยวิธีที่คล้ายกับ Re-solver โดยใช้อินเตอร์เฟชทางด้านไคลเอนต์ที่มีชื่อเรียกว่า DUA(Directory User Agent) การทำงานของอินเตอร์เฟชนี้ใช้โปรโตคอล DAP(Directory Access Protocol) ซึ่งเป็นโปรโตคอลที่ทำงานอยู่ในชั้น Application ของโมเดล ISO/OSI และมีการกำหนดการใช้ OSI Transport Stack ด้วย การใช้งานดังกล่าวนั้นต้องการความพยายามทั้งต้นทุนของการพัฒนาโปรแกรมและฮาร์ดแวร์เพื่อให้ Protocol Stack ทำงานได้ การแลกเปลี่ยนข้อมูลระหว่าง Directory Server สามารถจะกระทำได้โดยใช้โปรโตคอล DSP(Directory System Protocol) ข้อกำหนด X.500 1993 ได้อธิบายถึงโปรโตคอล DISP(Directory Information Shadowing Protocol) ซึ่งกำหนดวิธีใช้เซิร์ฟเวอร์หลายเครื่องในการทำงานแบบเดียวกัน

 

ภาพที่ 2 แสดงองค์ประกอบและโปรโตคอลต่างๆ ของ X.500 (www2.cs.science.cmu.ac.th)

    การใช้เซิร์ฟเวอร์หลายเครื่องทำงานในแบบเดียวกันก็เพื่อกระจายภาระของเซิร์ฟเวอร์ออกไป และเพิ่มระดับของระบบสำรองและประสิทธิภาพการทำงานด้วย นอกจากนี้ยังทำเพื่อใช้เคลื่อนย้ายข้อมูลไปยังเครื่องที่อาจเข้าถึงได้ง่ายกว่า ข้อกำหนด X.500 คือไม่ว่าไคลเอนต์จะเข้าถึงข้อมูลจากเซิร์ฟเวอร์เครื่องใดก็ตาม คำตอบที่ได้รับจะต้องเหมือนกันเสมอ เซิร์ฟเวอร์อาจจะไม่มีข้อมูลที่ไคลเอนต์ต้องการแต่ก็ต้องสามารถสนองไคลเอนต์ได้ด้วยการทำ Chaining หรือไปสอบถามจากเซิร์ฟเวอร์เครื่องอื่น หรือไม่ก็ส่งคำตอบเป็นการอ้างอิงหรือชี้ไปยังเซิร์ฟเวอร์อื่นเพื่อให้ไคลเอนต์สามารถขอข้อมูลจากเซิร์ฟเวอร์เครื่องนั้นต่อไป การทำ Chaining สามารถทำได้โดยใช้ DSP ซึ่งเป็นโปรโตคอลที่ใช้สื่อสารระหว่างเซิร์ฟเวอร์ด้วยกันเท่านั้น แต่การสื่อสารระหว่างเซิร์ฟเวอร์เป็นผลมาจากการทำงานของ DUA

 

ภาพที่ 3 แสดงการทำ Chaining (www2.cs.science.cmu.ac.th)

    ในภาพ ตัวเลขบนลูกศรแสดงลำดับการทำงานของกระบวนการแลกเปลี่ยนข่าวสาร ในขั้นแรกไคลเอนต์ของ X.500 จะส่งคำขอสืบค้นข้อมูลไปยังเซิร์ฟเวอร์ A ซึ่งเซิร์ฟเวอร์ A มีข้อมูลที่ร้องขอมาจึงทำการติดต่อกับเซิร์ฟเวอร์ B ส่งคำตอบกลับมาให้เซิร์ฟเวอร์ A แล้ว เซิร์ฟเวอร์ A ก็ส่งคำตอบให้กับไคลเอนต์ต่อไป

 

ภาพที่ 4 แสดงการทำ Referal (www2.cs.science.cmu.ac.th)

 

    ในภาพไคลเอนต์ของ X.500 ส่งคำร้องขอสืบค้นข้อมูลไปยังเซิร์ฟเวอร์ A เช่นเคย แต่เซิร์ฟเวอร์ A ไม่มีข้อมูลที่ไคลเอนต์ต้องการ เซิร์ฟเวอร์ A จึงตอบกลับไปยังไคลเอนต์ในลักษณะที่ว่า “ ไม่มีข้อมูลที่ต้องการ กรุณาติดต่อเซิร์ฟเวอร์ B” ไคลเอนต์จึงติดต่อไปยังเซิร์ฟเวอร์ B ซึ่งจะเป็นผู้ตอบกลับมายังไคลเอนต์ในที่สุด

ภาพที่ 5 การทำ Multicasting (www2.cs.science.cmu.ac.th)

    หลักการทำ Multicasting ของ X.500 ซึ่งคล้ายกับการทำ Chaining แต่อย่างไรก็ตามการทำ Multicasting จะทำให้คำร้องขอข้อมูลถูกส่งออกไปยังเซิร์ฟเวอร์หลายเครื่องในคราวเดียวกัน เซิร์ฟเวอร์แต่ละเครื่องจะตอบกลับโดยให้ข้อมูลที่ต้องการ หรือตอบว่าเกิดความผิดพลาดขึ้นถ้าไม่สามารถดำเนินการตามที่ไคลเอนต์ร้องขอมาได้ คำตอบที่ได้รับอาจมากกว่าหนึ่งคำตอบ แต่ไคลเอนต์จะเลือกรับคำตอบที่ต้องการเพียงหนึ่งคำตอบเท่านั้น

 

4. LDAP and X.500

•  LDAP ทำงานบน TCP/IP ในขณะที่โปรโตคอล DAP ของ X.500 นั้นต้องการ OSI Stack

•  LDAP มีคำสั่ง Bind ที่ทำให้ใช้งานได้ง่าย ไคลเอนต์ของ LDAP สามารถจะทำการ Bind โดยไม่ต้องระบุตัวเอง      (Anonymous Bind) นั่นคือใช้งานได้โดยไม่ต้องมีการแจ้งรหัสผ่านในการทำงาน และสามารถส่งรหัสผ่านในรูปแบบข้อความธรรมดาได้ด้วย ขณะที่ X.500 นั้นใช้ระบบการเข้ารหัสลับที่เข้มงวด

•  LDAP ไม่มีคำสั่งที่ใช้ในการอ่าน ( Read) หรือแสดงรายละเอียด ( List) ไคลเอนต์ต้องใช้คำสั่ง Search ที่สามารถให้ผลลัพธ์ได้ในลักษณะเดียวกัน -ไคลเอนต์ของ LDAP จะติดต่อกับเซิร์ฟเวอร์ทีละเครื่องเท่านั้น และเซิร์ฟเวอร์ของ LDAP จะไม่มีบริการอ้างไปยังเซิร์ฟเวอร์อื่นให้กับไคลเอนต์

•  LDAP ใช้ระบบการเข้ารหัสที่ง่ายกว่า x.500

 

5. สถาปัตยกรรม LDAP

5.1 LDAP Naming

    วิธีการที่ LDAP ใช้ในการสร้างและอ้างถึงข้อมูล โครงสร้างจะคล้ายกับระบบแฟ้มข้อมูลแบบลำดับขั้นของ UNIX (UNIX hierarchical file system) แต่มีข้อแตกต่างกันดังนี้

•  ที่ root สามารถใส่ข้อมูลได้

•  ทุก node จะมีข้อมูล และมีบาง node มี child nodes

•  มีความสัมพันธ์แบบย้อนหลัง( backwards) เช่น การอ่านชื่อจากซ้ายไปขวา สามารถอ่านได้จาก entry ล่างขึ้นไปด้านบน

tree entry ก็คือ node นั่นเองโดยแต่ละ entry สามารถระบุความเป็น uniquely โดยใช้ distinguished name (DN) DN จะบอกได้แน่ชัดว่า entry อยู่ตำแหน่งไหนใน directory ข้อมูลแบบลำดับขั้น( hierarchical) ถูกนำเสนอโดย directory information tree (DIT)

ภาพที่ 6 แสดงตัวอย่าง directory information tree (DIT) (www2.cs.science.cmu.ac.th)

 

    จากรูปมีพนักงานของบริษัท Acme ทั้ง 2 คนที่มีชื่อเดียวกันคือ Anne Smith Anne Smith ทางซ้ายทำงานฝ่าย sale ใน United States ขณะที่อีกคนทำงานฝ่าย Server Development ใน United Kingdom Anne Smith ทางขวามี common name (cn) คือ Anne Smith ทำงานใน Organizational unit (ou) ชื่อ Server Development ใน country(c) Great Britain(uk) Organization(o) Acme DN สำหรับ Anne Smith คือ cn= Anne Smith ,ou=Server Development ,c=uk ,o=acme

    ใน DN ส่วนประกอบล่างสุดเรียกว่า Relative distinguished name(RDN) สำหรับ DN นี้ RDN คือ cn= Anne Smith ทำนองเดียวกัน RDN ของ entry ที่อยู่เหนือ RDN ของ Anne Smith คือ ou=Server Development ,RDN ของ entry ที่อยู่เหนือ RDN ของ Server Development คือ c= uk ดังนั้น DN จึงเป็นลำดับของ RDNs ที่สามารถแยกได้โดยเครื่องหมายคอมมา( ,)

 

5.2 LDAP information structure

    โครงสร้างข้อมูลที่ถูกจัดเก็บใน LDAP directory

 

ภาพที่ 7 แสดง LDAP Information Storage Entry (www2.cs.science.cmu.ac.th)

    คือข้อมูลพื้นฐานของ LDAP ประกอบด้วย 1 attribute หรือมากกว่า 1 attribute ในแต่ละ node ของ LDAP directory คือ entry Attribute ประกอบด้วยชนิดของ attribute type และ attribute value Attribute type คือ ชนิดของข้อมูล เช่น mail ,jobTitle Attribute value คือ ค่าของข้อมูลที่เก็บ ค่าของข้อมูลจะมี 1 ค่า หรือมากกว่า 1 ค่าก็ ได้ เช่น ค่าของข้อมูลชนิด jobTitle คือ Manager, ค่าของข้อมูลชนิด mai คือ u4305340@cm.edu ,noot@hotmail.com

ภาพที่ 8 แสดง Attribute (www2.cs.science.cmu.ac.th)

    EntryAnne Smith มีหลาย Attributes แต่ละชนิดคือข้อมูลที่เกี่ยวข้องกับตัวเธอ ประกอบด้วย emailaddrs , printername , jpegPhoto และ app preferences นอกจากนี้แล้วในแต่ละ node ในรูปก็คือ entry ที่มี Attributes ถึงแม้จะไม่ได้แสดงค่าเหล่านั้น

 

5.3 LDAP Security

LDAP Security จะประกอบด้วย

1. Authentication มี server สำหรับตรวจสอบผู้ใช้ที่ถูกต้อง check ชื่อและ password ให้ตรงกับค่าของ ชื่อและ password ที่เก็บไว้ใน directory ซึ่ง authentication จะแบ่งได้เป็น 3 ข้อ คือ

•  Anonymous Authentication คือ ไม่มีการใช้ password ในการ login

•  Simple Authentication คือ การใช้ username กับ password เพื่อใช้ในการ login

•  Authentication Using Secure Sockets Layer (SSL) ใช้ certificate key ซึ่งได้รับความเชื่อถือในระดับสูง เพื่อใช้ในการ login

2. Access Control and Authorization คือ การควบคุมการเข้าถึงข้อมูล user จะอ่านหรือ update ข้อมูลเท่านั้น ซึ่งเป็นสิทธิของ user ที่จะอ่านและ update ข้อมูลของตนเอง

3. Data Integrity คือ ข้อมูลที่ถูกส่งผ่านไปให้ user จะต้องมีความถูกต้อง

4. Data Privacy คือ ข้อมูลที่ไม่ถูกเปิดเผยในระหว่างการส่งข้อมูล ข้อมูลจะเป็นความลับ

5. Password Protection คือ จะมีการกำหนด password เพื่อที่จะป้องกันข้อมูลที่เป็นความลับ

 

 

6. หลักการทำงาน

LDAP มีหน้าที่เบื้องต้น 9 ข้อ ซึ่งแบ่งเป็นหัวข้อใหญ่ ๆ ได้ 3 ข้อ

1. Authentication and Control ( การตรวจสอบและการควบคุม)

•  Bind คือ การเชื่อมต่อ LDAP directory โดยที่ Client จะแสดงข้อมูลของตนเอง เพื่อขอ username และ password จะส่งค่า TRUE เมื่อทำการเชื่อมต่อสำเร็จ และจะส่งค่า FALSE เมื่อผิดพลาด

•  Unbind การยกเลิกการติดต่อกับ protocol โดยที่ server สามารถสิ้นสุดการทำงานของ LDAP โดยการตัดการติดต่อกับ protocol จะส่งค่า TRUE เมื่อทำการยกเลิกสำเร็จ และจะส่งค่า FALSE เมื่อผิดพลาด – Abandon เป็นการแสดงว่าจะไม่มีการทำงานนี้ต่อ จะส่ง Message ID ไปยัง LDAP เพื่อทำการยกเลิก

2. Query

•  Search คือการค้นหา ซึ่งถ้าต้องการค้นหาหรืออ่านข้อมูล ต้องมีการระบุค่าของ attribute ของข้อมูล ถ้าไม่พบจะแสดงข้อมูลที่ใกล้เคียงกับข้อมูลที่ต้องการหา

•  Compare entry การเปรียบเทียบข้อมูลที่ต้องการค้นหากับคำที่มีความหมายใกล้เคียง

3. Update

•  Add คือ การเพิ่ม entry ใน directory

•  Delete คือ การลบ entry ใน directory

•  Modify entry , Modify DN/RDN คือ การปรับปรุง entry ที่มีอยู่ ซึ่งเกิดจาก attribute และ value ที่มีการ Add และ delete

 

7. Protocol Model

•  Clients performing protocol operations against servers

•  Client sends protocol request to server

•  Server performs operation on directory

•  Server returns response (results/errors)

•  Asynchronous Server Behavior

    LADP ,protocol ของลูกค้า และผู้ให้บริการ ของ LDAP คือ protocol การวางข้อมูลให้ถูกที่ ส่งไปยังผู้ให้บริการ ลูกค้าจะต้องสร้างข้อความของ LDAP อันบรรจุไปด้วยผู้ให้บริการจะมีขบวนการร้องขอ และการส่งผลสรุปตรงไปยังลูกค้าคล้ายกับ อนุกรมของข้อความของ LDAP เพราะว่า protocol ของ LDAP มีข้อความเป็นพื้นฐาน ดังนั้นจึงยอมให้ลูกค้าเขียนได้หลายๆความต้องการในเวลาหนึ่ง

 

8. Directory Client/Server Interaction

ภาพที่ 9 แสดง Directory Client/Server Interaction (www2.cs.science.cmu.ac.th)

Directory คืออะไร

•  Directory คือ List ของข้อมูลซึ่งมีการจัดลำดับและมีรายละเอียดปลีกย่อยต่างๆลงไปอีก เช่น สมุดโทรศัพท์ก็ถือว่าเป็น Directory เพราะในสมุดโทรศัพท์จะมีชื่อ รายนาม และ เบอร์โทร หรืออาจจะมีเบอร์เพจเจอร์ ซึ่งสมุดโทรศัพท์เราจะลำดับตามรายชื่อผู้ใช้งาน

•  ในความหมายของทางคอมพิวเตอร์ Directory คือ Database พิเศษที่เก็บชนิดข้อมูลเป็น Object และมีการลำดับไว้ ดังนั้นการระบุชนิดข้อมูลเช่น Printer(Object) ก็จะมีค่าต่างๆที่เราเข้าถึงได้ เช่น ค่าจำนวนหน้าที่พิมพ์ได้ต่อนาทีหรือค่า Print Stream ที่สนั º สนุนเช่น ASCII หรือ PostScript เป็นต้น

 

Directory ต่างจาก Database

1.Directory คือ Database พิเศษแต่ไม่ใช่ Database เพราะ Directory สร้างขึ้นมาเพื่อมีลักษณะเฉพาะบางอย่าง เพิ่มขึ้นมา และมีบางส่วนเหมือน Database ลักษณะที่สำคัญของ Directory คือ สร้างมาเพื่อเน้นการเข้าถึง (Read,Search) แต่ไม่ได้ทำมาสำหรับการ Update (Write) บ่อย ๆ เช่น ข้อมูลเบอร์โทรของคนอาจจะมีคนเข้ามาค้นหาวันละเป็นพันคร้ง ดังนั้น Directory จึงทำมาเหมาะสำหรับการค้นหาบ่อย ๆ แต่การ Update จะเป็นหน้าที่ของ Admin หรือเจ้าของข้อมูลนั้นเองชึ่งมีเพียงไม่กี่คนที่สามารถ Update ได้

2.Directory ทำเมื่อเก็บข้อมูลที่มีการเปลี่ยนแปลงไม่บ่อย( Static Data) ไม่เหมาะกับการเก็บข้อมูลที่เปลี่ยนแปลงบ่อย( Dynamic Data) เช่นข้อมูลของ Printer ความสามารถในการ Print ควรเก็บไว้ใน Directory แต่ Job Queue ของ Printer ที่มีการเปลี่ยนแปลงบ่อยไม่ควรเก็บไว้ใน Directory

3. ข้อมูลใน Directory บางครั้งอาจเป็นข้อมูลที่ไม่ถูกต้อง(ในแง่ของผู้ใช้ ไม่ใช่ระบบ) เช่น ที่อยู่ของคนอาจไม่ถูกต้องเพราะคนคนนี้ย้ายที่อยู่ไปแล้ว ดังนั้นไม่ควรเก็บข้อมูลที่ Sensitive ( เช่นยอด Balance ของบัญชี) เอาไว้ที่ Directory

4. การใช้ Database เก็บข้อมูลของ Application เช่น การเก็บข้อมูลของลูกค้าในระบบ Billing เมื่อเราเพิ่มระบบอื่นเข้าไปเช่น Mail ทำให้ Admin ยุ่งยากเช่นอาจจะต้องเพิ่ม Column เข้าไปในตารางที่เก็บข้อมูลลูกค้า แต่ถ้าใช้ Directory จะง่ายต่อการ Extend

5.Database จะใช้ SQL แต่ Directory จะมีภาษาที่ต่างไปและจะช่วยให้เข้าถึงได้เร็วขึ้น ความแตกต่างระหว่าง Database และ Directory ทำให้ผู้ออกแบบระบบต้องคำนึงถึง และ เข้าใจในข้อจำกัดของความแตกต่างทั้งสองเพื่อที่จะได้แบ่งแยกได้ถูกว่าข้อมูลชนิดไหนควรจะเก็บลง Database หรือ Directory

9. Mapping onto Transport

-Uses Connection-oriented, reliable transport

-TCP

•  LDAPMessage PDU mapped onto TCP byte stream

•  LDAP listener on port 389

– Connection Oriented Transport Service (COTS)

•  LDAP PDU is mapped directly onto T-Data

10. Protocol Element Encoding

    1) Encoded for Exchange using BER (Basic Encoding Rules)

2) BER defined in Abstract Syntax Notation One (ASN.1)

3) High Overhead for BER

– Restrictions imposed to improve perf.

– Definite form of length encoding only

– Bit Strings/ Octet Strings and all character string types encoded in primitive form only

    การ Encoding ของ LDAP นั้น อาศัยข้อกำหนดของโปรโตคอล ASN.1 (Syntax Notation One) โดยที่ ASN.1 คือโปรโตคอลที่มีคอมไพเลอร์และรูทีนสำหรับการเข้ารหัส หรือถอดรหัสได้ในตัวเองอย่างอัตโนมัติ และกฎการเข้ารหัส BER (Basic Encoding Rules) โดยที่ BER จะเริ่มต้นทำงานด้วยการทำการสร้างข้อมูลชนิดพื้นฐาน ( Primitive Data Type) เบื้องต้นที่ใช้บ่อยๆ เพื่อให้แอพพลิเคชันนำไปสร้างเป็นข้อมูลที่ซับซ้อน เรียกว่า ข้อมูลที่ถูกสร้าง ( Constructed Type) ซึ่งจะเข้ารหัสแต่ละส่วนของข้อมูลเป็น Tag, ความยาว , และค่า

– ระดับของ Tag มีหลายระดับได้ คือ Universal( ข้อมูลที่กำหนดใน ASN.1), Application
  ( กำหนดใน แอพพลิเคชันพิเศษ) , Private( เฉพาะที่กำหนดโดยผู้ใช้) , Context Specific( ในโครงสร้างข้อมูล)

– รูปแบบ Tag เป็นได้ทั้ง Primitive Data Type หรือ Constructed Type อย่างใดอย่างหนึ่ง

– ค่าของ Tag เป็นได้หลายๆ ค่า เช่น Boolean, Integer, Bit String, Octed String เป็นต้น หมายเหตุ

– กำหนดให้ความยาวของ form ให้เป็นแน่นอนค่าเดียวเท่านั้น

– กำหนดให้ Tag ที่เป็น String อยู่ในรูปแบบพื้นฐานเท่านั้น

11. LDAP Implementations

C Library API

ทั้งนี้ มหาวิทยาลัยมิชิแกนได้สร้างไลบรารีภาษา C ให้ไคลเอนต์สามารถนำไปลิงค์( Link) โดยมีรายละเอียดอธิบายไว้ใน RFC 1823 ซึ่งไลบรารีดังกล่าวทำให้ไคลเอนต์ที่เป็นภาษา C สามารถเรียกใช้ฟังก์ชันได้ง่าย เพียงแค่เขียนข้อความที่เป็นตัวอักษรทั่วไป

•  LDAPv2 – RFC 1823 ‘The LDAP API’

•  LDAPv3 – In Internet Draft stage

Java JNDI

LDAP v3 uses the UTF-8 encoding of the Unicode character set.

HTTP to LDAP gateway

LDAP to X.500 gateway – ldapd

LDAP v2 (Draft Standard)

RFC 1777: LDAP v1

– กำหนดให้ LDAP มีมาตรฐานและอยู่ใน

RFC 1777 ซึ่งมาแทนที่ RFC 1487 RFC 1778: The String Representation of Standard Attribute Syntaxes

•  Tag ที่เป็น String ถูกกำหนดให้มีการเข้ารหัสที่เป็นมาตรฐาน

RFC 1779: A String Representation of Distinguished Names
– Tag ที่เป็น String ถูกกำหนดให้มีการเข้ารหัสโดยใช้ชื่อ Distinguished Names(DN) ซึ่งก็คือ ชื่อเรียกของ Object ที่เป็น attribute ต่างๆ ของข้อมูลที่ LDAP จะสามารถทำการเรียกได้( Naming Schema)

RFC 1959: An LDAP URL Format

– กำหนดรูปแบบของ URL ของ LDAP ให้เป็นมาตรฐานเดียวกัน

RFC 1960: A String Representation of LDAP Search Filters
– การ Search ข้อมูลที่มี Tag เป็น String ถูกกำหนดให้มีการเข้ารหัสที่เป็นมาตรฐาน

X5.00 v/s LDAP

•  LDAP ทำงานบน TCP/IP ในขณะที่โปรโตคอล DAP ของ X.500 ต้องการ OSI Stack

•  LDAP มีคำสั่ง Bind ทำให้ใช้งานง่าย ไคลเอนต์ของ LDAP สามารถใช้งานโดยไม่ต้องแจ้งรหัสผ่าน (Anonymous Bind) และสามารถส่งรหัสผ่านในรูปแบบข้อความธรรมดาได้ ในขณะที่ X.500 ใช้ ระบบการเข้ารหัสที่เข้างวด

•  LDAP ไมมีคำสั่งในการอ่าน( Read) หรือ แสดงรายละเอียด( List) ไคลเอนต์ต้องใช้คำสั่ง Search แทน

•  ไคลเอนต์ของ LDAP ติดต่อกับ Server ได้ทีละเครื่อง และ Server ของ LDAP จะไม่อ้างอิงไปยัง Server อื่นให้กับไคลเอนต์

•  LDAP ใช้การเข้ารหัสที่ง่ายกว่า X.500 มาก

Version 2 v/s Version 3

Referrals – A server that does not store the requested data can refer the client to another server. LDAP v2 ไคลเอนต์ต้องส่งคำขอข้อมูลมาที่หน่วยประมวลผลส่วนหน้า( Front-end) ของ Server เพื่อแปลง LDAP เป็น DAP แต่ใน LDAP v3 ไม่ต้องใช้ตัวแปลงอีก

Security – Extensible authentication using Simple Authentication and Security Layer (SASL) LDAP v3 อนุญาตให้สามารถเพิ่มระดับความปลอดภัย โดยอนุญาตให้ใช้ใบรับรองสิทธิของ X.509 ซึ่งเป็นข้อกำหนดมาตรฐานที่ใช้ในการอธิบายรูปแบบของใบรับรองสิทธิ และยังระบุกลไกสำหรับใช้ SSL (Secure Socket Layer) ให้กับไคลเอนต์

Internationalization – UTF-8 support for international characters. LDAP v3 อนุญาตให้ใช้รหัส Unicode ซึ่งช่วยให้มีความยืดหยุ่นที่ดี เหมาะแก่การทำไปใช้ในประเทศต่างๆ

Extensibility – New object types and operations can be dynamically defined and schema published in a standard manner.

       LDAP v2 ไคลเอนต์สามารถขอข้อมูลเป็นกลุ่ม Object Class จึงไม่สามารถต่อขยายไปได้อีก แต่ใน LDAP v3 ไคลเอนต์สามารถขอข้อมูลได้เป็นช่วงหรือกลุ่มของ Object Class และ Attribute ใหม่ขยายออกให้มากกว่าเดิมได้ ทำให้ไคลเอนต์สามารถรู้ๆได้ทันทีเมื่อมี Attribute ใหม่เกิดขึ้น

 

12. ข้อแตกต่างของ LDAP และ X .500

– LDAP ทำงานบน TCP/IP ในขณะที่โปรโตคอล DAP ของ X.500 นั้นต้องการ OSI Stack
– LDAP มีคำสั่ง Bind ที่ทำให้ใช้งานได้ง่าย ไคลเอนต์ของ LDAP สามารถจะทำการ Bind โดยไม่ต้องระบุตัวเอง      (Anonymous Bind) นั่นคือใช้งานได้โดยไม่ต้องมีการแจ้งรหัสผ่านในการทำงาน และสามารถส่งรหัสผ่านในรูปแบบข้อความธรรมดาได้ด้วย ขณะที่ X.500 นั้นใช้ระบบการเข้ารหัสลับที่เข้มงวด
– LDAP ไม่มีคำสั่งที่ใช้ในการอ่าน ( Read) หรือแสดงรายละเอียด ( List) ไคลเอนต์ต้องใช้คำสั่ง Search ที่สามารถให้ผลลัพธ์ได้ในลักษณะเดียวกัน

-ไคลเอนต์ของ LDAP จะติดต่อกับเซิร์ฟเวอร์ทีละเครื่องเท่านั้น และเซิร์ฟเวอร์ของ LDAP จะไม่มีบริการอ้างไปยังเซิร์ฟเวอร์อื่นให้กับไคลเอนต์
– LDAP ใช้ระบบการเข้ารหัสที่ง่ายกว่า x.500

 

13. ข้อดี – ข้อเสีย LDAP

ข้อดีของ LDAP

•  LDAP เก็บข้อมูลเป็นโครงสร้างแบบต้นไม้ ซึ่งสามารถเก็บข้อมูลแยกกันอยู่หลายๆเครื่องได้ โดยแยกตามโครงสร้างของต้นไม้

•  LDAP สามารถทำงานได้ทั้งบนโปรโตคอลแบบ Secure และไม่ Secure

•  ระบบ Authentication บน Linux สามารถใช้งานผ่าน LDAP ได้อย่างสมบูรณ์

•  สามารถทำ Replication ได้

ข้อเสียของ LDAP

•  การคอนฟิกยุ่งยากมาก ต้องใช้คำสั่งเฉพาะของ LDAP ในการเพิ่ม / ลบผู้ใช้ออกจากฐานข้อมูลเท่านั้น

•  โครงสร้างข้อมูลซับซ้อน

 

14. สรุป

นอกจากประโยชน์ในการค้นหาข้อมูลได้อย่างรวดเร็วแล้ว Directory ยังเป็นโครงสร้างข้อมูลที่แสดงให้ User เห็นข้อมูลทั้งหมดได้จากมุมมองเดียว ( Single Logical View) แม้ว่าแท้จริงแล้ว ข้อมูลเหล่านั้นอาจถูกเก็บแยกกันอยู่อย่างกระจัดกระจายตาม Host ต่างๆ บน Distributed System ซึ่งข้อดีต่างๆ เหล่านี้ ทำให้มีการพัฒนา Application ที่ใช้ Directory Service ออกมามากมาย และ LDAP ก็คือหนึ่งในมาตรฐานที่ใช้จัดการ การรับส่งข้อมูลระหว่าง Application Server ที่เก็บ Directory เหล่านี้ กับ Client Application ที่เป็นฝ่ายเรียกดูข้อมูลจาก Directory

อีกหนึ่งสาเหตุที่จำเป็นต้องมีมาตรฐานในการเข้าถึงข้อมูลใน Directory นั้นก็เพื่อให้การพัฒนา Application ที่ใช้ติดต่อกับ Directory Server นั้นมีความยืดหยุ่นขึ้น โดย Developer สามารถเรียกใช้ API (Application Programming Interface) เพื่อติดต่อกับ Directory Service ได้ โดยไม่ต้องทราบวิธีการเข้าถึงโดยละเอียด เช่นโครงสร้างของ Directory หรือ ชนิดของข้อมูล ( Data Type) ภายใน หรือไม่จำเป็นต้องปรับแก้ Application ใหม่หากมีความต้องการ Data Type ใหม่ๆ เป็นต้น

นอกเหนือจากที่กล่าวมาข้างต้นแล้ว การมีมาตรฐานเดียวกัน ทำให้ผู้ผลิต Application และ Network device ที่รองรับการใช้งาน Directory Service มีระเบียบวิธีที่ชัดเจนเป็นกลาง ทำให้การติดต่อระหว่าง Application จากต่างผู้ผลิต หรือ ต่าง Platform นั้นเป็นไปได้อย่างรวดเร็ว ถูกต้อง และปลอดภัย โดยไม่ต้องทราบข้อมูลที่ใช้ในการติดต่อ เช่น Platform ที่ใช้ , Host Name หรือ IP address เช่นเดียวกับการที่เราต้องมี TCI/IP, HTTP, FTP, RPC หรือ ORB เป็นมาตรฐานที่ใช้อยู่ทั่วโลก

LDAP เป็นมาตรฐานที่ได้รับการยอมรับอย่างกว้างขวาง และมี Application Vendor อยู่หลายราย อาทิ OpenLDAP, IBM, Oracle, Microsoft ซึ่ง Product ที่ได้รับความนิยมก็ได้แก่ Slapd ของ University of Michigan และ Openldap, Directory Server ของ Netscape, Active Directory (AD) ของ Microsoft, Novell Directory Services (NDS) ของ Novell, Sun Directory Services (SDS) ของ Sun และ Internet Directory Server (IDS) ของ Lucent

LDAP ได้รับการออกแบบมาให้อยู่บน TCP/IP Layer ที่มีเพียง 4 Layer ทำให้มีความต้องการ Resource น้อยกว่า DAP ของมาตรฐาน X.500 อย่างไรก็ตาม หากมีความต้องการติดต่อกันระหว่าง LDAP Client กับ X.500 Server จำเป็นจะต้องมีการติดต่อผ่าน Gateway ที่เรียกว่า LDAP Server

หมวดหมู่:คุย Linux
  1. ยังไม่มีความเห็น
  1. No trackbacks yet.

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: