LDAP คืออะไร?
LDAP นั้นย่อมาจาก Lightweight Directory Access Protocol ซึ่งก็แปลตรงๆก็คือ โปรโตคอลที่ช่วยให้เราเข้าถึงข้อมูลที่อยู่ใน Directory Service นั่นเอง ซึ่งตรงนี้เราจะยังคงจำเพาะเจาะไปที่กลุ่มของ Directory Service ที่มีชื่อรวมกันว่า X.500 ซึ่งภายในกลุ่มของ X.500 เองก็จะมีหลายๆ Directory Service เช่น
- DAP (Directory Access Protocol)
- DSP (Directory System Protocal)
- DISP (Directory Information Shadowing Protocol)
- DOP (Directory Operational Binding Management Protocol)
| ที่มา : http://en.wikipedia.org/wiki/X.500
โดย LDAP นั้นก็จะวิ่งอยู่บน TCP/IP โปรโคคอลด้วยเช่นกัน ส่วนข้อมูลที่เก็บอยู่ใน Directory นั้นก็จะมีลักษณะเป็น "Entry" ซึ่ง Entry นี้ก็จะเป็นกลุ่มของ Attribute ที่มี Distinguished Name หรือเรียกสั้นๆ ว่า DN (ต่อไปผมจะเรียกว่า DN นะครับ) เพียงอันเดียว
กลับไปที่ Attribute ก่อนนะครับ Attribute นั้นจะบอกว่า ข้อมูลที่อยู่ใน Directory นั้นมีชนิดของข้อมูล(Type) ว่าสามารถเป็นอะไรได้บ้าง เช่น ตัวอักษร ตัวเลข นอกจากนี้ Attrubute ก็ยังมีหน้าที่บอกได้ว่า ไอ้ข้อมูลที่จะเอามาใส่นี้สามารถมีค่าได้กี่อัน กี่ค่า
ส่วน DN นั้นก็คือ ชื่อของ Entry ที่เค้ามาช่วยเราแยกแยะข้อมูลใน Directory ฟังดูอาจจะงงๆ เนาะ ดูตัวอย่างกันดีกว่า ครับ
โครงสร้างข้อมูลของตัว Directory
เรามาเริ่มที่ตัวอย่างข้อมูลที่ได้จาก ตัวอย่างที่อยู่ กันดีกว่า เช่น
Acme Services 123 W. First St. Chicago, IL 60616-1234 (773) 555-8943 or (800) 555 9834
จากตัวอย่างจะเห็นว่าข้อมูลดังกล่าว ถ้าเราต้องการหาที่อยู่ของ บ. Acme Services เราก็จะสามารถหาได้โดยใช้ชื่อบริษัทเพียงอย่างเดียว แต่เหนือสิ่งอื่นใดเราควรที่จะตั้งชื่อให้แต่ Entry ก่อนดีกว่า เช่น
Organization Name: Acme Services
Street Address: 123 West First Street
City: Chicago
State: Illinois
Postal Code: 60616-1234
Country: USA
Phone Number: +1 773 555 8943
Phone Number: +1 800 555 9834
Street Address: 123 West First Street
City: Chicago
State: Illinois
Postal Code: 60616-1234
Country: USA
Phone Number: +1 773 555 8943
Phone Number: +1 800 555 9834
จะเห็นว่าเมื่อมีการตั้งชื่อให้กับข้อมูล ในแต่ละส่วนจะช่วยให้เราเข้าใจข้อมูลดังกล่าวมากขึ้น เห็นข้อมูลทั้งหมดได้ชัดเจนขึ้นว่าส่วนไหนคืออะไร แต่ปัญหามันยังไม่จบเพียงเท่านั้น แล้วถ้าสมมติว่า ไอ้ บ. Acme Services มันมีสาขาอยู่ที่อื่นด้วยหล่ะ เราจะทำการ identified ยังไงว่าเบอร์โทรอันไหนเป็นของสาขาไหน มันเลยจะกลายเป็นที่มาของหัวข้อถัดไป ครับ
A Distinguished Name : DN
จากปัญหาหัวข้อที่ผ่านมาเราพบว่า ในบางครั้งข้อมูลในบาง Entry ของใน Directory นั้นมีการซ้ำกันของข้อมูล(ชื่อ บ. เหมือนกันแต่ อยู่คนละสาขา คนละจังหวัด) ทำให้การเข้าถึงข้อมูลนั้นอาจจะผิดพลาดได้ ตัว LDAP เองก็พบปัญหาดังกล่าวเช่นกันจึงมีการ กำหนด DN (Distinguished Name) เพื่อกำหนดกรอบของข้อมูลขึ้นมา เช่น
dn: o=Acme Services, l=Chicago, st=Illinois, c=US
และ
dn: o=Acme Services, l=Springfield, st=Illinois, c=US
คราวนี้ พอมี DN ก็จะทำให้ Scope ของ Directory ลดลง อ้ออย่าลืมครับ DN นั้นจะเป็นแบบ non case sentsitive นะครับจะถือว่าตัวเล็กตัวใหญ่มีค่าเหมือนกัน
ตัวอย่างข้อมูล ใน LDAP
คราวนี้เราก็มาดูตัวมูลใน LDAP กันมั่งว่ามันเก็บเหมือนหรือแตกต่าง จากการเก็บข้อมูลใน Directory อย่างไร และนี่ก็เป็นตัวอย่างจาก LDAP Entry ครับ
dn: o=Acme Services, l=Chicago, st=Illinois, c=US
o: Acme Services
postalAddress: 123 West First Street
l: Chicago
st: Illinois
postalCode: 60616-1234
c: US
telephoneNumber: +1 773 555 8943
telephoneNumber: +1 800 555 9834
objectclass: organization
o: Acme Services
postalAddress: 123 West First Street
l: Chicago
st: Illinois
postalCode: 60616-1234
c: US
telephoneNumber: +1 773 555 8943
telephoneNumber: +1 800 555 9834
objectclass: organization
บรรทัดแรกจะเป็น DN ส่วนบรรทัดที่เหลือจะเป็น Attribute ในแต่ละ Attribute ก็จะมี Attribute Name เช่น postalAddress คำถามก็คือ เราตั้งมันตอนไหน มันมาถูกเอาวางตรงนี้ได้อย่างไร คำตอบก็คือ เอามาจาก Schema ครับ ซึ่งเดี๋ยวเราค่อยพูดในหัวข้อถัดๆ ไปว่า Schema คืออะไร
ในแต่ละ Attribute นั้นสามารถมีได้มากกว่า 1 ชื่อก็ได้นะครับ เช่น c หรือ countryName ก็จะบอกว่าเป็น Attribute Name ของข้อมูลที่เป็น ชื่อของประเทศ ในแต่ละ Record เราสามารถที่จะมี Attribute ได้หลายๆ ค่าเช่นกันเช่น telephoneNumber ในตัวอย่างนั้นจะมี 2 เบอร์
ในการกำหนดค่าของ Attribute เราจะทำการกำหนดในส่วนที่เรียกว่า attribution definition ซึ่งตรงนี้เราสามารถที่จะกำหนดได้ว่า ค่าที่เราจะเอามาใส่เป็นข้อมูลแบบใด, มีความยาวได้กี่ตัวอักษร, มี Attribute Name อะไรบ้างและกำหนด Default ของ Attribute Name เป็นอะไร และสามารถใส่ค่าได้กี่ค่า เป็นต้น
ซึ่งข้อมูลเหล่านี้จะถูกรวมไว้ใน Schema definition ซึ่ง Server จะเข้าไปอ่านตอนที่เรา Start LDAP Service ขึ้นมา และก็เหมือนเดิมครับ Attribute Name เป็นข้อมูลแบบ non-case sensitive ตัวเล็กตัวใหญ่มีค่าเท่ากัน
Object Class Attribute
จากตัวอย่างด้านบน เราจะเห็นว่าที่ Attribute สุดท้ายจะมี Attribute Name ที่ชื่อว่า objectClass ซึ่งเป็น Attribute แบบพิเศษที่ทุกๆ Entry ของ LDAP ต้องมีเพื่อบ่งบอกว่าใน Entry นี้จะประกอบด้วย Attribute อะไรได้บ้าง ตัว objectClass นั้นก็จะมีคุณสมบัติเหมือน Attribute ทั่วๆไปเพียงแต่ว่าจะไม่ถูกนำมาใช้งานหรือกำหนดค่าให้มันนั่นเอง
Note : LDAP Schema นั้นจะเป็นตัวบอกว่าข้อมูลที่เก็บในแต่ละ record ที่อยู่ในแต่ละ Directory มีชนิดเป็นอะไรบ้าง ลักษณะการจัดเก็บเป็นอย่างไร ซึ่งใน Schema ก็จะมีข้อมูลที่สำคัญหลักๆ อยู่ 2 อันคือ attribute type definitions และ object class definitions ซึ่งสุดท้ายเดี๋ยวเราจะกลับมาคุยเรื่องนี้กันอีกครั้งนะครับ
ดังนั้น LDAP Record จะประกอบด้วย DN เพียงหนึ่งอัน และมี attributes หนึ่งอันหรือมากกว่า ที่สำคัญต้องมี ต้องมี ObjectClass ด้วยอีกหนึ่งอัน
ของคุณแหล่งข้อมูล : aoddy.com
ของคุณแหล่งข้อมูล : aoddy.com