﻿# CollabNet Subversion Edge 安裝筆記 (2)：整合 AD 網域篇

延續前天的【[CollabNet Subversion Edge 安裝筆記 (1)：基本安裝設定篇](/post/2011/12/30/CollabNet-Subversion-Edge-Installation-Notes-Part-1-Basic.aspx)】文章，此篇主要來講解如何正確設定 [CollabNet Subversion Edge](https://subversion.apache.org/) 與 Active Directory 網域整合 (或其他 LDAP 目錄服務)。雖然在 [CollabNet Subversion Edge](https://subversion.apache.org/) 裡只有一頁的 LDAP 設定，但若遇到對 LDAP 不是非常熟悉的人來說，要設定好這頁還真不太容易，所以本篇文章也會提到一些如何找出相關資訊的技巧。

我們先來看看以下 LDAP 認證的設定畫面，要啟用 LDAP 認證必須先勾選 **用 LDAP 服务器进行 LDAP 认证**，然後才會出現 LDAP 的設定表單，不過這些欄位真的很難懂，讓我來逐一解釋吧：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/e8232501770c21f07ee0-image_1310.png)

**LDAP 安全级别 ( LDAP Security Level )**

-   選擇 NONE 即可

**LDAP 服务器主机 ( LDAP Server Host )**

-   請輸入 **網域主控站** (Domain Controller) 的 FQDN 地址或 DC 的 FQDN 位址。
-   設定範例：**miniasp.local** 或 **dc1.miniasp.local**

**LDAP 服务器端口 ( LDAP Server Port )**

-   使用預設的 **389** 是沒問題的，不過你也可以考慮切換到 **3268** ( Global Catalog )

**LDAP 基础 DN ( LDAP Base DN )**

-   所謂的 **DN** 代表的是 **[Distinguished Name](http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol)** (**專有名稱**)，用來代表一個 LDAP 物件的名稱 / 路徑
-   一個範例的 DN 為："CN=Administrator,CN=Users,DC=miniasp,DC=local"
-   **Base DN** 代表的是搜尋 LDAP 物件的基底位址，例如："CN=Users,DC=miniasp,DC=local"
-   如果你填寫的 **LDAP Base DN** 是 "CN=Users,DC=miniasp,DC=local" 的話，代表的是當使用者輸入帳號、密碼認證時，會從 "CN=Users,DC=miniasp,DC=local" 往下開始搜尋。
-   然而對管理者來說，最難的就是如何找出 DN 了，因為大多數的人並不瞭解 DN 為何物，所以也不知道怎樣才能查出 DN，這裡我以 Active Directory 為例，只要在網域主控站的電腦輸入以下指令，即可快速查出某個使用者的 DN，相對的你也可以取出部分的 DN 位址當成 Base DN 來用：
    
    ```
    dsquery user -samid "administrator"
    ```
    
-   透過上述指令執行後，會直接查出帳號 administrator 的 DN 位址，如下範例：  
    "CN=Administrator,CN=Users,DC=miniasp,DC=local"

**LDAP 绑定 DN ( LDAP Bind DN )** 

-   由於 [CollabNet Subversion Edge](https://subversion.apache.org/) 要與 AD/LDAP 做整合，所以當在執行使用者身份認證時，必然需要進 LDAP 中取得這些 LDAP 物件的資料，如此一來才能幫使用者驗證帳號、密碼是否正確。
-   這裡的 LDAP Bind DN 講的就是「在 AD 裡任何一位使用者的 DN 位址」，隨便選一位或特別建立一位即可，且無須加入到任何管理者群組之中，只要一般使用者即可。
-   取得特定帳號的 DN 可參考上述 dsquery 指令的用法範例。

**LDAP 绑定密码 ( LDAP Bind Password )**

-   這裡輸入的必須是 **LDAP 绑定 DN ( LDAP Bind DN )** 這個帳號的「**密碼**」

**LDAP 登录属性 ( LDAP login Attribute )**

-   請輸入 sAMAccountName
-   這裡代表的是，當 [CollabNet Subversion Edge](https://subversion.apache.org/) 透過 LDAP Bind DN 與 LDAP Bind Password 連接 LDAP 之後，當在比對 LDAP 物件時，會以「什麼屬性」當成「帳號」的比對依據。  
    而 sAMAccountName 所代表的正是「使用者帳號」。
-   如果此欄位不輸入的話，預設會去比對 LDAP 物件中的 uid 屬性。

**LDAP 搜索范围 ( LDAP Search Scope )**

-   這裡有兩個選項，分別為 sub 與 one，一般我們會選用預設的 sub 代表做帳號比對時會搜尋 Base DN 下所有的樹狀的子系 OU 節點。

**LDAP 筛选 ( LDAP Filter )**

-   通常會直接保留空白
-   如果你不希望所有 AD 的使用者都能登入到 [CollabNet Subversion Edge](https://subversion.apache.org/)，那麼你還是可以設定 [LDAP Filter](http://msdn.microsoft.com/en-us/library/windows/desktop/aa746475\(v=vs.85\).aspx) 過濾掉哪些不想讓他們登入的 [LDAP Filter](http://msdn.microsoft.com/en-us/library/windows/desktop/aa746475\(v=vs.85\).aspx) 條件。

**LDAP 服务器证书验证 ( LDAP Server Certificate Verification )**

-   **验证 LDAP 服务器证书。**

-   若你使用 SSL/TLS 憑證的方式跟 LDAP 連接，如果勾選這個選項會讓你的 [CollabNet Subversion Edge](https://subversion.apache.org/) 在連接前會先去驗證 **LDAP 伺服器**上的憑證是否有效。

-   **Allow LDAP users to access the management console**

-   透過 LDAP 驗證成功登入的使用者是否能使用這個主控台介面

**Console LDAP Authentication Helper Port:**

-   不需要變更此 Port 的內容，保留預設值即可。

如果你能依照上述說明逐步設定，相信你一次就能把整合 AD 認證的設定給完成！

**其他注意事項**

-   AD 使用者在登入時，請直接輸入「帳號」就好，不要輸入 [user@miniasp.local](mailto:user@miniasp.local) 或 miniasp\\user 等格式。
-   可以認證通過不一定代表有 SVN 的存取權限，你可以查閱[前篇文章](/post/2011/12/30/CollabNet-Subversion-Edge-Installation-Notes-Part-1-Basic.aspx)的 **設定存取權限** 部分看如何設定權限，否則你就必須撰寫較為複雜的 [LDAP Filter](http://msdn.microsoft.com/en-us/library/windows/desktop/aa746475\(v=vs.85\).aspx) 或設定適當的 Base DN 來篩選過濾掉哪些不允許登入 [CollabNet Subversion Edge](https://subversion.apache.org/) 的使用者。
-   查詢 DN 的方式除了用 [dsquery](http://technet.microsoft.com/en-us/library/cc732952\(WS.10\).aspx) 查詢外，也可以使用 [ADSI Edit](http://technet.microsoft.com/en-us/library/cc773354\(WS.10\).aspx) 工具來查詢，此工具已經內建於 Windows Server 2008 之中 (必須先安裝 ADDS 角色)，只要若要在 Windows Server 2003 以前的版本必須先安裝 [Windows Server 2003 Service Pack 2 32-bit Support Tools](http://web.archive.org/web/20120101081701/http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=15326) 才能在 C:\\Program Files\\Support Tools 目錄下找到 **adsiedit.msc** 這個工具！

**§ 以下是一段設定範例的圖示，僅供參考：**

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ce4c9ff6e6876922b9cd-image_1311.png) 

**相關連結**

-   [LDAP Authentication between COLLABNET Subversion Edge and Active Directory](https://web.archive.org/web/20130410130623/http://www.dscentral.in:80/2011/08/17/ldap-authentication-between-collabnet-subversion-edge-and-active-directory-3/)
-   Understanding Collabnet’s LDAP binding
-   [CollabNet SVN Server or VisualSVN?](http://stackoverflow.com/questions/2352691/collabnet-svn-server-or-visualsvn)
-   [ADSI Edit (adsiedit.msc)](http://technet.microsoft.com/en-us/library/cc773354\(WS.10\).aspx)

-   [Download: Windows Server 2003 Service Pack 2 32-bit Support Tools](http://web.archive.org/web/20120101081701/http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=15326)
-   Windows Server 2008 以上只要安裝 AD DS 角色預設就會有 ADSI Edit 工具

-   [Dsquery](http://technet.microsoft.com/en-us/library/cc732952\(WS.10\).aspx) ( TechNet )

-   [Dsquery user](http://technet.microsoft.com/en-us/library/cc725702\(WS.10\).aspx)

-   [Lightweight Directory Access Protocol - Wikipedia, the free encyclopedia](http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol)
