4. 將 LDAP 用戶端連線至安全 LDAP 服務

請按照本文的操作說明,將 LDAP 用戶端連線至安全 LDAP 服務。

重要事項:

  • 請務必詳閱供應商文件
    本文詳細說明如何將 LDAP 用戶端連線至安全 LDAP 服務,但僅供參考,實際情況可能有所不同。除了這些說明指示外,請務必詳閱供應商文件,瞭解將用戶端連線至安全 LDAP 服務的最新步驟。
  • 開始前
    使用這些操作說明前,請務必先將用戶端新增至安全 LDAP 服務、設定存取權限、下載用戶端憑證和金鑰,並視需要建立存取憑證。
  • 連線測試
    選擇性步驟:開始執行這些步驟前,您可能想使用 ldapsearch、ADSI 和 ldp.exe 等簡單工具,快速測試連線。如果在嘗試將 LDAP 用戶端連線至服務時發生錯誤,您也可以使用這些工具排解問題。如需操作說明,請參閱「安全 LDAP 連線測試」。
  • 如何完成設定步驟
    按照本頁的操作說明連線 LDAP 用戶端後,您必須在 Google 管理控制台中將服務狀態切換為「開啟」,才能完成 LDAP 用戶端設定。如需操作說明,請參閱「5. 將 LDAP 用戶端切換為「開啟」。

本文內容

本文包含以下各節說明:

這些操作說明假設您下載的用戶端金鑰和憑證檔案分別名為 ldap-client.key 和 ldap-client.crt。

基本設定操作說明

本節提供將 LDAP 用戶端連線至安全 LDAP 服務的一般操作說明。如果您的 LDAP 用戶端未列於下方說明中,請務必參閱該應用程式的說明文件。

注意:部分 LDAP 用戶端 (例如 Atlassian Jira 和 SSSD) 會在使用者驗證期間執行使用者查詢,以取得使用者的更多資訊。如要確保這類 LDAP 用戶端的使用者驗證作業正常運作,您必須為啟用「驗證使用者憑證」的所有機構單位,開啟「讀取使用者資訊」。(如需操作說明,請參閱「設定存取權」。)

如要將 LDAP 用戶端連上安全 LDAP 服務,請按照下列步驟操作:

  1. 使用 Cloud Directory 將 LDAP 用戶端設定為 LDAP 伺服器。
  2. 將憑證上傳到 LDAP 用戶端。

    安全 LDAP 服務會使用 TLS 用戶端憑證做為主要驗證機制。如要開始將憑證上傳至 LDAP 用戶端,請開啟 LDAP 用戶端的驗證或目錄設定,然後輸入下表中的詳細資料。

    注意:如要瞭解如何及在哪裡上傳 TLS 憑證,請參閱供應商的說明文件。

請參閱下表,瞭解基本連線資訊:

Hostname (主機名稱)

ldap.google.com

連接埠

如為已啟用 StartTLS 的 LDAP,通訊埠是 389
如為 LDAPS (已啟用 SSL/TLS),通訊埠是 636

Base DN (基準 DN)

您的網域 (採用 DN 格式)。例如:

dc=example,dc=com 即表示「example.com」

使用者名稱和密碼

除了使用憑證進行驗證外,某些 LDAP 用戶端還會要求您輸入使用者名稱和密碼。如果使用者名稱和密碼不是必填欄位,您可以跳過此步驟。

在 Google 管理控制台中產生使用者名稱和密碼。如需操作說明,請參閱產生存取憑證。

用戶端憑證和金鑰檔案

使用從 Google 管理控制台下載的憑證和金鑰檔案。如果 LDAP 用戶端無法透過用戶端憑證進行驗證,請參閱「使用 stunnel 做為 Proxy」。

重要事項:部分 LDAP 用戶端 (例如 Apache Directory Studio) 不支援上傳數位憑證。如果遇到這種情況,請參閱將 stunnel 當做 Proxy 使用一節。

特定 LDAP 用戶端的設定操作說明

ADSI 編輯器 (Windows)

步驟如下:

  1. 按照「ldp.exe (Windows)」中的步驟 1 至 11 安裝用戶端憑證。
  2. 依序點選 [動作] > [連線至…]。
  3. 輸入下列連線設定:

    「名稱」:輸入連線名稱,例如「Google LDAP」。
    連線點:「選取或輸入識別名稱或命名環境」
    以 DN 格式輸入網域名稱 (例如 dc=example,dc=com 代表 example.com)。

    電腦:「選取或輸入網域或伺服器」
    ldap.google.com

    使用以 SSL 為基礎的加密:勾選
  4. 按一下「進階...」,然後輸入下列詳細資料:

    指定憑證:勾選
    使用者名稱:管理控制台中的存取憑證使用者名稱
    密碼:管理控制台中的存取憑證密碼
    連接埠號碼:636
    通訊協定:LDAP
    簡單繫結驗證:勾選
  5. 按一下 [確定],再按一下 [確定]。
  6. 如果連線成功,右側窗格就會顯示基準 DN 中的 Active Directory 內容。

Apache Directory Studio

如要使用 Apache Directory Studio,請透過 stunnel 連線,並使用在 Google 管理控制台中產生的存取憑證 (使用者名稱和密碼)。假設憑證已就位,且 stunnel 正在 localhost 通訊埠 1389 上監聽,請按照下列步驟操作:

  1. 依序按一下 [File] (檔案) > [New…] (新增…)。
  2. 依序選取 [LDAP Browser] (LDAP 瀏覽器) > [LDAP Connection] (LDAP 連線)。
  3. 點按「繼續」。
  4. 輸入連線參數:

    連線名稱:選擇名稱,例如「Google LDAP」
    主機名稱:localhost
    通訊埠:1389 (或 stunnel 監聽/接受通訊埠)
    加密方法:不加密 (注意:如果 stunnel 是遠端執行,建議在 stunnel 與用戶端之間加密)。
  5. 點按「繼續」。
  6. 輸入驗證參數:

    驗證方法:簡單驗證
    繫結 DN 或使用者:管理控制台中的存取憑證使用者名稱
    繫結密碼:管理控制台中的存取憑證密碼
  7. 點按「繼續」。
  8. 輸入基準 DN。
    這是 DN 格式的網域名稱 (example.com 的格式為 dc=example,dc=com)。
  9. 按一下「完成」。

Atlassian Jira

Atlassian Jira 會在使用者驗證期間執行使用者查詢,以取得使用者的詳細資訊。如要確保這個 LDAP 用戶端的使用者驗證功能正常運作,您必須為所有已啟用「驗證使用者憑證」的機構單位,開啟「讀取使用者資訊」和「讀取群組資訊」。(如需操作說明,請參閱設定存取權限)。

重要事項:如按照下列說明操作,KeyStorePassword 可能會曝露給使用者和記錄檔。請採取預防措施,避免未經授權存取本機殼層、記錄檔和 Google 管理控制台。除了下列操作說明,您也可以使用 stunnel4 方法 (請參閱「選用:使用 stunnel 做為 Proxy」)。

注意:以下操作說明假設 Jira 安裝在 /opt/atlassian/jira。

如要將 Atlassian Jira 用戶端連線至安全 LDAP 服務,請按照下列步驟操作:

  1. 將憑證和金鑰複製到 Jira 伺服器 (這是將 LDAP 用戶端新增至安全 LDAP 服務時,在 Google 管理控制台中產生的憑證)。

    例如:
    $ scp ldap-client.key user@jira-server:
  2. 將憑證和金鑰轉換為 Java KeyStore 格式。系統在此過程中會提示您輸入密碼。為了方便起見,請選擇一組安全的密碼,並在每次系統提示時使用同一組密碼。

    $ 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 以使用新建立的 KeyStore。請按照這裡的指示新增選項:

    「-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. 輸入以下資訊:

    名稱

    Google 安全 LDAP

    Directory type (目錄類型)

    OpenLDAP

    Hostname (主機名稱)

    ldap.google.com

    Port (通訊埠)

    636

    Use SSL (使用 SSL)

    已勾選

    使用者名稱

    在 Google 管理控制台中產生使用者名稱和密碼。如需操作說明,請參閱產生存取憑證。

    密碼

    在 Google 管理控制台中產生使用者名稱和密碼。如需操作說明,請參閱產生存取憑證。

    Base DN (基準 DN)

    以 DN 格式輸入的網域名稱 (假設您的網域為「example.com」,則輸入 dc=example,dc=com)。

    Additional User DN (其他使用者 DN)

    選用。"ou=Users"

    Additional Group DN (其他群組 DN)

    選用。「ou=Groups」

    LDAP Permissions (LDAP 權限)

    唯讀

    「Advanced Settings」

    未變更

    User Schema Settings (使用者架構設定) >
    User Name Attribute (使用者名稱屬性)

    googleUid

    User Schema Settings (使用者架構設定) >
    User Name RDN Attribute (使用者名稱 RDN 屬性)

    uid

    Group Schema Settings (群組架構設定) >
    Group Object Class (群組物件類別)

    groupOfNames

    Group Schema Settings (群組架構設定) >
    Group Object Filter (群組物件篩選器)

    (objectClass=groupOfNames)

    Membership Schema Settings (成員資格架構設定) >
    Group Members Attribute (群組成員屬性)

    成員

    Membership Schema Settings (成員資格架構設定) >
    Use the User Membership Attribute (採用使用者成員資格屬性)

    已勾選
  7. 將角色授予群組。

    使用者必須是已獲 Jira 存取權的群組成員,Atlassian Jira 才能允許使用者登入。

    如何將角色授予群組:
    1. 依序前往「設定」>「應用程式」>「應用程式存取權」。
    2. 在「選取群組」文字方塊中,輸入要授予 Jira 存取權的 Google 群組名稱。

CloudBees Core / Jenkins

如需將 CloudBees Core 連線至安全 LDAP 服務的操作說明,請參閱 Configure CloudBees Core with Google's Cloud Identity Secure LDAP (透過 Google 的 Cloud Identity 安全 LDAP 設定 CloudBees Core)。

FreeRadius

步驟如下:

  1. 在 /etc/freeradius/3.0/ 安裝及設定 FreeRADIUS。

    FreeRADIUS 安裝完畢後,您可以安裝「freeradius-ldap」外掛程式,以便新增 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. password = 應用程式憑證中的密碼
    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. 在「authorize」部分中,移除 LDAP 前的「-」符號,即可啟用 LDAP。

      #
      # The ldap module reads passwords from the LDAP database.
      ldap
    3. 修改「authenticate」(驗證) 部分,使用下列字串修改「Auth-Type LDAP」區塊:

      # Auth-Type LDAP {
      ldap
      # }

    4. 修改「authenticate」(驗證) 部分,使用下列字串修改「Auth-Type PAP」區塊:

      Auth-Type PAP {
      # pap
      ldap
      }

GitLab

如需將 GitLab 連線至安全 LDAP 服務的操作說明,請參閱 Configure Google Secure LDAP for GitLab (為 GitLab 設定 Google 安全 LDAP)。

Itopia/Ubuntu

如需將 Itopia/Ubuntu 連線至安全 LDAP 服務的操作說明,請參閱「在 Ubuntu 16.04 上設定 Google Cloud Identity LDAP 以供使用者登入」。

Ivanti / LanDesk

步驟如下:

  1. 在 Ivanti Web 伺服器上,使用文字編輯器開啟下列兩個資料夾中的 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」,SSL/TLS 通訊埠預設為「636」)。
  4. 將 <TestDN> 值設為 DN 格式的網域名稱。(例如 example.com 的 dc=example,dc=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. 在 Ivanti Configuration Center 開啟所需執行個體。
  7. 按一下「Service Desk Framework」應用程式旁邊的 [Edit] (編輯)。
    畫面上會隨即顯示 Service Desk Framework 的「Edit Application」(編輯應用程式) 對話方塊。
  8. 在「Configuration parameters」(設定參數) 群組的「Logon policy」(登入政策) 清單中,選取 [Explicit only] (僅限明確),然後按一下 [OK] (確定)。
  9. 按一下「Web Access」應用程式旁的「編輯」。
    畫面上會隨即顯示 Web Access 的「Edit Application」(編輯應用程式) 對話方塊。
  10. 在「Configuration parameters」群組中,選取「Logon policy」清單中的「Explicit only」,然後按一下「OK」。

登入時,請輸入相關聯網域使用者的網路密碼。

LDAP 伺服器驗證異常狀況記錄功能

如果無法順利設定 LDAP 伺服器驗證,可以啟用異常狀況記錄功能,協助找出問題。異常狀況記錄功能預設為停用,建議您在調查問題完畢後重新停用這項功能。

如何啟用 LDAP 伺服器驗證異常狀況記錄功能:

  1. 在文字編輯器中開啟相應的驗證設定 XML 檔案:

    DirectoryServiceAuthenticationConfiguration.xml、OpenLDAPAuthenticationConfiguration.xml 或 OpenLDAPSSLAuthenticationConfiguration.xml
  2. 將以下程式碼行:

    <ShowExceptions>false</ShowExceptions>
    變更為:
    <ShowExceptions>true</ShowExceptions>
  3. 儲存變更。

Ldp.exe (Windows)

步驟如下:

  1. 將憑證和金鑰檔案轉換成一個 PKCS12 格式的檔案。在命令提示字元中輸入下列內容:

    如果您使用 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

    重要事項:這兩個檔案 (<CERT_FILE>.crt 和 <CERT_FILE>.key) 必須位於同一目錄。此外,請確認 key 和 crt 的名稱相同 (副檔名不同)。在本範例中,我們使用 ldap-client.crt 和 ldap-client.key 這兩個名稱。

  2. 前往控制台。
  3. 在搜尋方塊中搜尋「憑證」,然後按一下「管理使用者憑證」。
  4. 依序前往 [動作] > [所有工作] > [匯入…]。
  5. 選取 [目前使用者],然後點選 [下一步]。
  6. 按一下 [瀏覽…]。
  7. 在對話方塊右下角的「檔案類型」下拉式選單中,選取 [個人資訊交換 (*.pfx;*.p12)]。
  8. 選取步驟 2 中的 ldap-client.p12 檔案,按一下「開啟」,然後按一下「下一步」。
  9. 輸入步驟 2 的密碼,然後點選 [下一步]。
  10. 選取「個人」憑證存放區,依序按一下「下一步」和「完成」。
  11. 執行 Ldp.exe。
  12. 依序前往「連線」>「連線...」。
  13. 輸入下列連線詳細資料:

    伺服器:ldap.google.com
    通訊埠:636
    無連線:取消勾選
    SSL:勾選
  14. 按一下 [確定]。
  15. 依序點選 [檢視] > [樹狀目錄]。
  16. 輸入基準 DN,也就是 DN 格式的網域名稱 (假設您的網域為「example.com」,則輸入 dc=example,dc=com)。
  17. 按一下 [確定]。
  18. 如果連線成功,LDP.exe 就會在右側窗格顯示 Active Directory 內容 (例如基準 DN 內的所有屬性)。

Netgate / pfSense

如需將 Netgate/pfSense 連線至安全 LDAP 服務的操作說明,請參閱「Configuring Google Cloud Identity as an Authentication Source」。

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 格式的檔案。在命令提示字元中輸入下列內容:

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

    輸入密碼來加密輸出檔案。
  2. 按一下選單列右上角的 ,然後輸入「鑰匙圈存取」。
  3. 開啟「鑰匙圈存取」應用程式,然後按一下左側清單中的「系統」。
  4. 按一下選單列左上方的 [檔案] 選項並選取 [匯入項目]。
  5. 瀏覽至產生 ldap-client.p12 的位置,選取 ldap-client.p12,然後按一下「開啟」。
    系統顯示提示時,請輸入您的密碼。
    系統鑰匙圈憑證清單中現在應該會顯示名為「LDAP Client」的憑證。
  6. 點選「LDAP Client」憑證旁邊的箭頭。私密金鑰會顯示在下方。
    1. 按兩下私密金鑰。
    2. 在對話方塊中選取「存取控管」分頁標籤,然後點選左下角的「+」。
    3. 在開啟的視窗中,按下 Command+Shift+G 開啟新視窗,然後將現有文字替換為 /usr/bin/ldapsearch。

    4. 按一下 [前往]。

      系統會開啟醒目顯示 ldapsearch 的視窗。

    5. 按一下「新增」。

    6. 按一下「儲存變更」,然後在系統提示時輸入密碼。

      現在您可以使用 OpenLDAP ldapsearch 指令,透過指令列存取 LDAP 目錄了。

  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 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 做為 Proxy。

OpenVPN 存取伺服器 (商業版)

如需將 OpenVPN Access Server 連線至安全 LDAP 服務的操作說明,請參閱「Configuring Google Secure LDAP with OpenVPN Access Server」。

PaperCut MF 和 PaperCut NG

如需將 PaperCut 連線至安全 LDAP 服務的操作說明,請參閱「How to sync and authenticate Google Workspace and Google Cloud Identity users in PaperCut」(如何在 PaperCut 中同步及驗證 Google Workspace 和 Google Cloud Identity 使用者)。

Puppet Enteprise

如需將 Puppet Enterprise 連線至安全 LDAP 服務的操作說明,請參閱 Google Cloud Directory for PE (PE 適用的 Google Cloud Directory)。

Softerra LDAP Browser

重要事項:開始前,請務必安裝 Softerra LDAP 瀏覽器 4.5 (4.5.19808.0) 以上版本。請參閱 LDAP Browser 4.5。

步驟如下:

  1. 將憑證和金鑰檔案轉換成一個 PKCS12 格式的檔案。在命令提示字元中輸入下列內容:

    如果您使用 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

    重要事項:這兩個檔案 (<CERT_FILE>.crt 和 <CERT_FILE>.key) 必須位於同一目錄。此外,請確認 key 和 crt 的名稱相同 (副檔名不同)。在本範例中,我們使用 ldap-client.crt 和 ldap-client.key 這兩個名稱。

  2. 在 Softerra LDAP Browser 中安裝金鑰組。
    1. 依序前往 [Tools] (工具) > [Certificate Manager] (憑證管理員)。
    2. 點選 [Import…] (匯入…)。
    3. 點選「Next」。
    4. 按一下 [瀏覽…]。
    5. 在對話方塊右下角的「檔案類型」下拉式選單中,選取「個人資訊交換 (*.pfx;*.p12)」。
    6. 選取上述步驟 2 中的 ldap-client.p12 檔案。
    7. 依序點選 [Open] (開啟) 和 [Next] (下一步)。
    8. 輸入上述步驟 2 中的密碼,然後點選 [Next] (下一步)。
    9. 選取「個人」憑證存放區。
    10. 點按「繼續」。
    11. 按一下「完成」。
  3. 新增伺服器設定檔。
    1. 依序前往「File」>「New」>「New Profile…」
    2. 輸入設定檔名稱,例如「Google LDAP」。
    3. 點按「繼續」。

      輸入下列資訊:

      主機: ldap.google.com
      連接埠:
      636
      基準 DN:DN 格式的網域名稱。(例如 example.com 的 dc=example,dc=com)
      使用安全連線 (SSL):已勾選
    4. 點按「繼續」。
    5. 選取 [External (SSL Certificate)] (外部 (SSL 憑證))。
    6. 點按「繼續」。
    7. 按一下「完成」。

Sophos Mobile

如需將 Sophos Mobile 連線至安全 LDAP 服務的操作說明,請參閱「Connecting Sophos Mobile to Google Cloud Identity / Google Cloud Directory using Secure LDAP」(使用安全 LDAP 將 Sophos Mobile 連線至 Google Cloud Identity/Google Cloud Directory)。

Splunk

將 Splunk 連線至安全 LDAP 服務時,請務必使用 Splunk 8.1.4 以上版本。使用舊版 Splunk (例如 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. 使用 Splunk 網頁 UI 新增 LDAP 策略。輸入下列詳細資料,然後按一下「儲存」:

名稱

Google 安全 LDAP

主機

ldap.google.com

Port (通訊埠)

636

已啟用 SSL

已勾選

連線順序

1

繫結 DN

輸入您在 Google 管理控制台產生的存取憑證。

繫結 DN 密碼

輸入您在 Google 管理控制台產生的存取憑證。

Base DN (基準 DN)

DN 格式的網域名稱 (例如網域「example.com」的 DN 格式為 dc=example,dc=com)

使用者數量篩選器

針對要用來篩選使用者的物件類別輸入使用者數量篩選器。

使用者名稱屬性

uid

真實姓名屬性

displayname

電子郵件地址屬性

郵件

群組對應屬性

dn

群組底層 DN

DN 格式的網域名稱 (例如網域「example.com」的 ou=Groups,dc=example,dc=com)

靜態群組搜尋篩選器

針對要用來篩選靜態群組的物件類別輸入靜態群組搜尋篩選器。

群組名稱屬性

cn

靜態成員屬性

成員

SSSD (Red Hat Enterprise 和 CentOS)

進行使用者驗證期間,SSSD 會執行使用者查詢,藉此取得使用者的更多資訊。如要確保這個 LDAP 用戶端的使用者驗證功能正常運作,您必須為所有已啟用「驗證使用者憑證」的機構單位,開啟「讀取使用者資訊」和「讀取群組資訊」。(如需操作說明,請參閱設定存取權限)。

如要在 Red Hat 8 或 CentOS 8 上將 SSSD 用戶端連線至安全 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 進階版授權。

  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 -l user@example.com {HOSTNAME}

疑難排解

  1. 檢查 SSSD 版本 (必須大於或等於 1.15.2):

    # sssd --version
    2.2.3

  2. 在 RHEL/CentOS (或任何強制執行 SELinux 的發行版) 中,SSSD 設定檔、憑證檔和金鑰必須位於 sssd_conf_t 角色能夠存取的目錄:

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

    查看 /var/log/audit/audit.log 是否有 AVC 拒絕訊息。

  3. 檢查 /etc/nsswitch.conf 是否有 passwd、shadow、group 和 netgroup 實體的「sss」:

    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.

    動作:您需要對 .conf 檔案執行 chmod 600。

    例子:
    [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.

    動作:從 sssd.conf 移除符合 LDAP 延伸模組的不支援群組。

  5. 檢查 /var/log/sssd_{DOMAIN}.log 是否有 LDAP/network/auth 錯誤。

    例子:

    [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。

    如想取得更詳細的錯誤訊息,請在 sssd.conf 的網域區段下方新增「debug_level = 9」,然後重新啟動 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

提示:如果您在 Google Compute Engine 上使用 Linux 電腦,且沒有外部 IP 位址,只要啟用 Google 服務的內部存取權,還是可以連線至安全 LDAP 服務。詳情請參閱「設定 Private Google Access」。

macOS

請按照下列步驟連線至 macOS 用戶端,以便使用安全 LDAP 服務進行使用者帳戶驗證。

系統需求

  • macOS 必須為 Catalina 10.15.4 以上版本。
  • 您必須擁有 Google 超級管理員使用者 ID,才能完成準備階段的步驟 1。
  • 您必須具備本機管理員權限才能進行這項設定。

內容:

準備階段

本節主要說明如何進行手動設定及使用安全 LDAP 服務測試 macOS 驗證。

步驟 1:在 Google 管理控制台中,將 macOS 設為 LDAP 用戶端

如需操作說明,請參閱「新增 LDAP 用戶端」,或觀看這部 安全 LDAP 示範影片。您也會在這個過程中下載自動產生的 TLS 用戶端憑證。

步驟 2:將憑證匯入系統鑰匙圈

  1. 將憑證 (於步驟 1 下載的 ZIP 檔案) 和金鑰複製到 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. 依序點選 [檔案] > [輸入項目]。

    5. 選取在先前步驟中建立的「ldap-client.p12」檔案。

    6. 如果出現系統提示,請輸入管理員密碼,允許修改系統鑰匙圈。

    7. 輸入在先前步驟中建立的密碼,將 .p12 檔案解密。

      注意:您應該會在金鑰清單中看到新的憑證和相關聯的私密金鑰。憑證的名稱可能為「LDAP Client」。記下憑證名稱,以利進行下一個步驟。
    8. 請按照本文「ldapsearch (macOS)」一節中的步驟 6,為私密金鑰設定存取權控管,以便新增下列應用程式。如果「所有項目」類別下方未顯示私密金鑰,請嘗試切換至「我的憑證」類別,然後展開對應的憑證,找出正確的私密金鑰項目。

      如說明所述,ldapsearch 應用程式僅適用於疑難排解,不適用於其他用途。通常會在提供 macOS 存取權給使用者之前移除。

      必須將下列三個應用程式加入存取控管清單:

      /System/Library/CoreServices/Applications/Directory Utility
      /usr/libexec/opendirectoryd
      /usr/bin/dscl
  3. 在 /etc/openldap/ldap.conf 檔案中新增一行,確保「LDAP Client」與匯入 .p12 檔案後,macOS 鑰匙圈存取應用程式中顯示的憑證名稱完全相同 (名稱來自產生憑證的 X.509 主體一般名稱):

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

步驟 3:將裝置指向 Google 目錄進行驗證

開啟「Directory Utility」應用程式,建立新的 LDAP 目錄節點:

  1. 按一下鎖頭圖示,即可進行變更並輸入密碼。
  2. 選取「LDAPv3」,然後按一下鉛筆圖示編輯設定。
  3. 按一下 [新增…]。
  4. 在伺服器名稱欄位中輸入 ldap.google.com,選取「使用 SSL 加密」,然後按一下「手動」。
  5. 選取新的伺服器名稱,然後按一下 [編輯…]。
  6. 輸入描述性名稱,例如「Google Secure LDAP」(Google 安全 LDAP) 做為設定名稱。
  7. 選取「使用 SSL 加密」,並確認通訊埠已設為 636。
  8. 前往「搜尋和對應」分頁。
    1. 在「連接這個 LDAPv3 伺服器」下拉式選單中,選擇「RFC2307」。
    2. 出現提示時,請在「Search Base Suffix」(搜尋基礎後置字串) 中輸入網域相關資訊。舉例來說,如果網域名稱是 zomato.com,請輸入 dc=zomato,dc=com。
    3. 按一下 [確定]。
    4. 在「使用者」記錄類型下設定屬性:
      1. 在「記錄類型和屬性」部分,選取「使用者」,然後按一下「+」按鈕。
      2. 在彈出式視窗中,選擇「屬性類型」,選取「產生的 UID」,然後按一下「確定」關閉彈出式視窗。

        展開「使用者」後,應該會顯示「GeneratedUID」。
      3. 按一下 GeneratedUID,然後點選右側方塊中的「+」圖示。
      4. 在文字方塊中輸入 apple-generateduid,然後按一下「Enter」。
      5. 在「Users」節點下方,按一下「NFSHomeDirectory」屬性。
      6. 在右側畫面中,將這個屬性的值更新為 #/Users/$uid$
      7. 按一下「確定」,然後輸入密碼來儲存變更。
  9. 在「目錄工具」視窗中,設定新的 LDAP 設定:
    1. 前往「搜尋政策」分頁。
    2. 按一下鎖頭圖示以進行變更,並在系統顯示提示時,輸入目前使用者的密碼。
    3. 將下拉式選單選項從「Search Path」變更為「Custom path」。
    4. 開啟「驗證」分頁,然後按一下「+」圖示。
    5. 從「目錄網域」清單中選擇 /LDAPv3/ldap.google.com,然後按一下「新增」。
    6. 按一下「套用」按鈕,並在系統提示時輸入管理員密碼。
  10. 執行下列四個指令,以停用 DIGEST-MD5、CRAM-MD5、NTLM 和 GSSAPI SASL 驗證機制。macOS 會使用簡單繫結,透過 Google 安全 LDAP 服務進行驗證:

    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@solarmora.com 的使用者名稱部分為 jsmith。

  2. 系統提示輸入 SecureToken 管理員使用者名稱時,請輸入管理員使用者名稱,然後在下一個提示中輸入密碼。這會將 $uid 新增至 FileVault。如果 macOS 磁碟已加密,則必須提供這項資訊。

步驟 5:(選用) 設定登入畫面偏好設定

  1. 依序前往「系統偏好設定」>「使用者與群組」> 左下方的「登入選項」。
  2. 提供管理員憑證以便解鎖。
  3. 將「顯示登入視窗為」變更為「名稱和密碼」。

步驟 6:重新啟動裝置並登入

  1. 確認裝置已連上網際網路。如果沒有網際網路連線,就無法登入安全 LDAP 使用者帳戶。
    注意:只有在首次登入時需要連上網路。之後使用者就能在沒有網路連線的情況下直接登入。
  2. 使用設定為透過安全 LDAP 進行驗證的使用者帳戶登入裝置。

部署階段

本節主要說明如何為使用者自動進行裝置設定。在準備階段完成手動設定的 macOS 裝置上,執行下列步驟 1 和 2。

步驟 1:使用 Apple Configurator 2 建立含憑證的 Mac 設定檔

  1. 在您已透過安全 LDAP 服務手動設定 macOS 驗證的裝置上安裝 Apple Configurator 2。
  2. 開啟 Apple Configurator 2,建立新的描述檔,然後在「憑證」部分按一下 [設定],匯入先前產生的 .p12 檔案。

    注意:請確認匯入的 .p12 檔案設有密碼。在憑證的「密碼」部分輸入該檔案的密碼。

  3. 儲存描述檔。
  4. (如果裝置使用 M1 或 M2 處理器,請略過這個步驟,直接前往步驟 5。在文字編輯器中開啟描述檔,然後在第一個 <dict> 標記的位置加入下列指令列:

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


    由於 Apple Configurator 尚不支援 macOS 的描述檔,所以必須新增上述指令列。
  5. 在第二個 <dict> 標記與憑證資料並排的位置加入下列指令列:

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


    這可以確保所有應用程式都能存取這個憑證。

步驟 2:將目錄設定檔 (plist) 轉換為 XML

在這個步驟中,您要將準備階段步驟 3 中完成的所有手動設定,擷取到 XML 檔案中。您可以使用這個檔案和上述步驟 1 建立的 Mac 描述檔,自動設定其他 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. 將步驟 1 產生的 Mac 描述檔、步驟 2 產生的 XML 設定檔,以及步驟 3 的 Python 指令碼都複製到裝置上。
  2. 如要安裝指令碼的必要依附元件,請執行下列指令:
    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 系統鑰匙圈,請在步驟 1 產生的 Mac 描述檔上按兩下,然後在系統出現提示時,提供您的 macOS 本機管理員憑證。接著系統會提示您輸入準備階段設定的 .p12 密碼。
  5. 重新啟動 macOS 電腦。
  6. 按照準備階段的步驟 4 建立行動帳戶,並視需要設定準備階段步驟 5 中列出的其他偏好設定。

限制和規範

  • 如果使用者透過 Google 憑證登入 macOS,其 Workspace 帳戶使用者名稱必須與 macOS 使用者個人資料使用者 ID 不同,否則系統會封鎖登入作業。
  • 使用者透過 Google 憑證登入 macOS 後,Google 網站 (例如 myaccount.google.com 或 Google 管理控制台) 就會開始執行使用者密碼管理作業 (重設或復原)。如果選擇使用第三方解決方案管理密碼,請務必將最新密碼同步到 Google。
  • 如果管理員建立新使用者或重設現有使用者的密碼時,開啟了「要求在下次登入變更密碼」設定,使用者就無法使用管理員設定的臨時密碼登入 Mac。
    解決方法:使用者必須透過其他裝置 (例如行動裝置或其他電腦) 登入 Google 設定永久密碼,然後再使用新密碼登入 macOS。
  • Mac 必須連上可正常運作的網際網路,才能在完成上述設定後首次登入時連上 ldap.google.com。如果您選擇設定行動帳戶,之後即使沒有網路連線也一樣可以登入。
  • Google 安全 LDAP 與 macOS 的整合作業已在 macOS Catalina、Big Sur 和 Monterey 上測試。

疑難排解

如果您無法連上安全 LDAP 服務,請按照下列操作說明進行。

步驟 1:確認連線。

使用 odutil 確認連線狀況。
在終端機中執行 odutil show nodenames 指令。
確認「/LDAPv3/ldap.google.com」狀態為「線上」。如果不是,請嘗試改用 telnet 選項。

使用 nc 確認連線狀況。
在終端機中執行下列指令:nc -zv ldap.google.com 636
如果無法透過這種方式連線至 Google,請嘗試使用 IPv4 連線。

使用 IPv4 確認連線狀況。
您可以將裝置變更為使用 IPv4,步驟如下:

  1. 依序前往 [系統偏好設定] > [網路] > [Wi-Fi] > [進階]。
  2. 在 [進階] 選單中點選 [TCP/IP] 分頁標籤。
  3. 將下拉式選單的選項從「設定 IPv6」變更為「僅限連結本機」。
  4. 按一下「確定」,然後按一下「套用」儲存變更。
  5. 透過 ldapsearch 連線執行有效搜尋,檢查服務驗證。

步驟 2:檢查是否能看到目錄物件。

  1. 開啟「目錄工具」,然後開啟「目錄編輯器」分頁。
  2. 在下拉式清單中選取「/LDAPv3/ldap.google.com」節點。
  3. 確認是否能透過您的 Google 網域查看使用者和群組。

Java 應用程式的設定操作說明

只要在應用程式的 Keystore 中安裝用戶端憑證,即可設定大部分提供 LDAP 功能的 Java 應用程式,以透過用戶端憑證進行驗證。不同應用程式的確切設定檔會有所不同,但流程大致相似。設定時必須安裝 OpenSSL 和 Java Runtime Environment。

  1. 將憑證和金鑰轉換為 Java KeyStore 格式。在整個過程中,系統會提示您輸入密碼。選取安全密碼,並在所有提示中都使用同一組密碼。假設您的用戶端金鑰檔案名為 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
    

    重要事項:這兩個檔案 (<CERT_FILE>.crt 和 <CERT_FILE>.key) 必須位於同一目錄。此外,請確認 key 和 crt 的名稱相同 (但副檔名不同)。在本範例中,我們使用 ldap-client.crt 和 ldap-client.key 這兩個名稱。

  2. 將憑證匯入 KeyStore:

    $  keytool -v -importkeystore -srckeystore java-application-ldap.pkcs12 -srcstoretype PKCS12 -destkeystore java-application-ldap.jks -deststoretype JKS
    
  3. 視應用程式而定,Java 屬性的設定方式可能有所不同。通常,您可以在用於啟動的「java」指令列上,使用 -D 選項設定這些屬性。針對應用程式設定 Java 屬性:

    javax.net.ssl.keyStore = /<path-to>/java-application-ldap.jks
    javax.net.ssl.keyStorePassword = <password selected above>
    
  4. 使用「基本設定說明」中的資訊,設定應用程式的 LDAP 連線設定。

選用:將 stunnel 做為 Proxy

如果用戶端無法使用用戶端憑證向 LDAP 驗證身分,請使用 stunnel 做為 Proxy。

設定 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. 編輯 /etc/default/stunnel4 並設定 ENABLED=1,即可啟用 stunnel。

  4. 重新啟動 stunnel。

    $  sudo /etc/init.d/stunnel4 restart
    
  5. 將應用程式設為指向 ldap://127.0.0.1:1636。

    如果您也變更上述設定檔中的 accept 行,可以將「1636」替換為任何未使用的連接埠。您必須使用明文 LDAP,且用戶端與 stunnel 之間不得啟用 STARTTLS/安全資料傳輸層:SSL/傳輸層安全標準:TLS,因為兩者是在本機通訊。

注意:如果選擇在獨立伺服器上執行 stunnel,請務必設定防火牆,確保只有必要的應用程式可以存取 stunnel 伺服器。您也可以設定 stunnel 透過 TLS 監聽,以便加密應用程式和 stunnel 伺服器之間的資料。這兩項設定的詳細資料取決於您的環境。

後續步驟

將 LDAP 用戶端連上安全 LDAP 服務後,您必須將 LDAP 用戶端的服務狀態切換為開啟。

如需後續步驟的相關資訊,請參閱 5. 將 LDAP 用戶端切換為「開啟」。

注意:如果在嘗試將 LDAP 用戶端連線至服務時發生錯誤,可以視需要使用 ldapsearch、ADSI 或 ldp.exe 等簡單工具排解問題。如需操作說明,請參閱「連線測試和疑難排解」。