4. เชื่อมต่อไคลเอ็นต์ LDAP กับบริการ LDAP ที่ปลอดภัย

ใช้วิธีการในบทความนี้เพื่อเชื่อมต่อไคลเอ็นต์ LDAP กับบริการ LDAP ที่ปลอดภัย

สำคัญ

  • โปรดอ่านเอกสารประกอบของผู้ให้บริการ
    รายละเอียดในบทความนี้เกี่ยวกับการเชื่อมต่อไคลเอ็นต์ LDAP กับบริการ LDAP ที่ปลอดภัยมีไว้เพื่อใช้อ้างอิงเท่านั้น และอาจมีการเปลี่ยนแปลงได้ นอกเหนือจากวิธีการช่วยเหลือเหล่านี้ โปรดอ่านเอกสารประกอบของผู้ให้บริการเพื่อดูขั้นตอนล่าสุดในการเชื่อมต่อไคลเอ็นต์กับบริการ LDAP ที่ปลอดภัย
  • ก่อนเริ่มต้น
    ก่อนใช้คำแนะนำเหล่านี้ โปรดตรวจสอบว่าคุณได้เพิ่มไคลเอ็นต์ไปยังบริการ LDAP ที่ปลอดภัย, กำหนดค่าสิทธิ์การเข้าถึง, ดาวน์โหลดใบรับรองไคลเอ็นต์และคีย์ และสร้างข้อมูลเข้าสู่ระบบเพื่อการเข้าถึง (ไม่บังคับ) แล้ว
  • การทดสอบการเชื่อมต่อ
    ก่อนที่จะเริ่มทำตามขั้นตอนเหล่านี้ คุณอาจต้องทดสอบการเชื่อมต่ออย่างรวดเร็วโดยใช้เครื่องมือง่ายๆ เช่น ldapsearch, ADSI และ ldp.exe นอกจากนี้ คุณยังใช้เครื่องมือเหล่านี้เพื่อแก้ปัญหาได้หากพบข้อผิดพลาดขณะพยายามเชื่อมต่อไคลเอ็นต์ LDAP กับบริการ โปรดดูวิธีการที่หัวข้อการทดสอบการเชื่อมต่อ LDAP ที่ปลอดภัย
  • วิธีดำเนินการตามขั้นตอนการตั้งค่าให้เสร็จสมบูรณ์
    หลังจากเชื่อมต่อไคลเอ็นต์ LDAP โดยทำตามวิธีการในหน้านี้แล้ว คุณจะต้องตั้งค่าไคลเอ็นต์ LDAP ให้เสร็จสมบูรณ์โดยเปลี่ยนสถานะบริการเป็นเปิดในคอนโซลผู้ดูแลระบบของ Google ดูวิธีการได้ที่หัวข้อ 5. เปลี่ยนไคลเอ็นต์ LDAP เป็นเปิด

มีอะไรบ้างในบทความนี้

บทความนี้ประกอบด้วยหัวข้อต่อไปนี้

วิธีการเหล่านี้จะถือว่าไฟล์คีย์และใบรับรองของไคลเอ็นต์ที่คุณดาวน์โหลดมีชื่อว่า ldap-client.key และ ldap-client.crt

วิธีการกำหนดค่าพื้นฐาน

ส่วนนี้ประกอบด้วยวิธีการทั่วไปในการเชื่อมต่อไคลเอ็นต์ LDAP กับบริการ LDAP ที่ปลอดภัย หากไคลเอ็นต์ LDAP ของคุณไม่อยู่ในรายการวิธีการด้านล่าง โปรดดูเอกสารประกอบของแอปพลิเคชันนั้น

หมายเหตุ: ไคลเอ็นต์ LDAP บางรายการ เช่น Atlassian Jira และ SSSD จะทำการค้นหาผู้ใช้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับผู้ใช้ในระหว่างการตรวจสอบสิทธิ์ผู้ใช้ เพื่อให้แน่ใจว่าการตรวจสอบสิทธิ์ผู้ใช้ทำงานได้อย่างถูกต้องสำหรับไคลเอ็นต์ LDAP ดังกล่าว คุณจะต้องเปิดอ่านข้อมูลผู้ใช้สำหรับหน่วยขององค์กรทั้งหมดที่เปิดยืนยันข้อมูลเข้าสู่ระบบของผู้ใช้ไว้ (ดูวิธีการได้ที่หัวข้อกำหนดค่าสิทธิ์การเข้าถึง)

วิธีเชื่อมต่อไคลเอ็นต์ LDAP กับบริการ LDAP ที่ปลอดภัย

  1. กำหนดค่าไคลเอ็นต์ LDAP โดยให้ Cloud Directory เป็นเซิร์ฟเวอร์ LDAP
  2. อัปโหลดใบรับรองไปยังไคลเอ็นต์ LDAP

    บริการ LDAP ที่ปลอดภัยใช้ใบรับรองไคลเอ็นต์ TLS เป็นกลไกการตรวจสอบสิทธิ์หลัก หากต้องการเริ่มกระบวนการอัปโหลดใบรับรองไปยังไคลเอ็นต์ LDAP ให้เปิดการตั้งค่าการตรวจสอบสิทธิ์หรือไดเรกทอรีของไคลเอ็นต์ LDAP แล้วป้อนรายละเอียดจากตารางด้านล่าง

    หมายเหตุ: โปรดดูรายละเอียดทั้งหมดเกี่ยวกับวิธีและตำแหน่งที่จะอัปโหลดใบรับรอง TLS ในเอกสารประกอบของผู้ให้บริการ

โปรดใช้ตารางต่อไปนี้เป็นข้อมูลสำหรับการเชื่อมต่อพื้นฐาน

Hostname

ldap.google.com

พอร์ต

389 สำหรับ LDAP ที่เปิดใช้ StartTLS
636 สำหรับ LDAPS (เปิดใช้ SSL/TLS)

Base DN

โดเมนของคุณในรูปแบบ DN ตัวอย่างเช่น

dc=example,dc=com สำหรับ example.com

ชื่อผู้ใช้และรหัสผ่าน

นอกเหนือจากการตรวจสอบสิทธิ์ด้วยใบรับรอง ไคลเอ็นต์ LDAP บางประเภทจะกำหนดให้คุณป้อนชื่อผู้ใช้และรหัสผ่านด้วย หากไม่มีการกำหนดให้ป้อนชื่อผู้ใช้และรหัสผ่าน ให้ข้ามขั้นตอนนี้ได้

สร้างชื่อผู้ใช้และรหัสผ่านในคอนโซลผู้ดูแลระบบของ Google โปรดดูวิธีสร้างข้อมูลเข้าสู่ระบบ

ใบรับรองไคลเอ็นต์และไฟล์คีย์

ใช้ไฟล์ใบรับรองและคีย์ที่ดาวน์โหลดจากคอนโซลผู้ดูแลระบบของ Google หากไคลเอ็นต์ LDAP ไม่มีวิธีตรวจสอบสิทธิ์ด้วยใบรับรองไคลเอ็นต์ โปรดดูหัวข้อใช้ stunnel เป็นพร็อกซี

สำคัญ: ไคลเอ็นต์ LDAP บางรายการ เช่น Apache Directory Studio ไม่รองรับการอัปโหลดใบรับรองดิจิทัล โปรดดูวิธีการสำหรับกรณีนี้ที่หัวข้อใช้ stunnel เป็นพร็อกซี

วิธีการกำหนดค่าสำหรับไคลเอ็นต์ LDAP ที่เฉพาะเจาะจง

การแก้ไข ADSI (สำหรับ Windows)

โปรดทำตามขั้นตอนต่อไปนี้

  1. ทำตามขั้นตอนที่ 1-11 ใน ldp.exe (Windows) เพื่อติดตั้งใบรับรองไคลเอ็นต์
  2. ไปที่ Action > Connect to…
  3. ป้อนการตั้งค่าการเชื่อมต่อต่อไปนี้

    ชื่อ: พิมพ์ชื่อสำหรับการเชื่อมต่อ เช่น Google LDAP
    จุดเชื่อมต่อ: "เลือกหรือพิมพ์ชื่อที่จำแนกได้หรือบริบทการตั้งชื่อ"
    ป้อนชื่อโดเมนในรูปแบบ DN (เช่น dc=example,dc=com สำหรับ example.com)

    คอมพิวเตอร์: "เลือกหรือพิมพ์โดเมนหรือเซิร์ฟเวอร์"
    ldap.google.com

    ใช้การเข้ารหัสตาม SSL: เลือกไว้
  4. คลิกขั้นสูง... แล้วป้อนรายละเอียดต่อไปนี้

    ระบุข้อมูลเข้าสู่ระบบ: เลือกไว้
    ชื่อผู้ใช้: ชื่อผู้ใช้ของข้อมูลเข้าสู่ระบบเพื่อเข้าถึงจากคอนโซลผู้ดูแลระบบ
    รหัสผ่าน: รหัสผ่านของข้อมูลเข้าสู่ระบบเพื่อเข้าถึงจากคอนโซลผู้ดูแลระบบ
    หมายเลขพอร์ต: 636
    โปรโตคอล: LDAP
    การตรวจสอบสิทธิ์การเชื่อมโยงแบบง่าย: เลือกไว้
  5. คลิก OK แล้วคลิก OK อีกครั้ง
  6. หากการเชื่อมต่อเสร็จสิ้น เนื้อหา Active Directory ใน DN พื้นฐานจะปรากฏในบานหน้าต่างด้านขวา

Apache Directory Studio

หากต้องการใช้ Apache Directory Studio คุณจะต้องเชื่อมต่อผ่าน stunnel และใช้ข้อมูลเข้าสู่ระบบ (ชื่อผู้ใช้และรหัสผ่าน) ที่สร้างขึ้นในคอนโซลผู้ดูแลระบบของ Google สมมติว่ามีข้อมูลเข้าสู่ระบบอยู่แล้ว และสมมติว่า stunnel กำลังฟังพอร์ต localhost 1389 ให้ทำตามขั้นตอนต่อไปนี้

  1. คลิก File > New…
  2. เลือก LDAP Browser > LDAP Connection.
  3. คลิกถัดไป
  4. ป้อนพารามิเตอร์การเชื่อมต่อดังนี้

    ชื่อการเชื่อมต่อ: เลือกชื่อ เช่น Google LDAP
    ชื่อโฮสต์: localhost
    พอร์ต: 1389 (หรือพอร์ตที่ stunnel ฟัง/ยอมรับ)
    วิธีการเข้ารหัส: ไม่มีการเข้ารหัส (หมายเหตุ: หาก stunnel ทำงานจากระยะไกล ขอแนะนำให้เข้ารหัสระหว่าง stunnel กับไคลเอ็นต์)
  5. คลิกถัดไป
  6. ป้อนพารามิเตอร์การตรวจสอบสิทธิ์ดังนี้

    วิธีการตรวจสอบสิทธิ์: การตรวจสอบสิทธิ์แบบง่าย
    Bind DN หรือผู้ใช้: ชื่อผู้ใช้ของข้อมูลเข้าสู่ระบบเพื่อการเข้าถึงจากคอนโซลผู้ดูแลระบบ
    รหัสผ่าน Bind: รหัสผ่านของข้อมูลเข้าสู่ระบบเพื่อการเข้าถึงจากคอนโซลผู้ดูแลระบบ
  7. คลิกถัดไป
  8. ป้อน DN พื้นฐาน
    นี่คือชื่อโดเมนของคุณในรูปแบบ DN (dc=example,dc=com สำหรับ example.com)
  9. คลิกเสร็จสิ้น

Atlassian Jira

Atlassian Jira จะทำการค้นหาผู้ใช้เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับผู้ใช้ในระหว่างการตรวจสอบสิทธิ์ผู้ใช้ เพื่อให้แน่ใจว่าการตรวจสอบสิทธิ์ผู้ใช้ทำงานได้อย่างถูกต้องสำหรับไคลเอ็นต์ LDAP นี้ คุณจะต้องเปิดอ่านข้อมูลผู้ใช้และอ่านข้อมูลกลุ่มสำหรับหน่วยขององค์กรทั้งหมดที่เปิดยืนยันข้อมูลเข้าสู่ระบบของผู้ใช้ไว้ (โปรดดูวิธีการที่หัวข้อกำหนดค่าสิทธิ์การเข้าถึง)

ข้อสำคัญ: การทำตามวิธีการต่อไปนี้อาจเปิดเผย keystorePassword ต่อผู้ใช้และไฟล์บันทึก ใช้มาตรการป้องกันเพื่อหลีกเลี่ยงการเข้าถึงเชลล์ในเครื่อง ไฟล์บันทึก และคอนโซลผู้ดูแลระบบของ Google โดยไม่ได้รับอนุญาต หรือจะใช้วิธี stunnel4 แทนวิธีการต่อไปนี้ก็ได้ (ดูหัวข้อไม่บังคับ: ใช้ stunnel เป็นพร็อกซี)

หมายเหตุ: วิธีการต่อไปนี้จะถือว่ามีการติดตั้ง Jira ไว้ที่ /opt/atlassian/jira

วิธีเชื่อมต่อไคลเอ็นต์ Atlassian Jira กับบริการ LDAP ที่ปลอดภัย

  1. คัดลอกใบรับรองและคีย์ไปยังเซิร์ฟเวอร์ Jira (ใบรับรองนี้สร้างขึ้นในคอนโซลผู้ดูแลระบบของ Google ขณะเพิ่มไคลเอ็นต์ LDAP ไปยังบริการ LDAP ที่ปลอดภัย)

    เช่น
    $ scp ldap-client.key user@jira-server:
  2. แปลงใบรับรองและคีย์ให้อยู่ในรูปแบบคีย์สโตร์สำหรับ Java ระบบจะแจ้งให้คุณใส่รหัสผ่านตลอดกระบวนการนี้ เพื่อความสะดวก ให้เลือกรหัสผ่านที่ปลอดภัยและใช้รหัสเดียวกันทุกครั้งเมื่อได้รับแจ้ง

    $ openssl pkcs12 -export -out jira-ldap.pkcs12 -in ldap-client.crt -inkey ldap-client.key

    $ sudo /opt/atlassian/jira/jre/bin/keytool -v -importkeystore -srckeystore jira-ldap.pkcs12 -srcstoretype PKCS12 -destkeystore /opt/atlassian/jira/jira-ldap.jks -deststoretype JKS

  3. กำหนดค่า Jira เพื่อใช้คีย์สโตร์ที่สร้างขึ้นใหม่ ทำตามคำแนะนำที่นี่เพื่อเพิ่มตัวเลือกต่อไปนี้

    "-Djavax.net.ssl.keyStore=/opt/atlassian/jira/jira-ldap.jks -Djavax.net.ssl.keyStorePassword=password"

    ใน Linux ให้ทำดังนี้
    1. แก้ไข /opt/atlassian/jira/bin/setenv.sh
    2. ค้นหาการตั้งค่า JVM_SUPPORT_RECOMMENDED_ARGS
    3. เพิ่ม "-Djavax.net.ssl.keyStore=/opt/atlassian/jira/jira-ldap.jks -Djavax.net.ssl.keyStorePassword=password" โดยแทนที่ "password" ด้วยรหัสผ่านที่คุณเลือกไว้ด้านบน
  4. รีสตาร์ท Jira

    $ /opt/atlassian/jira/bin/stop-jira.sh
    $ /opt/atlassian/jira/bin/start-jira.sh

  5. ลงชื่อเข้าใช้อินเทอร์เฟซเว็บ Jira ในฐานะผู้ดูแลระบบ
    1. ไปที่การตั้งค่า > การจัดการผู้ใช้ (สำหรับการตั้งค่าให้ไปที่ไอคอนรูปเฟืองที่ด้านขวาบน)
    2. คลิก User Directories
    3. คลิกเพิ่มไดเรกทอรี
    4. เลือกประเภทเป็น LDAP
    5. คลิกถัดไป
  6. ป้อนข้อมูลต่อไปนี้

    Name

    Google Secure LDAP

    Directory type

    OpenLDAP

    Hostname

    ldap.google.com

    Port

    636

    Use SSL

    เลือกไว้

    Username

    สร้างชื่อผู้ใช้และรหัสผ่านในคอนโซลผู้ดูแลระบบของ Google โปรดดูวิธีสร้างข้อมูลเข้าสู่ระบบ

    Password

    สร้างชื่อผู้ใช้และรหัสผ่านในคอนโซลผู้ดูแลระบบของ Google โปรดดูวิธีสร้างข้อมูลเข้าสู่ระบบ

    Base DN

    ชื่อโดเมนในรูปแบบ DN (ตัวอย่างเช่น dc=example,dc=com สำหรับ example.com)

    Additional User DN

    ไม่บังคับ "ou=Users"

    Additional Group DN

    ไม่บังคับ "ou=Groups"

    LDAP Permissions

    อ่านอย่างเดียว

    Advanced Settings

    ไม่เปลี่ยนแปลง

    User Schema Settings >
    User Name Attribute

    googleUid

    User Schema Settings >
    User Name RDN Attribute

    uid

    Group Schema Settings >
    Group Object Class

    groupOfNames

    Group Schema Settings >
    Group Object Filter

    (objectClass=groupOfNames)

    Membership Schema Settings >
    Group Members Attribute

    member

    Membership Schema Settings >
    Use the User Membership Attribute

    เลือกไว้
  7. กำหนดบทบาทให้กับกลุ่ม

    ก่อนที่ Atlassian Jira จะอนุญาตให้ผู้ใช้เข้าสู่ระบบได้ ผู้ใช้รายนั้นต้องเป็นสมาชิกของกลุ่มที่ได้รับสิทธิ์เข้าถึง Jira

    ทำตามขั้นตอนต่อไปนี้เพื่อกำหนดบทบาทให้กับกลุ่ม
    1. ไปที่การตั้งค่า > แอปพลิเคชัน > การเข้าถึงแอปพลิเคชัน
    2. ในกล่องข้อความเลือกกลุ่ม ให้ป้อนชื่อกลุ่มใน Google Groups ที่ต้องการให้สิทธิ์เข้าถึง Jira

CloudBees Core / Jenkins

สำหรับคำแนะนำในการเชื่อมต่อ CloudBees Core เข้ากับบริการ LDAP ที่ปลอดภัย โปรดดูที่กำหนดค่า CloudBees Core พร้อมด้วย Cloud Identity LDAP ที่ปลอดภัยของ Google

FreeRadius

โปรดทำตามขั้นตอนต่อไปนี้

  1. ติดตั้งและกำหนดค่า FreeRADIUS ที่ /etc/freeradius/3.0/

    เมื่อติดตั้ง FreeRADIUS แล้ว คุณจะเพิ่มการกำหนดค่า LDAP ได้โดยติดตั้งปลั๊กอิน freeradius-ldap

    $ sudo apt-get install freeradius freeradius-ldap
  2. คัดลอกคีย์ไคลเอ็นต์ LDAP และไฟล์ใบรับรองไปยัง /etc/freeradius/3.0/certs/ldap-client.key และ /etc/freeradius/3.0/certs/ldap-client.crt ตามลำดับ

    $ chown freeradius:freeradius
    /etc/freeradius/3.0/certs/ldap-client.*
    $ chmod 640 /etc/freeradius/3.0/certs/ldap-client.*

  3. เปิดใช้โมดูล LDAP

    $ cd /etc/freeradius/3.0/mods-enabled/
    $ ln -s ../mods-available/ldap ldap

  4. แก้ไข /etc/freeradius/3.0/mods-available/ldap
    1. ldap->server = 'ldaps://ldap.google.com:636'
    2. identity = ชื่อผู้ใช้ในข้อมูลเข้าสู่ระบบของแอปพลิเคชัน
    3. รหัสผ่าน = รหัสผ่านในข้อมูลเข้าสู่ระบบของแอปพลิเคชัน
    4. base_dn = 'dc=domain,dc=com'
    5. tls->start_tls = no
    6. tls->certificate_file = /etc/freeradius/3.0/certs/ldap-client.cer
    7. tls->private_key_file = /etc/freeradius/3.0/certs/ldap-client.key
    8. tls->require_cert = 'allow'
    9. ทำเครื่องหมายเป็นความคิดเห็นทุกฟิลด์ในเบรดครัมบ์ที่แสดงส่วน 'ldap -> post-auth -> update'
  5. แก้ไข /etc/freeradius/3.0/sites-available/default
    ซึ่งจะปรับเปลี่ยนการเชื่อมต่อไคลเอ็นต์ FreeRadius หากคุณไม่ได้ใช้ไคลเอ็นต์เริ่มต้น โปรดอัปเดตไคลเอ็นต์ที่เกี่ยวข้อง (อุโมงค์ภายในหรือไคลเอ็นต์ที่กำหนดเอง) ที่คุณกำหนดค่าไว้
    1. แก้ไขส่วน authorize เพื่อเพิ่มบล็อกต่อไปนี้ที่ด้านล่างหลังคำสั่ง Password Authentication Protocol (PAP)

      if (User-Password) {
      update control {
      Auth-Type := ldap
      }
      }

    2. ในส่วน authorize ให้เปิดใช้ LDAP โดยนำเครื่องหมาย "-" ที่อยู่ด้านหน้าออก

      #
      # โมดูล ldap จะอ่านรหัสผ่านจากฐานข้อมูล LDAP
      ldap
    3. แก้ไขส่วน authenticate โดยแก้ไขบล็อก Auth-Type LDAP ดังนี้

      # Auth-Type LDAP {
      ldap
      # }

    4. แก้ไขส่วน authenticate โดยแก้ไขบล็อก Auth-Type PAP ดังนี้

      Auth-Type PAP {
      # pap
      ldap
      }

GitLab

สำหรับวิธีการเชื่อมต่อ GitLab กับบริการ LDAP ที่ปลอดภัย โปรดดูที่การกำหนดค่า LDAP ที่ปลอดภัยของ Google สำหรับ GitLab

Itopia/Ubuntu

สำหรับวิธีการเชื่อมต่อ Itopia/Ubuntu กับบริการ LDAP ที่ปลอดภัย โปรดดูที่หัวข้อกำหนดค่า Google Cloud Identity LDAP บน Ubuntu 16.04 สำหรับการเข้าสู่ระบบของผู้ใช้

Ivanti / LanDesk

โปรดทำตามขั้นตอนต่อไปนี้

  1. ในเว็บเซิร์ฟเวอร์ Ivanti ให้เปิด OpenLDAPAuthenticationConfiguration.xml หรือ OpenLDAPSSLAuthenticationConfiguration.xml ในเครื่องมือแก้ไขข้อความในทั้ง 2 โฟลเดอร์ต่อไปนี้

    C:\ProgramData\LANDesk\ServiceDesk\servicedesk.Framework และ C:\ProgramData\LANDesk\ServiceDesk\servicedesk.WebAccess (โดยที่ servicedesk คือชื่ออินสแตนซ์)
  2. อัปเดตค่า <Server> เป็น ldap.google.com
  3. อัปเดตค่า <Port> เป็นพอร์ต 3268 สำหรับข้อความธรรมดาที่เปิดใช้ StartTLS และเป็น 3269 สำหรับพอร์ต SSL/TLS (ค่าเริ่มต้นคือ 389 สำหรับพอร์ตข้อความธรรมดา หรือ 636 สำหรับพอร์ต SSL/TLS)
  4. ตั้งค่า <TestDN> เป็นชื่อโดเมนในรูปแบบ DN (เช่น dc=example,dc=com สำหรับ example.com)
  5. เพิ่มบรรทัดต่อไปนี้ลงในทั้ง ..ProgramData\LANDesk\ServiceDesk\ServiceDesk.Framework\tps.config และ ..ProgramData\LANDesk\ServiceDesk\WebAccess\tps.config

    <add key="AuthenticationProvider" value="Touchpaper.Integrations.OpenLDAPLogon.OpenLDAPAuthenticationProvider" />

    หรือบรรทัดต่อไปนี้

    <add key="AuthenticationProvider" value="Touchpaper.Integrations.OpenLDAPSSLLogon.OpenLDAPSSLAuthenticationProvider" />
  6. เปิดอินสแตนซ์ที่ต้องการใน Configuration Center ของ Ivanti
  7. ถัดจากแอปพลิเคชัน Service Desk Framework ให้คลิก Edit
    ระบบจะแสดงกล่องโต้ตอบ Edit Application สำหรับ Service Desk Framework
  8. ในกลุ่ม Configuration parameters ให้เลือก Explicit only ในรายการ Logon policy แล้วจึงคลิก OK
  9. คลิกแก้ไขข้างแอปพลิเคชัน Web Access
    ระบบจะแสดงกล่องโต้ตอบ Edit Application สำหรับ Web Access
  10. ในกลุ่มพารามิเตอร์การกำหนดค่า ให้เลือกชัดเจนเท่านั้นในรายการนโยบายการเข้าสู่ระบบ แล้วคลิกตกลง

เมื่อลงชื่อเข้าสู่ระบบ ให้ใช้รหัสผ่านเครือข่ายของผู้ใช้โดเมนที่เกี่ยวข้อง

การบันทึกข้อยกเว้นสำหรับการตรวจสอบสิทธิ์เซิร์ฟเวอร์ LDAP

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

วิธีเปิดใช้การบันทึกข้อยกเว้นสำหรับการตรวจสอบสิทธิ์เซิร์ฟเวอร์ LDAP

  1. เปิดไฟล์ XML การกำหนดค่าการตรวจสอบสิทธิ์ที่เหมาะสมต่อไปนี้ในเครื่องมือแก้ไขข้อความ

    DirectoryServiceAuthenticationConfiguration.xml, OpenLDAPAuthenticationConfiguration.xml หรือ OpenLDAPSSLAuthenticationConfiguration.xml
  2. เปลี่ยนบรรทัด:

    <ShowExceptions>false</ShowExceptions>
    เป็น
    <ShowExceptions>true</ShowExceptions>
  3. บันทึกการเปลี่ยนแปลง

Ldp.exe (สำหรับ Windows)

โปรดทำตามขั้นตอนต่อไปนี้

  1. แปลงไฟล์ใบรับรองและคีย์เป็นไฟล์รูปแบบ PKCS12 ไฟล์เดียว ที่ Command Prompt ให้ป้อนข้อมูลต่อไปนี้

    หากใช้ macOS หรือ Linux ให้ใช้คำสั่งต่อไปนี้

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    ป้อนรหัสผ่านเพื่อเข้ารหัสไฟล์เอาต์พุต

    หากคุณใช้ Windows ให้ใช้คำสั่งต่อไปนี้

    $ certutil -mergepfx ldap-client.crt ldap-client.p12

    สำคัญ: ไฟล์ทั้ง 2 ไฟล์ (<CERT_FILE>.crt และ <CERT_FILE>.key) ต้องอยู่ในไดเรกทอรีเดียวกัน นอกจากนี้ โปรดตรวจสอบว่าทั้ง key และ crt มีชื่อเหมือนกัน (แต่มีนามสกุลต่างกัน) ในตัวอย่างนี้ เราจะใช้ชื่อ ldap-client.crt และ ldap-client.key

  2. ไปที่แผงควบคุม
  3. ในช่องค้นหา ให้ค้นหา "ใบรับรอง" แล้วคลิกจัดการใบรับรองผู้ใช้
  4. ไปที่ Action > All Tasks > Import…
  5. เลือก Current User แล้วคลิก Next
  6. คลิก Browse…
  7. ในเมนูแบบเลื่อนลง ประเภทไฟล์ ที่มุมขวาล่างของกล่องโต้ตอบ ให้เลือก Personal Information Exchange (*.pfx;*.p12)
  8. เลือกไฟล์ ldap-client.p12 จากขั้นตอนที่ 2 คลิกเปิด แล้วคลิกถัดไป
  9. ป้อนรหัสผ่านจากขั้นตอนที่ 2 และคลิก Next
  10. เลือกที่เก็บใบรับรองส่วนบุคคล คลิกถัดไป แล้วคลิกเสร็จสิ้น
  11. เรียกใช้ Ldp.exe
  12. ไปที่การเชื่อมต่อ > เชื่อมต่อ...
  13. ป้อนรายละเอียดการเชื่อมต่อต่อไปนี้

    Server: ldap.google.com
    Port: 636
    Connectionless: ยกเลิกการเลือก
    SSL: เลือก
  14. คลิกตกลง
  15. ไปที่ View > Tree
  16. ป้อน DN พื้นฐาน ซึ่งเป็นชื่อโดเมนในรูปแบบ DN (ตัวอย่างเช่น dc=example,dc=com สำหรับ example.com)
  17. คลิกตกลง
  18. หากการเชื่อมต่อเสร็จสิ้น LDP.exe จะแสดงเนื้อหา Active Directory เช่น แอตทริบิวต์ทั้งหมดที่อยู่ใน DN ฐานในแผงด้านขวา

Netgate/pfSense

โปรดดูวิธีการเชื่อมต่อ Netgate/pfSense กับบริการ LDAP ที่ปลอดภัยที่หัวข้อกำหนดค่า Google Cloud Identity เป็นแหล่งที่มาของการตรวจสอบสิทธิ์

OpenLDAP / ldapsearch (Linux)

หากต้องการเข้าถึงไดเร็กทอรี LDAP จากบรรทัดคำสั่ง คุณอาจใช้ OpenLDAP สำหรับคำสั่ง ldapsearch

สมมติว่าไฟล์ใบรับรองไคลเอ็นต์และคีย์คือ ldap-client.crt และ ldap-client.key โดเมนคือ example.com และชื่อผู้ใช้คือ jsmith ให้ทำดังนี้

$ LDAPTLS_CERT=ldap-client.crt LDAPTLS_KEY=ldap-client.key ldapsearch -H ldaps://ldap.google.com -b dc=example,dc=com '(uid=jsmith)'

ซึ่งจะตั้งค่าตัวแปรสภาพแวดล้อมที่เกี่ยวข้องให้ชี้ไปยังคีย์ไคลเอ็นต์ คุณแทนที่ตัวเลือก ldapsearch อื่นได้ด้วยตัวกรองที่คุณต้องการ แอตทริบิวต์ที่ขอ และอื่นๆ โปรดดูรายละเอียดอื่นๆ ในหน้าคู่มือ ldapsearch ("man ldapsearch")

ldapsearch (macOS)

โปรดทำตามขั้นตอนต่อไปนี้

  1. แปลงไฟล์ใบรับรองและคีย์เป็นไฟล์รูปแบบ PKCS12 ไฟล์เดียว ที่ Command Prompt ให้ป้อนข้อมูลต่อไปนี้

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    ป้อนรหัสผ่านเพื่อเข้ารหัสไฟล์เอาต์พุต
  2. คลิก ที่มุมขวาบนของแถบเมนู แล้วพิมพ์ Keychain Access
  3. เปิดแอปพลิเคชัน Keychain Access แล้วคลิกระบบจากรายการทางด้านซ้าย
  4. คลิกตัวเลือกไฟล์ในแถบเมนูด้านซ้ายบน แล้วเลือกนำเข้ารายการ
  5. เรียกดูตำแหน่งที่มี ldap-client.p12 ที่สร้างขึ้น เลือก ldap-client.p12 แล้วคลิก Open
    ป้อนรหัสผ่านหากได้รับข้อความแจ้ง
    ตอนนี้ใบรับรองที่มีชื่อว่า LDAP Client ควรปรากฏในรายการใบรับรองพวงกุญแจของระบบ
  6. คลิกลูกศรถัดจากใบรับรอง LDAP Client คีย์ส่วนตัวจะปรากฏอยู่ด้านล่าง
    1. ดับเบิลคลิกที่คีย์ส่วนตัว
    2. จากกล่องโต้ตอบ ให้เลือกแท็บการควบคุมการเข้าถึง แล้วคลิก + ที่มุมซ้ายล่าง
    3. จากหน้าต่างที่เปิดขึ้น ให้พิมพ์ Command+Shift+G เพื่อเปิดหน้าต่างใหม่ จากนั้นแทนที่ข้อความที่มีอยู่ด้วย /usr/bin/ldapsearch

    4. คลิก Go

      ระบบจะเปิดหน้าต่างที่ไฮไลต์ ldapsearch ขึ้นมา

    5. คลิกเพิ่ม

    6. คลิกบันทึกการเปลี่ยนแปลง แล้วป้อนรหัสผ่านหากได้รับข้อความแจ้ง

      ขณะนี้คุณพร้อมที่จะเข้าถึงไดเรกทอรี LDAP จากบรรทัดคำสั่งแล้วโดยใช้คำสั่ง OpenLDAP ldapsearch

  7. สมมติว่าไฟล์ ldap-client.p12 ที่คุณนำเข้าสู่พวงกุญแจก่อนหน้านี้มีชื่อว่า LDAP Client โดเมนของคุณคือ example.com และชื่อผู้ใช้คือ jsmith ให้ป้อนข้อมูลต่อไปนี้

    $ LDAPTLS_IDENTITY="LDAP Client" ldapsearch -H ldaps://ldap.google.com:636 -b dc=example,dc=com '(uid=jsmith)'

ซึ่งจะเป็นการตั้งค่าตัวแปรสภาพแวดล้อมที่เกี่ยวข้องให้ชี้ไปยังใบรับรองไคลเอ็นต์ที่นำเข้า โดยคุณจะแทนที่ตัวเลือก ldapsearch อื่นได้ด้วยตัวกรองที่คุณต้องการ แอตทริบิวต์ที่ขอ และอื่นๆ สำหรับรายละเอียดเพิ่มเติม โปรดดูที่หน้า ldapsearch man (man ldapsearch)

OpenVPN (เวอร์ชันชุมชน)

โปรดทำตามขั้นตอนต่อไปนี้

  1. หากจำเป็นให้ติดตั้งและกำหนดค่า OpenVPN ก่อน หรือหากติดตั้งและกำหนดค่าแล้ว ให้เปิดหน้าการตั้งค่าใน OpenVPN

    การกำหนดค่าทั่วไปของ VPN อยู่นอกเหนือขอบเขตของบทความความช่วยเหลือนี้ เมื่อกำหนดค่า VPN แล้ว คุณจะเพิ่มการตรวจสอบสิทธิ์และการให้สิทธิ์ผู้ใช้ผ่าน LDAP ได้ โดยเฉพาะอย่างยิ่ง คุณจะต้องติดตั้งปลั๊กอิน openvpn-auth-ldap

    $ sudo apt-get install openvpn openvpn-auth-ldap
  2. คัดลอกคีย์ไคลเอ็นต์ LDAP และไฟล์ใบรับรองไปยัง /etc/openvpn/ldap-client.key และ /etc/openvpn/ldap-client.crt
  3. สร้างไฟล์ /etc/openvpn/auth-ldap.conf ซึ่งมีข้อมูลต่อไปนี้ (สมมติว่า example.com เป็นชื่อโดเมน)

    <LDAP>
    URL ldaps://ldap.google.com:636 #
    Timeout 15
    TLSEnable false
    TLSCACertDir /etc/ssl/certs
    TLSCertFile /etc/openvpn/ldap-client.crt
    TLSKeyFile /etc/openvpn/ldap-client.key
    </LDAP>
    <Authorization>
    BaseDN "dc=example,dc=com"
    SearchFilter "(uid=%u)" # (or choose your own LDAP filter for users)
    RequireGroup false
    </Authorization>

  4. แก้ไขไฟล์การกำหนดค่าของ OpenVPN ซึ่งมักจะมีชื่อว่า /etc/openvpn/server.conf หรือคล้ายกันนี้ เพิ่มข้อมูลต่อไปนี้ที่ด้านล่างของไฟล์

    plugin /usr/lib/openvpn/openvpn-auth-ldap.so /etc/openvpn/auth-ldap.conf
    verify-client-cert optional

  5. รีสตาร์ทเซิร์ฟเวอร์ OpenVPN

    $ sudo systemctl restart openvpn@server
  6. กำหนดค่าไคลเอ็นต์ VPN ให้ใช้ชื่อผู้ใช้และรหัสผ่านของผู้ใช้ ตัวอย่างเช่น ในการกำหนดค่าไคลเอ็นต์ OpenVPN ให้เพิ่ม auth-user-pass ต่อท้ายไฟล์การกำหนดค่าไคลเอ็นต์ OpenVPN แล้วเริ่มไคลเอ็นต์ OpenVPN ดังนี้

    $ openvpn --config /path/to/client.conf
  7. ทำตามวิธีการใช้ stunnel เป็นพร็อกซี

เซิร์ฟเวอร์การเข้าถึง OpenVPN (เวอร์ชันเชิงพาณิชย์)

สำหรับวิธีการเชื่อมต่อ OpenVPN Access Server กับบริการ LDAP ที่ปลอดภัย โปรดดูที่หัวข้อกำหนดค่า LDAP ที่ปลอดภัยของ Google ด้วย OpenVPN Access Server

PaperCut MF และ NG

สำหรับวิธีการเชื่อมต่อ PaperCut กับบริการ LDAP ที่ปลอดภัย โปรดดูที่หัวข้อวิธีซิงค์และตรวจสอบสิทธิ์ผู้ใช้ Google Workspace และ Google Cloud Identity ใน PaperCut

Puppet Enteprise

สำหรับวิธีการเชื่อมต่อ Puppet Enterprise กับบริการ LDAP ที่ปลอดภัย โปรดดูที่ Google Cloud Directory สำหรับ PE

เบราว์เซอร์ Softerra LDAP

สำคัญ: ก่อนเริ่มต้น โปรดตรวจสอบว่าคุณได้ติดตั้ง Softerra LDAP Browser เวอร์ชัน 4.5 (4.5.19808.0) ขึ้นไปแล้ว ดู LDAP Browser 4.5

โปรดทำตามขั้นตอนต่อไปนี้

  1. แปลงไฟล์ใบรับรองและคีย์เป็นไฟล์รูปแบบ PKCS12 ไฟล์เดียว ที่ Command Prompt ให้ป้อนข้อมูลต่อไปนี้

    หากใช้ macOS หรือ Linux ให้ใช้คำสั่งต่อไปนี้

    openssl pkcs12 -inkey ldap-client.key -in ldap-client.crt -export -out ldap-client.p12

    ป้อนรหัสผ่านเพื่อเข้ารหัสไฟล์เอาต์พุต

    หากคุณใช้ Windows ให้ใช้คำสั่งต่อไปนี้

    $ certutil -mergepfx ldap-client.crt ldap-client.p12

    สำคัญ: ไฟล์ทั้ง 2 ไฟล์ (<CERT_FILE>.crt และ <CERT_FILE>.key) ต้องอยู่ในไดเรกทอรีเดียวกัน นอกจากนี้ โปรดตรวจสอบว่าทั้ง key และ crt มีชื่อเหมือนกัน (แต่มีนามสกุลต่างกัน) ในตัวอย่างนี้ เราจะใช้ชื่อ ldap-client.crt และ ldap-client.key

  2. ติดตั้งคู่คีย์ในเบราว์เซอร์ Softerra LDAP
    1. ไปที่ Tools > Certificate Manager
    2. คลิก Import…
    3. คลิก Next
    4. คลิก Browse…
    5. ในรายการแบบเลื่อนลง ประเภทไฟล์ ที่มุมขวาล่างของกล่องโต้ตอบ ให้เลือก Personal Information Exchange (*.pfx;*.p12)
    6. เลือกไฟล์ ldap-client.p12 จากขั้นตอนที่ 2 ด้านบน
    7. คลิก Open แล้วคลิก Next
    8. ป้อนรหัสผ่านจากขั้นตอนที่ 2 ด้านบนและคลิก Next
    9. เลือกที่เก็บใบรับรองส่วนบุคคล
    10. คลิกถัดไป
    11. คลิกเสร็จสิ้น
  3. เพิ่มโปรไฟล์เซิร์ฟเวอร์
    1. ไปที่ไฟล์ > ใหม่ > โปรไฟล์ใหม่…
    2. ป้อนชื่อโปรไฟล์ เช่น Google LDAP
    3. คลิกถัดไป

      ป้อนข้อมูลต่อไปนี้

      โฮสต์: ldap.google.com
      พอร์ต:
      636
      DN พื้นฐาน: ชื่อโดเมนของคุณในรูปแบบ DN (เช่น dc=example,dc=com สำหรับ example.com)
      Use secure connection (SSL): เลือก
    4. คลิกถัดไป
    5. เลือก External (ใบรับรอง SSL)
    6. คลิกถัดไป
    7. คลิกเสร็จสิ้น

Sophos Mobile

โปรดดูวิธีการเชื่อมต่อ Sophos Mobile กับบริการ LDAP ที่ปลอดภัยที่หัวข้อเชื่อมต่อ Sophos Mobile กับ Google Cloud Identity / Google Cloud Directory โดยใช้ LDAP ที่ปลอดภัย

Splunk

เมื่อเชื่อมต่อ Splunk เข้ากับบริการ LDAP ที่ปลอดภัย โปรดใช้ Splunk เวอร์ชัน 8.1.4 ขึ้นไปเสมอ เมื่อคุณใช้ Splunk เวอร์ชันเก่ากว่า เช่น เวอร์ชัน 8.1.3 การค้นหา LDAP ส่วนเกินอาจส่งไปยังเซิร์ฟเวอร์ LDAP ซึ่งอาจส่งผลให้โควต้า LDAP ของคุณครบจำนวนเร็วขึ้น โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับปัญหาของ Splunk เวอร์ชัน 8.1.3 ที่ปัญหาที่ทราบเกี่ยวกับ Splunk

โปรดทำตามขั้นตอนต่อไปนี้

  1. คัดลอกไฟล์คีย์และใบรับรองไคลเอ็นต์ LDAP ไปยัง /home/splunk/splunkadmin/etc/openldap/certs/ldap-client.key และ /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.crt

    $ cat /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.crt /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.key > /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem

    $ sudo chown $(splunkuser):$(splunkuser) /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.*

    $ sudo chmod 644 /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.*

  2. แก้ไขไฟล์ ldap.conf เพื่อเพิ่มการกำหนดค่าต่อไปนี้

    ssl start_tls
    TLS_REQCERT never
    TLS_CERT /home/splunkadmin/splunk/etc/openldap/certs/ldap.pem
    TLS_KEY /home/splunkadmin/splunk/etc/openldap/certs/ldap.pem

  3. เพิ่มการกำหนดค่าต่อไปนี้ในไฟล์ /home/splunkadmin/.ldaprc ของผู้ใช้:

    TLS_CERT /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem
    TLS_KEY /home/splunkadmin/splunk/etc/openldap/certs/ldap-client.pem

  4. เพิ่มกลยุทธ์ LDAP โดยใช้ UI ของเว็บ Splunk ป้อนรายละเอียดต่อไปนี้ แล้วคลิกบันทึก

ชื่อ

Google Secure LDAP

ผู้จัด

ldap.google.com

Port

636

เปิดใช้ SSL

เลือกไว้

ลำดับการเชื่อมต่อ

1

Bind DN

ป้อนข้อมูลเข้าสู่ระบบที่คุณสร้างขึ้นในคอนโซลผู้ดูแลระบบของ Google

Bind DN password

ป้อนข้อมูลเข้าสู่ระบบที่คุณสร้างขึ้นในคอนโซลผู้ดูแลระบบของ Google

Base DN

ชื่อโดเมนในรูปแบบ DN (เช่น dc=example,dc=com สำหรับโดเมน example.com)

ตัวกรองฐานผู้ใช้

ป้อนตัวกรองฐานผู้ใช้สําหรับคลาสออบเจ็กต์ที่ต้องการกรองผู้ใช้

แอตทริบิวต์ชื่อผู้ใช้

uid

แอตทริบิวต์ชื่อจริง

displayname

แอตทริบิวต์อีเมล

mail

แอตทริบิวต์การแมปกลุ่ม

dn

DN ฐานของกลุ่ม

ชื่อโดเมนในรูปแบบ DN (เช่น ou=Groups,dc=example,dc=com สำหรับโดเมน example.com)

ตัวกรองการค้นหากลุ่มแบบคงที่

ป้อนตัวกรองการค้นหากลุ่มแบบคงที่สําหรับคลาสออบเจ็กต์ที่ต้องการกรองกลุ่มคงที่

แอตทริบิวต์ชื่อกลุ่ม

cn

แอตทริบิวต์สมาชิกแบบคงที่

สมาชิก

SSSD (Red Hat Enterprise และ CentOS)

SSSD จะค้นหาผู้ใช้เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับผู้ใช้ระหว่างการตรวจสอบสิทธิ์ เพื่อให้แน่ใจว่าการตรวจสอบสิทธิ์ผู้ใช้ทำงานได้อย่างถูกต้องสำหรับไคลเอ็นต์ LDAP นี้ คุณจะต้องเปิดอ่านข้อมูลผู้ใช้และอ่านข้อมูลกลุ่มสำหรับหน่วยขององค์กรทั้งหมดที่เปิดยืนยันข้อมูลเข้าสู่ระบบของผู้ใช้ไว้ (โปรดดูวิธีการที่หัวข้อกำหนดค่าสิทธิ์การเข้าถึง)

วิธีเชื่อมต่อไคลเอ็นต์ SSSD ใน Red Hat 8 หรือ CentOS 8 กับบริการ LDAP ที่ปลอดภัย

  1. เพิ่มไคลเอ็นต์ SSSD ไปยังบริการ LDAP ที่ปลอดภัย ดังนี้
    1. จากคอนโซลผู้ดูแลระบบของ Google ให้ไปที่แอป > LDAP > เพิ่มไคลเอ็นต์
      โปรดลงชื่อเข้าใช้ด้วยบัญชีบริษัท ไม่ใช่บัญชี Gmail ส่วนบุคคล
    2. ป้อนรายละเอียดไคลเอ็นต์แล้วคลิกต่อไป
    3. กำหนดค่าสิทธิ์ในการเข้าถึง ให้ทำดังนี้
      ยืนยันข้อมูลเข้าสู่ระบบของผู้ใช้ - ทั้งโดเมน
      อ่านข้อมูลผู้ใช้ - ทั้งโดเมน
      อ่านข้อมูลกลุ่ม - เปิด
    4. คลิกเพิ่มไคลเอ็นต์ LDAP
    5. ดาวน์โหลดใบรับรองที่สร้างไว้
    6. คลิกไปต่อยังรายละเอียดของไคลเอ็นต์
    7. เปลี่ยนสถานะบริการเป็นเปิด
  2. ติดตั้งทรัพยากร Dependency:

    dnf install openldap-clients sssd-ldap
    install -d --mode=700 --owner=sssd --group=root /etc/sssd/ldap


    แตกไฟล์ .zip ของใบรับรองและคัดลอกไฟล์ .crt และ .key ไปยัง /etc/sssd/ldap
  3. (ไม่บังคับ) ทดสอบกับ ldapsearch ดังนี้

    LDAPTLS_REQCERT=never \
    LDAPTLS_KEY=Google.key \
    LDAPTLS_CERT=Google.crt \
    ldapsearch -H ldaps://ldap.google.com:636/ \
    -b dc=example,dc=com \
    -D usertoverify@example.com \
    -W \
    '(mail=usertoverify@example.com)' \
    mail dn


    ป้อนรหัสผ่าน Google ของผู้ใช้เมื่อได้รับข้อความแจ้ง

    หมายเหตุ: ผู้ใช้ต้องได้รับมอบหมายใบอนุญาต Google Workspace Enterprise หรือ Cloud Identity Premium

  4. สร้างไฟล์ /etc/sssd/sssd.conf ที่มีเนื้อหาต่อไปนี้

    [sssd]
    services = nss, pam
    domains = example.com

    [domain/example.com]
    ldap_tls_cert = /etc/sssd/ldap/Google.crt
    ldap_tls_key = /etc/sssd/ldap/Google.key
    ldap_tls_reqcert = never
    ldap_uri = ldaps://ldap.google.com
    ldap_search_base = dc=example,dc=com
    id_provider = ldap
    auth_provider = ldap
    ldap_schema = rfc2307bis
    ldap_user_uuid = entryUUID

  5. อัปเดตสิทธิ์และป้ายกำกับ SELinux โดยทำดังนี้

    chown 0:0 /etc/sssd/sssd.conf /etc/sssd/ldap/*
    chmod 600 /etc/sssd/sssd.conf /etc/sssd/ldap/*
    restorecon -FRv /etc/sssd

  6. รีสตาร์ท SSSD:

    systemctl restart sssd
  7. ทดสอบด้วยคีย์ SSH ต่อไปนี้

    ในเซิร์ฟเวอร์

    ssh -l user@example.com {HOSTNAME}

การแก้ปัญหา

  1. ตรวจสอบเวอร์ชัน SSSD (ต้องมากกว่าหรือเท่ากับ 1.15.2):

    # sssd --version
    2.2.3

  2. ใน RHEL/CentOS (หรือดิสโทรใดๆ ที่มีการบังคับใช้ SELinux) ไฟล์การกำหนดค่า SSSD รวมทั้งไฟล์และคีย์ใบรับรองต้องอยู่ในไดเรกทอรีที่เข้าถึงได้โดยบทบาท ssdd_conf_t ดังนี้

    # egrep "object_r:sssd_conf_t" /etc/selinux/targeted/contexts/files/file_contexts

    ตรวจหาข้อความปฏิเสธ AVC จาก /var/log/audit/audit.log

  3. ตรวจสอบว่า /etc/nsswitch.conf มี "sss" สำหรับเอนทิตี passwd, shadow, group และ netgroup:

    passwd: files sss
    shadow: files sss
    group: files sss
    netgroup: files sss


    ในกรณีนี้ ไฟล์ในเครื่องจะลบล้างผู้ใช้ LDAP
  4. ตรวจสอบ /var/log/sssd.conf เพื่อหาข้อผิดพลาดในการกำหนดค่า:

    เช่น:
    [sssd] [sss_ini_add_snippets] (0x0020): Config merge error: File /etc/sssd/sssd.conf did not pass access check. Skipping.

    การดำเนินการ: คุณต้อง chmod 600 ไฟล์ .conf

    เช่น:
    [sssd] [sss_ini_call_validators] (0x0020): [rule/allowed_domain_options]: Attribute 'ldap_groups_use_matching_rule_in_chain' is not allowed in section 'domain/{DOMAIN}'. Check for typos.

    [sssd] [sss_ini_call_validators] (0x0020): [rule/allowed_domain_options]: Attribute 'ldap_initgroups_use_matching_rule_in_chain' is not allowed in section 'domain/{DOMAIN}'. Check for typos.

    การดำเนินการ: นำส่วนขยาย LDAP การจับคู่กลุ่มที่ไม่รองรับออกจาก ssd.conf

  5. ตรวจหาข้อผิดพลาด LDAP/network/auth จาก /var/log/sssd_{DOMAIN}.log

    ตัวอย่าง:

    [sssd[be[example.com]]] [sss_ldap_init_sys_connect_done] (0x0020): ldap_install_tls failed: [Connect error] [error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed (self signed certificate)]

    การดำเนินการ: คุณต้องเพิ่ม "ldap_tls_reqcert = never" ลงใน sssd.conf

    หากต้องการเพิ่มรายละเอียดของข้อผิดพลาด ให้เพิ่ม "debug_level = 9" ใน sssd.conf ในส่วนโดเมนแล้วรีสตาร์ท sssd

SSSD (Linux อื่นๆ)

SSSD จะค้นหาผู้ใช้เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับผู้ใช้ระหว่างการตรวจสอบสิทธิ์ เพื่อให้แน่ใจว่าการตรวจสอบสิทธิ์ผู้ใช้ทำงานได้อย่างถูกต้องสำหรับไคลเอ็นต์ LDAP นี้ คุณจะต้องเปิดอ่านข้อมูลผู้ใช้และอ่านข้อมูลกลุ่มสำหรับหน่วยขององค์กรทั้งหมดที่เปิดยืนยันข้อมูลเข้าสู่ระบบของผู้ใช้ไว้ (โปรดดูวิธีการที่หัวข้อกำหนดค่าสิทธิ์การเข้าถึง)

วิธีเชื่อมต่อไคลเอ็นต์ SSSD กับบริการ LDAP ที่ปลอดภัย

  1. ติดตั้ง SSSD เวอร์ชัน >= 1.15.2

    $ sudo apt-get install sssd
  2. สมมติว่าไฟล์ใบรับรองและคีย์ของไคลเอ็นต์ชื่อ /var/ldap-client.crt และ /var/ldap-client.key และโดเมนของคุณคือ example.com ให้แก้ไข /etc/sssd/sssd.conf ด้วยการกำหนดค่า เช่น


    [sssd]
    services = nss, pam
    domains = example.com

    [domain/example.com]
    ldap_tls_cert = /var/ldap-client.crt
    ldap_tls_key = /var/ldap-client.key
    ldap_uri = ldaps://ldap.google.com
    ldap_search_base = dc=example,dc=com
    id_provider = ldap
    auth_provider = ldap
    ldap_schema = rfc2307bis
    ldap_user_uuid = entryUUID
    ldap_groups_use_matching_rule_in_chain = true
    ldap_initgroups_use_matching_rule_in_chain = true

  3. เปลี่ยนการเป็นเจ้าของและสิทธิ์ของไฟล์การกำหนดค่า:

    $ sudo chown root:root /etc/sssd/sssd.conf
    $ sudo chmod 600 /etc/sssd/sssd.conf

  4. รีสตาร์ท SSSD:

    $ sudo service sssd restart

เคล็ดลับ: หากใช้โมดูล SSSD ในคอมพิวเตอร์ Linux ที่ไม่มีที่อยู่ IP ภายนอกใน Google Compute Engine คุณจะยังคงเชื่อมต่อกับบริการ Secure LDAP ได้ตราบใดที่คุณเปิดใช้สิทธิ์เข้าถึงบริการของ Google ภายในไว้ โปรดดูรายละเอียดที่หัวข้อการเข้าถึง Google แบบส่วนตัว

macOS

ทำตามขั้นตอนด้านล่างเพื่อเชื่อมต่อไคลเอ็นต์ macOS สำหรับการตรวจสอบสิทธิ์บัญชีผู้ใช้โดยใช้บริการ LDAP ที่ปลอดภัย

ข้อกำหนดของระบบ

  • macOS ต้องเป็น Catalina เวอร์ชัน 10.15.4 ขึ้นไป
  • คุณต้องมีรหัสผู้ใช้ของผู้ดูแลระบบขั้นสูงของ Google เพื่อใช้ในขั้นตอนที่ 1 ในระยะเตรียมการ
  • คุณต้องมีสิทธิ์ผู้ดูแลระบบในเครื่องจึงจะกำหนดค่านี้ได้

เนื้อหา

ระยะเตรียมการ

วิธีการในส่วนนี้จะเน้นที่การตั้งค่าและทดสอบการตรวจสอบสิทธิ์ macOS ด้วยตนเองโดยใช้บริการ LDAP ที่ปลอดภัย

ขั้นตอนที่ 1: เริ่มต้นใช้งาน macOS เป็นไคลเอ็นต์ LDAP ในคอนโซลผู้ดูแลระบบของ Google

โปรดดูวิธีการที่หัวข้อเพิ่มไคลเอ็นต์ LDAP หรือดูวิดีโอสาธิต LDAP ที่ปลอดภัยนี้ นอกจากนี้ คุณยังจะดาวน์โหลดใบรับรองไคลเอ็นต์ TLS ที่สร้างขึ้นโดยอัตโนมัติในระหว่างกระบวนการนี้ด้วย

ขั้นตอนที่ 2: นำเข้าใบรับรองไปยังพวงกุญแจของระบบ

  1. คัดลอกใบรับรอง (ไฟล์ ZIP ที่ดาวน์โหลดไว้ในขั้นตอนที่ 1) และคีย์ไปยังเครื่อง macOS
    เคล็ดลับ: แตกไฟล์เพื่อค้นหาไฟล์ใบรับรองและคีย์
  2. นำเข้าคู่คีย์ลงในคีย์เชนระบบดังนี้
    1. แปลงคีย์และใบรับรองเป็นไฟล์ PKCS 12 (p12) เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล

      openssl pkcs12 -export -out ldap-client.p12 -in ldap-client.crt -inkey ldap-client.key

      เคล็ดลับ: จดชื่อไฟล์ .p12 ไว้

      ระบบจะขอให้คุณป้อนรหัสผ่าน ป้อนรหัสผ่านที่จะใช้เข้ารหัสไฟล์ p12

    2. เปิดแอปพลิเคชัน Keychain Access

    3. คลิกพวงกุญแจระบบ

    4. คลิก File > Import Items

    5. เลือกไฟล์ ldap-client.p12 ที่สร้างไว้ด้านบน

    6. ให้ป้อนรหัสผ่านของผู้ดูแลระบบเพื่ออนุญาตให้แก้ไขคีย์เชนระบบได้เมื่อระบบแจ้ง

    7. ป้อนรหัสผ่านที่สร้างไว้ด้านบนเพื่อถอดรหัสไฟล์ .p12

      หมายเหตุ: คุณควรเห็นใบรับรองใหม่และคีย์ส่วนตัวที่เชื่อมโยงปรากฏในรายการคีย์ ซึ่งอาจเรียกว่า LDAP Client จดชื่อใบรับรองไว้สำหรับขั้นตอนถัดไปด้านล่าง
    8. ทำตามขั้นตอนที่ 6 ในส่วน ldapsearch (macOS) ในบทความนี้เพื่อตั้งค่าการควบคุมการเข้าถึงสำหรับคีย์ส่วนตัวเพื่อเพิ่มแอปที่ระบุด้านล่าง หากคีย์ส่วนตัวไม่แสดงในหมวดหมู่รายการทั้งหมด ให้ลองเปลี่ยนไปใช้หมวดหมู่ใบรับรองของฉัน แล้วค้นหารายการคีย์ส่วนตัวที่ถูกต้องโดยขยายใบรับรองที่เกี่ยวข้อง

      แอป ldapsearch ตามที่ระบุไว้ในวิธีการจะเกี่ยวข้องเฉพาะในกรณีที่จำเป็นต้องแก้ปัญหาเท่านั้น และไม่เกี่ยวข้องกับวัตถุประสงค์อื่นๆ โดยปกติแล้ว ระบบจะนำแอปนี้ออกก่อนที่จะให้สิทธิ์ผู้ใช้เข้าถึง macOS

      คุณต้องเพิ่มแอป 3 รายการต่อไปนี้ลงในรายการการควบคุมการเข้าถึง

      /System/Library/CoreServices/Applications/Directory Utility
      /usr/libexec/opendirectoryd
      /usr/bin/dscl
  3. เพิ่มบรรทัดลงในไฟล์ /etc/openldap/ldap.conf โดยตรวจสอบว่า "LDAP Client" เป็นชื่อใบรับรองเดียวกับที่แสดงในแอปพลิเคชัน Keychain Access ของ macOS หลังจากนำเข้าไฟล์ .p12 (ชื่อมาจากชื่อทั่วไปของเรื่อง X.509 ของใบรับรองที่สร้างขึ้น)

    sudo bash -c 'echo -e "TLS_IDENTITY\tLDAP Client" >> /etc/openldap/ldap.conf'

ขั้นตอนที่ 3: ชี้อุปกรณ์ไปยังไดเรกทอรี Google เพื่อตรวจสอบสิทธิ์

เปิดแอปพลิเคชัน Directory Utility เพื่อสร้างโหนดไดเรกทอรี LDAP ใหม่ โดยทำดังนี้

  1. คลิกที่แม่กุญแจเพื่อทำการเปลี่ยนแปลงและป้อนรหัสผ่าน
  2. เลือก LDAPv3 แล้วคลิกไอคอนดินสอเพื่อแก้ไขการตั้งค่า
  3. คลิก New…
  4. ในส่วนชื่อเซิร์ฟเวอร์ ให้ป้อน ldap.google.com เลือกเข้ารหัสโดยใช้ SSL แล้วคลิกด้วยตนเอง
  5. เลือกชื่อเซิร์ฟเวอร์ใหม่แล้วคลิก Edit…
  6. ป้อนชื่อที่สื่อความหมาย เช่น Google Secure LDAP เป็นชื่อการกำหนดค่า
  7. เลือกเข้ารหัสโดยใช้ SSL และตรวจสอบว่าได้ตั้งค่าพอร์ตเป็น 636
  8. ไปที่แท็บ Search & Mappings
    1. เลือก RFC2307 จากรายการแบบเลื่อนลงเข้าถึงเซิร์ฟเวอร์ LDAPv3 นี้โดยใช้
    2. ป้อนข้อมูลที่เกี่ยวข้องกับโดเมนลงในช่อง Search Base Suffix เมื่อระบบแจ้ง เช่น ป้อน dc=zomato,dc=com สำหรับชื่อโดเมน zomato.com
    3. คลิกตกลง
    4. กำหนดค่าแอตทริบิวต์ในประเภทระเบียนผู้ใช้ ดังนี้
      1. ในส่วนประเภทและแอตทริบิวต์ของระเบียน ให้เลือกผู้ใช้ แล้วคลิกปุ่ม "+"
      2. ในหน้าต่างป๊อปอัป ให้เลือก Attribute Types เลือก GeneratedUID แล้วคลิก OK เพื่อปิดหน้าต่างป๊อปอัป

        GeneratedUID ควรแสดงในส่วน "ผู้ใช้" หลังจากขยายแล้ว
      3. คลิก GeneratedUID แล้วคลิกไอคอน "+" ในช่องทางด้านขวา
      4. ป้อน apple-generateduid ในกล่องข้อความ แล้วคลิก Enter
      5. ในโหนดผู้ใช้ ให้คลิกแอตทริบิวต์ NFSHomeDirectory
      6. ในหน้าจอด้านขวา ให้อัปเดตค่าของแอตทริบิวต์นี้เป็น #/Users/$uid$
      7. คลิกตกลง แล้วป้อนรหัสผ่านเพื่อบันทึกการเปลี่ยนแปลง
  9. จากหน้าต่าง Directory Utility ให้กำหนดค่า LDAP ใหม่ดังนี้
    1. ไปที่แท็บนโยบายการค้นหา
    2. คลิกไอคอนแม่กุญแจเพื่อทำการเปลี่ยนแปลง แล้วป้อนรหัสผ่านของผู้ใช้ปัจจุบันเมื่อระบบแจ้ง
    3. เปลี่ยนตัวเลือกแบบเลื่อนลงจาก Search Path เป็น Custom path
    4. เปิดแท็บการตรวจสอบสิทธิ์ แล้วคลิกไอคอน "+"
    5. เลือก /LDAPv3/ldap.google.com จากรายการโดเมนไดเรกทอรี แล้วคลิกเพิ่ม
    6. คลิกปุ่มใช้ แล้วป้อนรหัสผ่านของผู้ดูแลระบบหากได้รับข้อความแจ้ง
  10. เรียกใช้คำสั่ง 4 รายการต่อไปนี้เพื่อปิดใช้กลไกการตรวจสอบสิทธิ์ DIGEST-MD5, CRAM-MD5, NTLM และ GSSAPI SASL macOS จะใช้ Simple Bind เพื่อตรวจสอบสิทธิ์โดยใช้บริการ LDAP ที่ปลอดภัยของ Google ดังนี้

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string DIGEST-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string CRAM-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string NTLM" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

    sudo /usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string GSSAPI" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist

  11. รีบูตเพื่อโหลดการกำหนดค่า OpenDirectory ซ้ำ

ขั้นตอนที่ 4: สร้างบัญชีอุปกรณ์เคลื่อนที่ (อนุญาตให้เข้าสู่ระบบแบบออฟไลน์)

ผู้ใช้ Google Workspace หรือ Cloud Identity ทุกคนสามารถลงชื่อเข้าสู่ระบบด้วยบัญชีเครือข่าย (บัญชี Google) ที่ใช้ชื่อผู้ใช้และรหัสผ่านของตนเองได้ กระบวนการเข้าสู่ระบบนี้ต้องมีการเชื่อมต่อเครือข่าย หากผู้ใช้ต้องการลงชื่อเข้าสู่ระบบโดยที่เชื่อมต่อกับเครือข่ายหรือไม่ก็ได้ ให้สร้างบัญชีอุปกรณ์เคลื่อนที่ บัญชีอุปกรณ์เคลื่อนที่ช่วยให้คุณใช้ชื่อผู้ใช้และรหัสผ่านของบัญชีเครือข่าย (บัญชี Google) เพื่อลงชื่อเข้าใช้ได้ ไม่ว่าคุณจะเชื่อมต่อกับเครือข่ายหรือไม่ก็ตาม ดูรายละเอียดเพิ่มเติมได้ที่หัวข้อสร้างและกำหนดค่าบัญชีอุปกรณ์เคลื่อนที่ใน Mac

วิธีสร้างบัญชีอุปกรณ์เคลื่อนที่ให้กับผู้ใช้ LDAP ที่ปลอดภัย

  1. เรียกใช้คำสั่งต่อไปนี้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ LDAP ที่ปลอดภัยและตั้งค่าเส้นทางหลักและบัญชีอุปกรณ์เคลื่อนที่

    sudo /System/Library/CoreServices/ManagedClient.app/Contents/Resources/createmobileaccount -n $uid -v

    เคล็ดลับ: แทนที่ $uid ด้วยส่วนชื่อผู้ใช้ของอีเมลที่เชื่อมโยงกับบัญชี Google ของผู้ใช้ เช่น jsmith คือส่วนของชื่อผู้ใช้สำหรับ jsmith@solarmora.com

  2. เมื่อระบบแจ้งให้ระบุ SecureToken admin user name ให้ป้อนชื่อผู้ใช้ที่ดูแลระบบ แล้วป้อนรหัสผ่านในข้อความแจ้งถัดไป ซึ่งจะเพิ่ม $uid ลงใน FileVault ซึ่งจำเป็นหากดิสก์ macOS มีการเข้ารหัส

ขั้นตอนที่ 5: (ไม่บังคับ) ตั้งค่ากำหนดหน้าจอการเข้าสู่ระบบ

  1. ไปที่ค่ากำหนดของระบบ > ผู้ใช้และกลุ่ม > ตัวเลือกการเข้าสู่ระบบที่ด้านซ้ายล่าง
  2. ปลดล็อกแม่กุญแจโดยระบุข้อมูลเข้าสู่ระบบของผู้ดูแลระบบ
  3. เปลี่ยนแสดงหน้าต่างการเข้าสู่ระบบเป็นเป็นชื่อและรหัสผ่าน

ขั้นตอนที่ 6: รีบูตและเข้าสู่ระบบอุปกรณ์

  1. ตรวจสอบว่าอุปกรณ์เชื่อมต่อกับอินเทอร์เน็ตแล้ว หากไม่มีการเชื่อมต่ออินเทอร์เน็ต การเข้าสู่ระบบสำหรับผู้ใช้ LDAP ที่ปลอดภัยจะใช้งานไม่ได้
    หมายเหตุ: คุณต้องเชื่อมต่ออินเทอร์เน็ตสำหรับการเข้าสู่ระบบครั้งแรกเท่านั้น การเข้าสู่ระบบครั้งต่อๆ ไปจะทำได้โดยไม่ต้องเข้าถึงอินเทอร์เน็ต
  2. ลงชื่อเข้าใช้อุปกรณ์ด้วยบัญชีผู้ใช้ที่กำหนดค่าให้ใช้ LDAP ที่ปลอดภัยสำหรับการตรวจสอบสิทธิ์

ระยะการทำให้ใช้งานได้

วิธีการในส่วนนี้จะเน้นการกำหนดค่าอุปกรณ์ให้กับผู้ใช้โดยอัตโนมัติ ทำตามขั้นตอนที่ 1 และ 2 ด้านล่างในอุปกรณ์ macOS เดียวกันกับที่คุณกำหนดค่าด้วยตนเองเสร็จสมบูรณ์ในระหว่างขั้นตอนการเตรียมการ

ขั้นตอนที่ 1: สร้างโปรไฟล์ Mac ที่มีใบรับรองโดยใช้ Apple Configurator 2

  1. ติดตั้ง Apple Configurator 2 ในเครื่องที่คุณกำหนดค่าการตรวจสอบสิทธิ์ macOS ด้วยตนเองด้วย LDAP ที่ปลอดภัย
  2. เปิด Apple Configurator 2 แล้วสร้างโปรไฟล์ใหม่ จากนั้นคลิก Configure และนำเข้าไฟล์ .p12 ที่สร้างขึ้นก่อนหน้านี้

    หมายเหตุ: อย่าลืมตั้งรหัสผ่านให้ไฟล์ .p12 นี้ ป้อนรหัสผ่านนี้ในส่วน Password ของใบรับรอง

  3. บันทึกโปรไฟล์นี้
  4. (สำหรับอุปกรณ์ที่ใช้ตัวประมวลผล M1 หรือ M2 ให้ข้ามขั้นตอนนี้และไปยังขั้นตอนที่ 5 ) เปิดโปรไฟล์นี้ในเครื่องมือแก้ไขข้อความใดก็ได้ แล้วเพิ่มบรรทัดต่อไปนี้ในแท็ก <dict> แรก

    <key>PayloadScope</key>
    <string>System</string>


    ต้องเพิ่มค่านี้เนื่องจาก Apple Configurator ยังไม่รองรับโปรไฟล์สำหรับ macOS
  5. ในแท็ก <dict> ที่ 2 ควบคู่ไปกับข้อมูลใบรับรอง ให้เพิ่มบรรทัดต่อไปนี้

    <key>AllowAllAppsAccess</key>
    <true/>


    ทำเช่นนี้เพื่อให้แอปพลิเคชันทั้งหมดเข้าถึงใบรับรองนี้ได้

ขั้นตอนที่ 2: แปลงไฟล์การกำหนดค่าไดเรกทอรี (plist) เป็น xml

ในขั้นตอนนี้ คุณจะดึงข้อมูลการกำหนดค่าด้วยตนเองทั้งหมดที่ทำเสร็จแล้วในขั้นตอนที่ 3 ของระยะเตรียมการลงในไฟล์ XML คุณสามารถใช้ไฟล์นี้และโปรไฟล์ Mac ที่สร้างไว้ในขั้นตอนที่ 1 ด้านบนเพื่อกำหนดค่าอุปกรณ์ macOS อื่นๆ โดยอัตโนมัติได้

  1. คัดลอก /Library/Preferences/OpenDirectory/Configurations/LDAPv3/ldap.google.com.plist ไปยังเดสก์ท็อปหรือที่อื่นๆ
  2. แปลงเป็น XML เพื่อให้ตรวจสอบในเครื่องมือแก้ไขข้อความใดก็ได้ เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล

    sudo plutil -convert xml1 <path>/ldap.google.com.plist

    คุณจะเข้าถึงไฟล์เป็น <path>/ldap.google.com.plist ได้
  3. เปลี่ยนสิทธิ์ของไฟล์ข้างต้นเพื่อให้เปิดไฟล์ XML ได้ และตรวจสอบว่าไฟล์ไม่ว่างเปล่า

ขั้นตอนที่ 3: สร้างสคริปต์ Python เพื่อกำหนดค่าในอุปกรณ์ของผู้ใช้ปลายทางโดยอัตโนมัติ

คัดลอกสคริปต์ Python ด้านล่างแล้วบันทึกเป็นไฟล์ Python (ไฟล์ .py)

หมายเหตุ: สคริปต์ตัวอย่างนี้ออกแบบมาให้เข้ากันได้กับ Python เวอร์ชัน 3.10.x โดยระบุไว้ตามที่มีอยู่ ทีมสนับสนุนของ Google จะไม่ให้การสนับสนุนสำหรับสคริปต์ตัวอย่าง

Ldap_python_config.py

#!/usr/bin/python
from OpenDirectory import ODNode, ODSession, kODNodeTypeConfigure
from Foundation import NSMutableData, NSData

import os
import sys

# Reading plist
GOOGLELDAPCONFIGFILE = open(sys.argv[1], "r")
CONFIG = GOOGLELDAPCONFIGFILE.read()
GOOGLELDAPCONFIGFILE.close()

# Write the plist
od_session = ODSession.defaultSession()
od_conf_node, err = ODNode.nodeWithSession_type_error_(od_session, kODNodeTypeConfigure, None)
request = NSMutableData.dataWithBytes_length_(b' '*32, 32)
request.appendData_(NSData.dataWithBytes_length_(str.encode(CONFIG), len(CONFIG)))
response, err = od_conf_node.customCall_sendData_error_(99991, request, None)

# Edit the default search path and append the new node to allow for login
os.system("dscl -q localhost -append /Search CSPSearchPath /LDAPv3/ldap.google.com")
os.system("bash -c 'echo -e \"TLS_IDENTITY\tLDAP Client\" >> /etc/openldap/ldap.conf' ")

ขั้นตอนที่ 4: กำหนดค่าอุปกรณ์ของผู้ใช้ปลายทางโดยอัตโนมัติ

ไปที่อุปกรณ์ macOS อื่นๆ ที่ต้องการกำหนดค่า แล้วทำตามขั้นตอนต่อไปนี้

  1. คัดลอกไฟล์โปรไฟล์ Mac ที่สร้างไว้ในขั้นตอนที่ 1, ไฟล์การกำหนดค่า XML ที่สร้างไว้ในขั้นตอนที่ 2 และสคริปต์ Python จากขั้นตอนที่ 3 ไปยังอุปกรณ์นั้น
  2. หากต้องการติดตั้งทรัพยากร Dependency ที่จําเป็นสําหรับสคริปต์ ให้เรียกใช้คําสั่งต่อไปนี้
    python3 -m pip install pyobjc-framework-opendirectory
  3. เรียกใช้คำสั่งต่อไปนี้
    sudo python </path/to/saved_python_script> </path/to/ldap.google.com.plist generated in step 2>
  4. หากต้องการนำเข้าใบรับรองลงในคีย์เชนระบบ macOS ให้ดับเบิลคลิกที่ไฟล์โปรไฟล์ Mac ที่สร้างไว้ในขั้นตอนที่ 1 และเมื่อระบบแจ้งให้ระบุข้อมูลเข้าสู่ระบบของผู้ดูแลระบบในเครื่อง macOS จากนั้นระบบจะแจ้งให้คุณป้อนรหัสผ่าน .p12 ที่คุณตั้งไว้ในระยะเตรียมการ
  5. รีสตาร์ทเครื่อง macOS
  6. สร้างบัญชีอุปกรณ์เคลื่อนที่ตามวิธีการในขั้นตอนที่ 4 ของระยะการเตรียม และเลือกตั้งค่ากำหนดเพิ่มเติมตามที่ระบุไว้ในขั้นตอนที่ 5 ของระยะการเตรียม

ข้อจำกัดและหลักเกณฑ์

  • สำหรับผู้ใช้ที่ลงชื่อเข้าใช้ macOS โดยใช้ข้อมูลเข้าสู่ระบบ Google ชื่อผู้ใช้บัญชี Workspace ต้องแตกต่างจากรหัสผู้ใช้ของโปรไฟล์ผู้ใช้ macOS ไม่เช่นนั้นระบบจะบล็อกการลงชื่อเข้าใช้
  • เมื่อเริ่มลงชื่อเข้าใช้ macOS โดยใช้ข้อมูลเข้าสู่ระบบ Google แล้ว คุณต้องจัดการรหัสผ่านของผู้ใช้ (รีเซ็ตหรือกู้คืน) ในเว็บไซต์ Google (เช่น ที่ myaccount.google.com หรือในคอนโซลผู้ดูแลระบบของ Google) หากเลือกจัดการรหัสผ่านโดยใช้โซลูชันของบุคคลที่สาม โปรดตรวจสอบว่ารหัสผ่านล่าสุดซิงค์กับ Google แล้ว
  • หากผู้ดูแลระบบสร้างผู้ใช้ใหม่หรือรีเซ็ตรหัสผ่านของผู้ใช้ที่มีอยู่โดยเปิดการตั้งค่าขอให้เปลี่ยนรหัสผ่านในการลงชื่อเข้าใช้ครั้งถัดไป ผู้ใช้จะลงชื่อเข้าใช้ Mac โดยใช้รหัสผ่านชั่วคราวที่ผู้ดูแลระบบตั้งไว้ไม่ได้
    วิธีแก้ปัญหา: ผู้ใช้ต้องลงชื่อเข้าใช้ Google โดยใช้อุปกรณ์อื่น (เช่น อุปกรณ์เคลื่อนที่หรืออุปกรณ์เดสก์ท็อปอื่นๆ) ตั้งรหัสผ่านถาวร แล้วลงชื่อเข้าใช้ macOS โดยใช้รหัสผ่านใหม่
  • Mac ต้องเชื่อมต่อกับการเชื่อมต่ออินเทอร์เน็ตที่ใช้งานได้เพื่อให้เข้าถึง ldap.google.com ได้ในระหว่างการลงชื่อเข้าใช้ครั้งแรกหลังจากการกำหนดค่าข้างต้น โดยการลงชื่อเข้าใช้ครั้งต่อไปจะไม่ต้องใช้อินเทอร์เน็ตอีก ตราบเท่าที่คุณสร้างบัญชีมือถือไว้
  • การผสานรวม LDAP ที่ปลอดภัยของ Google กับ macOS ได้รับการทดสอบใน macOS Catalina, Big Sur และ Monterey

การแก้ปัญหา

หากพบปัญหาในการเชื่อมต่อกับบริการ LDAP ที่ปลอดภัย โปรดทําตามวิธีการด้านล่าง

ขั้นตอนที่ 1: ยืนยันการเชื่อมต่อ

ตรวจสอบการเชื่อมต่อโดยใช้ odutil
เรียกใช้คำสั่ง odutil show nodenames ในเทอร์มินัล
ตรวจสอบว่าสถานะของ /LDAPv3/ldap.google.com เป็นออนไลน์ หากไม่ใช่ online ให้ลองใช้ตัวเลือก telnet

ตรวจสอบการเชื่อมต่อโดยใช้ nc
เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล: nc -zv ldap.google.com 636
หากเชื่อมต่อกับ Google โดยใช้วิธีนี้ไม่ได้ ให้ลองเชื่อมต่อโดยใช้ IPv4

ยืนยันการเชื่อมต่อกับ IPv4
คุณเปลี่ยนอุปกรณ์เพื่อใช้ IPv4 ได้โดยทำตามขั้นตอนต่อไปนี้

  1. ไปที่ค่ากำหนดของระบบ > เครือข่าย > Wi-Fi > ขั้นสูง
  2. ในเมนู Advanced ให้ไปที่แท็บ TCP/IP
  3. เปลี่ยนตัวเลือกแบบเลื่อนลงจากกำหนดค่า IPv6 เป็นลิงก์ภายในเท่านั้น
  4. คลิกตกลง แล้วคลิกใช้เพื่อบันทึกการเปลี่ยนแปลง
  5. ดูการตรวจสอบสิทธิ์บริการโดยเชื่อมต่อผ่านการเชื่อมต่อ ldapsearch และการค้นหาอย่างถูกต้อง

ขั้นตอนที่ 2: ตรวจสอบว่าคุณดูออบเจ็กต์ไดเรกทอรีได้หรือไม่

  1. เปิด Directory Utility แล้วเปิดแท็บ Directory Editor
  2. เลือกโหนด /LDAPv3/ldap.google.com ในรายการแบบเลื่อนลง
  3. ยืนยันว่าคุณเห็นผู้ใช้และกลุ่มจากโดเมน Google ของตนเองหรือไม่

วิธีการกำหนดค่าสำหรับแอปพลิเคชัน Java

แอปพลิเคชันที่ใช้ Java ส่วนใหญ่ซึ่งมีฟังก์ชันการทำงาน LDAP สามารถกำหนดค่าให้ตรวจสอบสิทธิ์ด้วยใบรับรองไคลเอ็นต์ได้โดยการติดตั้งใบรับรองไคลเอ็นต์ใน Keystore ของแอปพลิเคชัน ไฟล์การกำหนดค่าที่แน่นอนจะแตกต่างกันไปตามแอปพลิเคชัน แต่โดยทั่วไปแล้วกระบวนการจะคล้ายกัน การตั้งค่ากำหนดให้ต้องติดตั้ง OpenSSL และ Java Runtime Environment

  1. แปลงใบรับรองและคีย์ให้อยู่ในรูปแบบคีย์สโตร์สำหรับ Java ระบบจะขอให้คุณป้อนรหัสผ่านตลอดกระบวนการนี้ เลือกรหัสผ่านที่ปลอดภัยและใช้รหัสผ่านเดียวกันในข้อความแจ้งทั้งหมด สมมติว่าไฟล์คีย์ไคลเอ็นต์ของคุณชื่อ ldap-client.key ให้ทำดังนี้

    หากใช้ macOS หรือ Linux ให้ใช้คำสั่งต่อไปนี้

    $  openssl pkcs12 -export -out java-application-ldap.pkcs12 -in ldap-client.crt -inkey ldap-client.key
    

    หากคุณใช้ Windows ให้ใช้คำสั่งต่อไปนี้

    $  certutil -mergepfx ldap-client.crt java-application-ldap.pkcs12
    

    สำคัญ: ไฟล์ทั้ง 2 ไฟล์ (<CERT_FILE>.crt และ <CERT_FILE>.key) ต้องอยู่ในไดเรกทอรีเดียวกัน นอกจากนี้ โปรดตรวจสอบว่าทั้ง key และ crt มีชื่อเหมือนกัน (โดยมีนามสกุลต่างกัน 2 นามสกุล) ในตัวอย่างนี้ เราใช้ชื่อ ldap-client.crt และ ldap-client.key

  2. นำเข้าใบรับรองไปยังคีย์สโตร์โดยทำดังนี้

    $  keytool -v -importkeystore -srckeystore java-application-ldap.pkcs12 -srcstoretype PKCS12 -destkeystore java-application-ldap.jks -deststoretype JKS
    
  3. คุณสามารถกำหนดค่าพร็อพเพอร์ตี้ Java ได้หลายวิธีโดยขึ้นอยู่กับแอปพลิเคชัน โดยส่วนใหญ่ คุณสามารถตั้งค่าได้ด้วยตัวเลือก -D ในบรรทัดคำสั่ง "java" ที่ใช้เพื่อเริ่มต้น ให้ตั้งค่าพร็อพเพอร์ตี้ของ Java สำหรับแอปพลิเคชันดังนี้

    javax.net.ssl.keyStore = /<path-to>/java-application-ldap.jks
    javax.net.ssl.keyStorePassword = <password selected above>
    
  4. กำหนดการตั้งค่าการเชื่อมต่อ LDAP ของแอปพลิเคชันโดยใช้ข้อมูลในวิธีการกำหนดค่าพื้นฐาน

ไม่บังคับ: ใช้ stunnel เป็นพร็อกซี

สำหรับไคลเอ็นต์ที่ไม่มีวิธีตรวจสอบสิทธิ์ LDAP ด้วยใบรับรองไคลเอ็นต์ ให้ใช้ stunnel เป็นพร็อกซี

กำหนดค่า stunnel เพื่อมอบใบรับรองไคลเอ็นต์ให้กับเซิร์ฟเวอร์ LDAP และกำหนดค่าไคลเอ็นต์เพื่อเชื่อมต่อกับ stunnel คุณควรเรียกใช้ stunnel บนเซิร์ฟเวอร์เดียวกับแอปพลิเคชันและรับฟังเฉพาะในเครื่องเท่านั้น เพื่อไม่ให้เปิดเผยไดเรกทอรี LDAP นอกเหนือจากเซิร์ฟเวอร์นั้น

โปรดทำตามขั้นตอนต่อไปนี้

  1. ติดตั้ง Stunnel โปรดดูตัวอย่างการติดตั้งใน Ubuntu ดังนี้

    $  sudo apt-get install stunnel4
    
  2. สร้างไฟล์การกำหนดค่า /etc/stunnel/google-ldap.conf ที่มีเนื้อหาต่อไปนี้ (สมมติว่า ldap-client.crt คือใบรับรอง และ ldap-client.key คือคีย์)

    [ldap]
    client = yes
    accept = 127.0.0.1:1636
    connect = ldap.google.com:636
    cert = ldap-client.crt
    key =
    ldap-client.key

  3. เมื่อต้องการเปิดใช้งาน stunnel ให้แก้ไข /etc/default/stunnel4 และตั้งค่าให้ ENABLED=1

  4. รีสตาร์ท stunnel

    $  sudo /etc/init.d/stunnel4 restart
    
  5. กำหนดค่าให้แอปพลิเคชันชี้ไปยัง ldap://127.0.0.1:1636

    คุณสามารถแทนที่ "1636" ด้วยพอร์ตที่ไม่ได้ใช้ได้ หากคุณเปลี่ยนบรรทัด accept ในไฟล์การกำหนดค่าด้านบนด้วย คุณจะต้องใช้ LDAP แบบข้อความธรรมดาโดยไม่เปิดใช้ StartTLS/SSL/TLS ระหว่างไคลเอ็นต์กับ stunnel เนื่องจากทั้ง 2 ฝ่ายสื่อสารกันภายในเครื่อง

หมายเหตุ: หากเลือกเรียกใช้ stunnel ในเซิร์ฟเวอร์แยกต่างหาก คุณต้องกำหนดค่าไฟร์วอลล์เพื่อให้เฉพาะแอปพลิเคชันที่จำเป็นเท่านั้นที่เข้าถึงเซิร์ฟเวอร์ stunnel ได้ นอกจากนี้ คุณยังกำหนดค่า stunnel ให้รับฟังด้วย TLS เพื่อให้ข้อมูลระหว่างแอปพลิเคชันและเซิร์ฟเวอร์ stunnel ได้รับการเข้ารหัสได้ด้วย รายละเอียดของการกำหนดค่าทั้ง 2 รายการนี้จะขึ้นอยู่กับสภาพแวดล้อมของคุณ

ขั้นตอนถัดไป

หลังจากเชื่อมต่อไคลเอ็นต์ LDAP กับบริการ LDAP ที่ปลอดภัยแล้ว คุณจะต้องเปลี่ยนสถานะบริการสำหรับไคลเอ็นต์ LDAP ให้เป็นเปิด

ดูขั้นตอนถัดไปที่ 5. เปลี่ยนไคลเอ็นต์ LDAP เป็นเปิด

หมายเหตุ: หากจำเป็น คุณสามารถใช้เครื่องมือง่ายๆ เช่น ldapsearch, ADSI หรือ ldp.exe เพื่อแก้ปัญหาหากพบข้อผิดพลาดขณะพยายามเชื่อมต่อไคลเอ็นต์ LDAP กับบริการ โปรดดูวิธีการที่หัวข้อการทดสอบการเชื่อมต่อและการแก้ปัญหา