之前通過短視頻向大家介紹了 Console 如何集成 LDAP,但很多小夥伴反映按照視頻裏的配置後不成功。今天就結合小夥伴們反映的問題來跟大家詳細介紹一下。
Console LDAP 完整的配置參數如下:
| 名稱 | 類型 | 説明 |
|---|---|---|
| host | string | LDAP 服務器地址 |
| port | int | LDAP 服務器端口,默認 389 |
| tls | bool | LDAP 服務器是否為 TLS 安全傳輸協議,默認 false |
| bind_dn | string | 執行 LDAP 查詢的用户信息 |
| bind_password | string | 執行 LDAP 查詢的密碼信息 |
| base_dn | string | 過濾 LDAP 用户的根域 |
| user_filter | string | 過濾 LDAP 用户的查詢條件,默認 (uid=%s) |
| uid_attribute | string | 用於用户 ID 的屬性,默認 uid |
| group_attribute | string | 用於用户組的屬性,默認 cn |
| role_mapping.uid | map | 用於基於用户 UID 的權限映射 |
| role_mapping.group | map | 用於基於用户 Group 的權限映射 |
接下來結合 debug 模式的調試信息(-deubg -log debug)重點説明一下:
LDAP Result Code 49 "Invalid Credentials": 80090308: LdapErr: DSID-0C0903D3, comment: AcceptSecurityContext error, data 52e, v3839
出現上面錯誤有兩種可能:1、執行 LDAP 查詢的賬户信息有誤;2、登陸使用的賬户信息有誤
第一種情況涉及配置中的 bind_dn 和 bind_password。
其中 bind_dn 有兩種寫法:1、cn=serviceuser,ou=svcaccts,dc=glauth,dc=com;2、serviceuser@glauth.com
(注:如果是使用 AD,最好使用第二種寫法。);如果 bind_dn 沒問題,請檢查賬户的密碼是否正確。
第二種情況請驗證賬户信息。
LDAP Result Code 201 "Filter Compile Error": ldap: finished compiling filter with extra at end
出現這個錯誤説明 user_filter 沒有配置正確。user_filter 需配置一個過濾條件,可在 LDAP 中匹配到唯一記錄(在過濾條件中使用“%s”引用登陸的賬户名)。
authorize result: false, user: &{{yanxi@guobaojinrong.com <nil> <nil>} ldap yanxi@guobaojinrong.com yanxi@guobaojinrong.com [] [] 0x4003721740}, err: no privilege assigned to this user:yanxi@guobaojinrong.com
出現這個錯誤説明賦權時出現異常,這裏涉及到四個參數(uid_attribute、group_attribute、role_mapping.uid、role_mapping.group)的配置。
這裏需要注意:group_attribute 及 uid_attribute 需配置 LDAP 賬户信息中存在的屬性字段,才能在後面的 role_mapping 裏賦權成功。
注:role_mapping.uid、role_mapping.group 配置的值中不能包含特殊字符“.”。