如何確定 LDAP 綁定到 Windows Server 2012 DC 的值?GitlabOmnibus7.0.0;ld一種pb我__:我nvalidC讀__entials(49)G一世噸l一種b這米n一世b在s7.0.0;ld一種pb一…
**編輯:**這個問題得到了很多意見,我從來沒有真正回來並提供了一個精確的、逐步的解決方案。所以我在 18 個月後回來並做到了。該解決方案適用於簡單綁定,最初的問題是在嘗試讓 Gitlab Omnibus 安裝綁定到 LDAP 伺服器的上下文中提出的,但它應該適用於任何簡單的 LDAP 綁定。有關我為生成解決方案所做的確切步驟,請參閱我接受的答案。以下是我的 Gitlab 版本詳細資訊(適用於對 Gitlab 有此問題的人):
- 亞搏體育app 7.0.0
- 亞搏體育app外殼1.9.6
- GitLab API v3
- 紅寶石 2.1.1p76
- 導軌 4.1.1
原始文章: 我已經嘗試了將近 6 個小時來讓我的 Gitlab 部署通過 Windows Server 2012 Essentials Active Directory LDAP 進行身份驗證。
我正在為我的 Gitlab 伺服器執行 Ubuntu 14.04。它已經通過 SSSD 連接到域控制器。
Gitlab 本身使用 gitlab.rd 配置文件中的 LDAP 設置,如下所示:
# These settings are documented in more detail at # https://gitlab.com/gitlab-org/gitlab-ce/blob/master/config/gitlab.yml.example#L118 gitlab_rails['ldap_enabled'] = true gitlab_rails['ldap_host'] = 'hostname of LDAP server' gitlab_rails['ldap_port'] = 389 gitlab_rails['ldap_uid'] = 'sAMAccountName' gitlab_rails['ldap_method'] = 'plain' # 'ssl' or 'plain' gitlab_rails['ldap_bind_dn'] = 'CN=query user,CN=Users,DC=mycorp,DC=com' gitlab_rails['ldap_password'] = 'query user password' gitlab_rails['ldap_allow_username_or_email_login'] = true gitlab_rails['ldap_base'] = 'DC=mycorp,DC=com'
我可以查詢伺服器,但無論我選擇什麼設置,我總是會收到相同的消息:
"Invalid Credentials"
我嘗試使用 ldapsearch 和相同的錯誤消息手動查詢 DC:
"ldap_bind: invalid credentials (49)
我已經在 Windows Server 2012 伺服器管理器的 Active Directory 使用者部分創建了我用來綁定的使用者。
我已經嘗試了 OU=Users 和 CN=Users 和其他使用者的每一個組合,確保 AD 中所有使用者的所有電子郵件地址欄位都已填充,但我無法得到一個正確的響應。
是否有一種簡單的方法可以返回 Active Directory 對象的所有 Bind_dn 和 Base 資訊?這變得非常令人沮喪。
無論我在網際網路上的哪個位置查看,所有資訊都與舊版本的 Windows(ldapsearch 等)有關。我對系統方面的東西很陌生(這是我的第一份暑期實習工作)。
這是我正在使用的目前設置的範例:
gitlab_rails['ldap_bind_dn'] = 'CN=Gitlab LDAP,OU=Users,DC=servername,DC=local' gitlab_rails['ldap_base'] = 'OU=Users,DC=servername,DC=local'
以及我一直在嘗試使用 ldapsearch 為我的 Windows AD DS 找到正確綁定設置的相應範例:
ldapsearch -b "ou=Users,dc=servername,dc=local" -h 192.168.0.3 -p 389 -D "uid=Gitlab LDAP,ou=Users,dc=servername,dc=local" -w "<password>"
無濟於事。我已經嘗試了幾十種組合。使用者“gitlab”在 Windows Server 中的顯示名稱為“Gitlab LDAP”,帶有電子郵件,全部小寫。底線:是否有一些簡單的方法可以點擊 Windows DC 中的對象並檢索正確的 LDAP 設置以使用該使用者對象進行 ldap 綁定?!如果我容易情緒爆發,這就是我會做的地方。
總是相同的錯誤消息:“無效的憑據”
感謝您的時間和考慮,任何和所有的幫助將不勝感激。
注意:鱷魚 (<>) 大括號將從值中刪除,並且僅用於指示通用值。
我認為我並沒有真正改變任何東西,但我確實在Account選項卡下進行了設置,以便User cannot change password並且Password never expires。注意我從使用者電子郵件的域末尾編輯了 URL。對於這些說明的其餘部分,我將使用
<Domain>.<local>
,但此 URL 可以是與您的 DC 的實際 FQDN 相對應的任何內容(例如 microsoft.com)。 2. 在 DC 本身(最好)或網路連接和授權的機器上,以提升的權限執行LDP.exe 。在Connection下,在埠 389(或將其轉發到的任何埠,389 是預設 LDAP 埠)輸入 DC 或 localhost(取決於您從哪裡連接)的 FQDN。連接後,您應該會看到許多行,但第一行將是:
configurationNamingContext: CN=Configuration,DC=<Domain>,DC=<local>
記下這些值(DC 值對應於您的 FQDN,稍後將在 LDAP 搜尋中使用)。 3. 連接後,我們將與該使用者執行簡單綁定。點擊連接選項卡並選擇綁定選項。像這樣填寫選項(使用您在第一步中創建的使用者資訊):
如果成功,您應該會收到一條消息
Authenticated as: <Domain>\<username>
4. 使用 ldp.exe 成功綁定到 DC 後,在“瀏覽”選項卡下點擊“*搜尋”*選項:在 Base DN 欄位中,您將複製連接到伺服器時記錄的確切 DC URL 值。因此,如果顯示連接,
CN=Configuration,DC=microsoft,DC=com;
那麼您將dc=microsoft,dc=com
輸入 Base DN 欄位。我使用的過濾器只是對我之前創建的使用者名的萬用字元搜尋。在屬性欄位中,我使用了以下值:
objectClass;name;description;canonicalName;lDAPDisplayName
5. 點擊執行以執行搜尋。產生以下輸出:標記為 RED 的這一行是我用來在我的 gitlab.rb 配置中綁定的值(請注意,此文件已更改/編輯以反映此處的範例)。當我登錄 Gitlab 時,這非常有效:
這些是我採取的步驟。我很確定那些擁有更多管理能力的人可能會修改這種方法以找出他們想要的任何東西。(特別感謝Nitz為我指明了正確的方向)。
最後:根據您使用的 Windows 版本,您的客戶端可能會使用 SAMAccountName 或 UserPrincipleName 屬性,正如Ryan Bolger在 Nitz 的另一個答案的評論中提到的那樣。可以在此處找到有關此屬性的更多資訊。
我知道這不是一個完整的答案,但由於聲譽,我無法發表評論。
需要考慮的幾點:
- 從 DC 本身,啟動
ldp.exe
. 它是一個實際的 LDAP 客戶端,因此如果您設法將其配置為正常工作,那麼相同的參數很可能適用於 Gitlab。請參閱此以獲得基本
ldp
指導,並確保您閱讀了 LDP 的輸出。它可能會顯示您的配置所需的更多資訊。
- 在 LDAP 訪問方面,Windows Server 的版本並不重要——可能只在與加密相關的問題上。
ldap_uid
可能期望表單DOMAIN\UserName
或CN=UserCN,DN=Location,DC=Bla
(DistinguishedName)。- 考慮檢查您嘗試連接的 DC 的 Windows 事件日誌。它可能包含有關連接失敗原因的一些資訊。在“安全”日誌中嘗試“審核失敗”
發回更多資訊,也許我可以提供幫助!