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. ป้อนการตั้งค่าการเชื่อมต่อต่อไปนี้

    ชื่อ: พิมพ์ชื่อการเชื่อมต่อ เช่น LDAP ของ Google
    จุดเชื่อมต่อ: "เลือกหรือพิมพ์ชื่อที่โดดเด่นหรือบริบทการตั้งชื่อ"
    ป้อนชื่อโดเมนในรูปแบบ 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 กำลังรับฟังในพอร์ต 1389 ของ localhost ให้ทำตามขั้นตอนต่อไปนี้

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

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

    วิธีการตรวจสอบสิทธิ์: การตรวจสอบสิทธิ์อย่างง่าย
    DN หรือผู้ใช้ที่เชื่อมโยง: ชื่อผู้ใช้ของข้อมูลเข้าสู่ระบบจากคอนโซลผู้ดูแลระบบ
    รหัสผ่านที่เชื่อมโยง: รหัสผ่านของข้อมูลเข้าสู่ระบบจากคอนโซลผู้ดูแลระบบ
  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 ที่คุณต้องการให้สิทธิ์เข้าถึง 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 เพื่อเพิ่มบล็อกต่อไปนี้ที่ด้านล่างหลังจากข้อความโปรโตคอลการตรวจสอบสิทธิ์ด้วยรหัสผ่าน (PAP)

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

    2. ในส่วนให้สิทธิ์ ให้เปิดใช้ LDAP โดยนำเครื่องหมาย "-" ที่อยู่หน้า 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 ในโปรแกรมแก้ไขข้อความในโฟลเดอร์ต่อไปนี้

    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. คลิกแก้ไขข้างแอปพลิเคชันการเข้าถึงเว็บ
    ระบบจะแสดงกล่องโต้ตอบ 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) ต้องอยู่ในไดเรกทอรีเดียวกัน นอกจากนี้ โปรดตรวจสอบว่าทั้งคีย์และ crt มีชื่อเดียวกัน (มีนามสกุลต่างกัน) ในตัวอย่างนี้ เราใช้ชื่อ ldap-client.crt และ ldap-client.key

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

    เซิร์ฟเวอร์: ldap.google.com
    พอร์ต: 636
    ไม่มีการเชื่อมต่อ: ยกเลิกการเลือก
    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 อื่นได้ด้วยตัวกรองที่คุณต้องการ แอตทริบิวต์ที่ขอ และอื่นๆ ดูรายละเอียดอื่นๆ ได้ในหน้า man ของ 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. คลิก ที่มุมขวาบนของแถบเมนู แล้วพิมพ์การเข้าถึงพวงกุญแจ
  3. เปิดแอปพลิเคชันการเข้าถึงพวงกุญแจ แล้วคลิกระบบจากรายการทางด้านซ้าย
  4. คลิกตัวเลือก File ในแถบเมนูด้านบนซ้ายและเลือก Import Items
  5. ไปที่ตำแหน่งที่มี ldap-client.p12 ที่สร้างขึ้น เลือก ldap-client.p12 แล้วคลิกเปิด
    ป้อนรหัสผ่านหากได้รับข้อความแจ้ง
    ตอนนี้ใบรับรองที่มีชื่อว่า 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) ต้องอยู่ในไดเรกทอรีเดียวกัน นอกจากนี้ โปรดตรวจสอบว่าทั้งคีย์และ crt มีชื่อเดียวกัน (มีนามสกุลต่างกัน) ในตัวอย่างนี้ เราใช้ชื่อ ldap-client.crt และ ldap-client.key

  2. ติดตั้งคู่คีย์ในเบราว์เซอร์ Softerra LDAP
    1. ไปที่ Tools > Certificate Manager
    2. คลิก Import…
    3. คลิก Next
    4. คลิก Browse…
    5. ในรายการแบบเลื่อนลง File type ที่มุมขวาล่างของกล่องโต้ตอบ ให้เลือก 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
      Base DN: ชื่อโดเมนของคุณในรูปแบบ DN (เช่น dc=example,dc=com สำหรับ example.com)
      Use secure connection (SSL): เลือก
    4. คลิกถัดไป
    5. เลือก External (SSL Certificate)
    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

ผูก DN

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

เชื่อมโยงรหัสผ่าน DN

ป้อนข้อมูลเข้าสู่ระบบที่คุณสร้างขึ้นในคอนโซลผู้ดูแลระบบของ 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. ติดตั้งการขึ้นต่อกัน

    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 Distribution อื่นๆ)

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 คุณจะยังคงเชื่อมต่อกับบริการ 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. เปิดแอปพลิเคชันการเข้าถึงพวงกุญแจ

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

        GeneratedUID ควรแสดงในส่วนผู้ใช้หลังจากขยาย
      3. คลิก GeneratedUID แล้วคลิกไอคอน "+" ในช่องทางด้านขวา
      4. ป้อน apple-generateduid ในกล่องข้อความ แล้วคลิก Enter
      5. ในโหนดผู้ใช้ ให้คลิกแอตทริบิวต์ NFSHomeDirectory
      6. ในหน้าจอด้านขวา ให้อัปเดตค่าของแอตทริบิวต์นี้เป็น #/Users/$uid$
      7. คลิก OK แล้วป้อนรหัสผ่านเพื่อบันทึกการเปลี่ยนแปลง
  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. ตรวจสอบว่าอุปกรณ์เชื่อมต่อกับอินเทอร์เน็ตแล้ว หากไม่มีการเชื่อมต่ออินเทอร์เน็ต การเข้าสู่ระบบสำหรับผู้ใช้ Secure LDAP จะไม่ทำงาน
    หมายเหตุ: คุณต้องเชื่อมต่ออินเทอร์เน็ตเมื่อลงชื่อเข้าใช้ครั้งแรกเท่านั้น การเข้าสู่ระบบครั้งต่อๆ ไปจะทำได้โดยไม่ต้องเข้าถึงอินเทอร์เน็ต
  2. ลงชื่อเข้าใช้อุปกรณ์ด้วยบัญชีผู้ใช้ที่กำหนดค่าให้ใช้ Secure 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. ไปที่ System Preferences > Network > Wi-Fi > Advanced
  2. ในเมนู Advanced ให้ไปที่แท็บ TCP/IP
  3. เปลี่ยนการเลือกแบบเลื่อนลงจากกำหนดค่า IPv6 เป็นเฉพาะลิงก์ภายใน
  4. คลิกตกลง แล้วคลิกใช้เพื่อบันทึกการเปลี่ยนแปลง
  5. ดูการตรวจสอบสิทธิ์บริการโดยเชื่อมต่อผ่านการเชื่อมต่อ ldapsearch และการค้นหาอย่างถูกต้อง

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

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

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

แอปพลิเคชันส่วนใหญ่ที่ใช้ Java ซึ่งมีฟังก์ชัน LDAP สามารถกำหนดค่าให้ ตรวจสอบสิทธิ์ด้วยใบรับรองไคลเอ็นต์ได้โดยการติดตั้งใบรับรองไคลเอ็นต์ใน ที่เก็บคีย์ของแอปพลิเคชัน ไฟล์การกำหนดค่าที่แน่นอนจะแตกต่างกันไปในแต่ละแอปพลิเคชัน แต่โดยทั่วไปแล้วกระบวนการจะคล้ายกัน การตั้งค่ากำหนดให้ติดตั้ง 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) ต้องอยู่ในไดเรกทอรีเดียวกัน นอกจากนี้ โปรดตรวจสอบว่าทั้งคีย์และ 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 กับบริการ โปรดดูวิธีการที่หัวข้อการทดสอบการเชื่อมต่อและ การแก้ปัญหา