2 May 2011

The Lightweight Directory Access Protocol ( LDAP ) ภาค 2

      สำหรับบทความนี้ เรามาดูเรื่องของ Attribute (ผมนึกถึง คุณสมบัติ ) ของ LDAP กันบ้างนะครับว่าสามารถกำหนดอะไรให้ได้บ้างนะครับ

Attribute สามารถสนับสนุนข้อมูลชนิดต่างๆ มีดังนี้ *****
1. Attribute String  : กำหนดข้อมูลประเภท “ข้อความ” ได้
2. Attribute  Number (Integer) : กำหนดข้อมูลประเภท “ตัวเลข” ได้
3. Attribute  Time :  กำหนดข้อมูลประเภท “เวลา” ได้
4. Attribute  Telephone Numbers :  กำหนดข้อมูลประเภท “หมายเลขโทรศัพท์” ได้
5. Attribute Boolean : กำหนดข้อมูลประเภท “บูลีน =True(จริง)/False(เท็จ)” ได้
6.  Attribute Binary : กำหนดข้อมูลประเภท  “ไบนารี่” ได้
7. Attribute Distinguished Name :กำหนดข้อมูลประเภท “Distinguished Name” 
8.  Attribute Bit Strings :  กำหนดข้อมูลประเภท “บิต” ได้


 ตัวอย่างของ Attribute 

Meaning of Attributes In the ASET Penn State White Pages LDAP Database

LDAP attribute
PH equivalent
Data Source
Object Class
Intended Use
createTimestamp
NONE
ldap
internal
when entry was created
psAdminarea
admin_area
psu
psuP
your administrative area
psBirthday
Birthday
USER
psuP
your birth date
psCallsign
Callsign
USER
psuP
your ham radio call sign
psCampus
Campus
psu
psuP
your campus name
psColleges
Colleges
USER
psuP
colleges you attended
cn (commonName)
name
psu/user
person  MV
your names and nicknames
displayName
NONE
psu
inetOrgP
preferred name for display
psCountries
Country
USER
psuP 
countries expertise
psCurriculum
Curriculum
psu
psuP
student's main curriculum
psAdditionalCurricula
NONE
psu
psuP  MV
other majors
psDepartment
Department
psu
psuP
your Penn State department name
psdirIDN
NONE
psu
psuP
for internal use
fax (fascimileTelephoneNumber)
fax
USER
orgPers
your fax number
givenName
NONE
psu
inetOrgP
your first + middle names
psHighschool
Highschool
USER
psuP
HS you graduated from
homePostalAddress
home_Address
USER
inetOrgP
home address
Homephone
home_phone
USER
inetOrgP
home phone
psHours
Hours
USER
psuP
faculty/staff hours
psIDN
ssn
psu
psuP
ssn. Never displayed.
psLanguages
Languages
USER
psuP
natural languages expertise
Mail
Send_Email_To
psu/user
inetOrgP
your preferred e-mail address
psMailID
alias
USER
psuP
unique mailing ids (uid is one)
psMailbox
email
psu/user
psuP
where e-mail actually is stored
Mobile
NONE
USER
inetOrgP
mobile phone # e.g.,cellphone
edupersonNickname
Nickname
USER
psuP MV
other name commonly used to address you in writing/speech (e.g., Joe for Joseph)
psOfficeAddress
Office_Address
USER
psuP
your office address
psOfficeLocation
Office_Location
USER
psuP
your office location
psOfficePhone
Office_Phone
USER
psuP
your office phone
psOtherInfo
other
USER
psuP
any other personal data
pager (pagerTelephoneNumber)
pager
USER
inetOrgP
your pager number
psPermanentAddress
Permanent_Address
USER
psuP
your pemanent address
psPermanentPhone
Permanent_Phone
USER
psuP
your permanent phone #
postalAddress
Address
psu
orgPers
your local address
eduPersonPrimaryAffiliation
type
psu
eduPerson
facstaff, student, etc
eduPersonPrincipalName
NONE
psu
eduPerson
uid@psu.edu
psProject
Project
USER
psuP
your Penn State-related projects
Uid
userid
psu
inetOrgP
your permanent unique userid
psResearch
Research
USER
psuP
your Penn State-related research
sn (surname)
NONE
psu
person
your last name
psTeaching
Teaching
USER
psuP
about courses you teach
telephoneNumber
phone
psu
inetOrgP
local telephone number
Title
title
psu
OrgPers
your faculty/staff title
labeledURI
url
USER
inetOrgP
e.g., a personal URL
modifyTimestamp
last_seen
ldap
internal
when entry was modified


Credit : http://aset.its.psu.edu/ldap/ldap_attributes.html

1.             Object Classes 

คือ Object ที่ประกอบด้วย Attribute  มีลักษณะเหมือนคล้าย Packet ของ Attribute ซึ่งมีคุณลักษณะสำคัญ 3 อย่างคือ

1.  Object class ใช้หมายเลข Object Identifier (OID ) เป็นหมายเลขใช้ในการอ้างอิงและมีโครงสร้างแบบลำดับชั้น มีทั้งส่วนที่เป็นมาตรฐานและบางส่วนที่ไม่ตายตัวอาจกำหนดจากผู้ดูแลระบบเอง ซึ่งใช้ในการระบุเพื่อไม่ให้ซ้ำซ้อน

2.  สามารถกำหนดระดับความต้องการของ Attribute ที่จัดเก็บข้อมูล โดย Keyword
§  “MUST” คือสำหรับ Attribute ที่จะต้องกำหนดค่าให้ (Mandatory Attribute)
§  “MAY” คือสำหรับ Attribute ที่เป็นส่วนเสริมหรือเพิ่มเติม (Optional Attribute) ซึ่งจะมีการกำหนดค่าหรือไม่ก็ได้

3. มีการถ่ายทอดคุณลักษณะของ Parent Object Class    มายัง Child Object Class

ยังไม่จบนะครับ โปรดติ..ก ต....า....ม ต....อ...ง ต่อไป นะครับ 5555+

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+ ^^