疑難排解 LDAP 配置

使用 ldapsearch 指令行工具來對 LDAP (輕量型目錄存取通訊協定) 配置進行疑難排解。

安裝 ldapsearch

安裝 ldapsearch 程式。

在 Ubuntu 上,執行下列指令:

sudo apt-get install ldap-utils

在 Red Hat® Enterprise Linux® (RHEL) 上,執行下列指令:

sudo yum install openldap-clients

測試 LDAP 連線

若要測試 LDAP 連線,請執行下列指令:

ldapsearch -x -H "<LDAP_URL>" -b "<LDAP_BASEDN>" -D "<LDAP_BINDDN>" -w "<LDAP_BINDPASSWORD>" -s sub

以下是參數說明:

範例指令

ldapsearch -x -H "ldap://<hostname or IP address>:389" -b "o=abc.com" -s sub
ldapsearch -x -H "ldap://<hostname or IP address>:389" -b "dc=abc,dc=com" -D "cn=admin,dc=abc,dc=com" -w "password" -s sub

驗證 LDAP 過濾器

根據 LDAP 過濾器建立搜尋字串,以從 LDAP 伺服器擷取資料。 如果搜尋結果顯示一或多個 LDAP 項目,則 LDAP 過濾器配置是正確的。 如果搜尋結果未顯示任何項目,則 LDAP 過濾器不正確或與 LDAP 伺服器類型不相容。

ldapsearch -x -H "<LDAP_URL>" -b "<LDAP_BASEDN>" -D "<LDAP_BINDDN>" -w "<LDAP_BINDPASSWORD>" -s sub "<Search string>"

以下是參數說明:

IBM Tivoli Directory Server LDAP 過濾器

屬性名稱 預設值
群組過濾器 (&(cn=%v)(objectclass=groupOfUniqueNames))
群組 ID 對映 *:cn
群組成員 ID 對映 groupOfUniqueNames:uniqueMember
使用者過濾器 (&(emailAddress=%v)(objectclass=person))
使用者 ID 對映 *:emailAddress

Microsoft Active Directory LDAP 過濾器

屬性名稱 預設值
群組過濾器 (&(cn=%v)(objectcategory=group))
群組 ID 對映 *:cn
群組成員 ID 對映 memberOf:member
使用者過濾器 (&(sAMAccountName=%v)(objectcategory=user))
使用者 ID 對映 user:sAMAccountName

自訂 (OpenLDAP) 伺服器 LDAP 過濾器

屬性名稱 預設值
群組過濾器 (&(cn=%v)(objectclass=groupOfUniqueNames))
群組 ID 對映 *:cn
群組成員 ID 對映 groupOfUniqueNames:uniqueMember
使用者過濾器 (&(uid=%v)(objectclass=Person))
使用者 ID 對映 *:uid

解決一般登入問題

在配置 LDAP 連線之後,無法以 LDAP 使用者身分登入

即使連線測試和 LDAP 配置成功,您也可能無法以 LDAP 使用者身分登入。

您會看到指出 invalid username or password的錯誤。

您可能會在 auth-idp Pod 之 platform-auth-service 儲存器的日誌檔中看到下列錯誤:

CWIML4537E: The login operation could not be completed. The specified principal name XXXXXX is not found in the back-end repository.

如果要識別錯誤,請啟用追蹤,讓 Liberty 服務知道「首次失敗資料擷取 (FFDC)」日誌中的確切錯誤。 如需相關資訊,請參閱 啟用使用者鑑別問題的除錯

以下是可能的原因。 會針對每一個原因提供解決方案。

原因 1-登入時使用無效的 username

使用者名稱值與 userIdMap 過濾器屬性值不同。

原因 1 的解決方案

請確定您輸入正確的使用者名稱。 使用者名稱必須與 userIdMap 過濾器屬性值相同。 使用者名稱區分大小寫。

請考量下列範例:

LDAP 伺服器上的 LDAP 使用者詳細資料:

dn: uid=testuser,ou=people,dc=abc,dc=com
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
cn: TestUser
givenName: TestUser
sn: SN
uid: testuser
userPassword: testuser
mail: testuser@abc.com

LDAP 配置:

User filter: (&(uid=%v)(objectclass=person))
User ID map: *:uid

如果您使用 *:uid 作為 userIdMap 過濾器,則在登入時必須使用 uidtestuser 作為使用者名稱。

原因 2-LDAP 登入使用者或 連結 DN 使用者已在 LDAP 伺服器中停用或鎖定
原因 2 的解決方案
原因 3-用來登入的 密碼 值無效
原因 3 的解決方案
原因 4-在高可用性 (HA) 叢集中的所有 Pod 之間, LDAP 配置可能未同步

登入要求可能要前往 HA 叢集中沒有 LDAP 配置的 Pod。

原因 4 的解決方案

重新啟動 auth-idp Pod。

原因 5-LDAP 連線因各種原因而發生問題
原因 5 的解決方案
原因 6- auth-idp Pod 的 platform-auth-service 儲存器中 MongoDB 連線失敗

您可能會在 auth-idp Pod 之 platform-auth-service 儲存器的日誌中看到 MongoDB 連線失敗錯誤。

原因 6 的解決方案

檢查所有 icp-mongodb-x** Pod 的狀態,如果狀態不是 Running,請重新啟動 Pod。 然後,重新啟動所有 auth-idp Pod。

解決搜尋使用者或群組的常見問題

建立團隊時無法搜尋使用者或群組。

原因

您使用了無效的搜尋字串。

解決方法

您必須使用 cn 屬性的值,或您在 LDAP 配置中使用的使用者或群組屬性 (例如 uidemailaddress )。

請考量下列範例:

LDAP 伺服器上的 LDAP 使用者詳細資料
  dn: uid=testuser,ou=people,dc=abc,dc=com
  objectClass: inetOrgPerson
  objectClass: organizationalPerson
  objectClass: person
  objectClass: top
  cn: TestUser
  givenName: TestUser
  sn: SN
  uid: testuser
  userPassword: testuser
  mail: testuser@abc.com

LDAP 配置中使用下列過濾器:

使用的 userIdMap*:uid

您可以用來搜尋使用者的有效值如下: