活動目錄環境下Apache單點登錄(SSO)的實現

1、實驗環境
         公司部署有微軟的活動目錄,假設域名爲wyd.com,一臺Web服務器,運行在Red hat  Enterpise Linux 5.5上,該網站原本只在內網訪問,現由於業務的發展,需要發佈到互聯網上,以便銷售人員和維護人員通過互聯網隨時能訪問到,但由於該網站的內容涉及商業數據,不能讓非公司人員隨意訪問到。
2、實驗目的
        爲了保證數據的安全,需要在Apache上做身份驗證,如果用傳統的Apache的認證機制的話就會給用戶帶來麻煩,因爲用戶要輸入額外的用戶名和密碼來登錄網站。最理想的方式就是在公司內網裏用戶不用輸入用戶名和密碼,可以直接登錄;從互聯網訪問時,則需要輸入用戶名和密碼,而這個賬戶密碼就是登錄公司域的賬戶名和密碼
3、實現原理
        用戶登錄活動目錄時使用的是Kerberos協議,因此Apache的驗證方式就使用Kerberos協議,用戶登錄活動目錄後會獲得一個Kerberos票據,這個Kerberos票據就可以用來登錄Apache,如果用戶不在公司內網裏,在登錄Apache時只需要輸入活動目錄的用戶名和密碼即可。
4、實現步驟
        a. 安裝Apache,PHP,mod_auth_kerb
             PHP環境根據需要安裝,mod_auth_kerb就是Apache的Kerberos認證模塊,配置好YUM倉庫後可以使用yum工具來安裝,也可以直接使用rpm命令:
           [root@test ~]#yum    install    httpd    php*   mod_auth_kerb   -y
        b.配置Kerberos
            使用vim編輯/etc/krb5.conf文件,該文件是參照example.com域來配置的,把example.com全部替換成自己的域名即可,注意Kerberos是區分大小寫的,需要修改的內容如下:
            
[libdefaults]
                   default_realm = WYD.COM
             [realms]
             WYD.COM = {
                    kdc = dc1.wyd.com:88
                   default_domain = wyd.com
             }
             [domain_realm]
                    test.wyd.com = WYD.COM
                    wyd.com = WYD.COM

       其中,test.wyd.com是Apache服務器的FQDN名,kdc的值要設置成域中的DC。
             設置好Kerberos後,可以驗證一下配置是否正確,使用kinit命令,參數爲AD中的一個賬戶
             [root@test ~]#kinit   [email protected]
       注意大小寫,該命令會提示你輸入密碼,命令成功執行後不會有任何提示,可以使用klist命令查看獲得的Kerberos票據
        c.爲test.wyd.com主機創建HTTP服務憑據
            首先需要在AD中創建一個用來映射HTTP service的賬戶,此例中爲apache。其次登錄到DC中,使用命令行工具ktpass將apache賬戶映射到HTTP/[email protected],並把憑據導出到一個keytab文件。(ktpass命令在support tools中,需要安裝),命令如下:
            C:\>ktpass  -princ HTTP/[email protected]   -mapuser apache   -crypto rc4-hmac-nt   -ptype KRB5_NT_SRV_HST  -pass  wyd   -out c:\apache.keytab
           命令成功執行後,將c:\apache.keytab文件拷貝到WEB服務器,確保apache進程對該文件有讀權限。
         d.配置httpd.conf使用mod_auth_kerb模塊進行身份驗證
                     alias /test     /www/myweb
                    <Location /test>
                         AuthType Kerberos
                         AuthName "Kerberos Login"
                         KrbMethodNegotiate On
                         KrbMethodK5Passwd Off
                         KrbAuthRealms WYD.COM
                         Krb5KeyTab /etc/httpd/apache.keytab
                         KrbServiceName HTTP
                         require valid-user
                    </Location>
          e.配置IE瀏覽器
         IE瀏覽器默認已經支持“集成windows身份驗證”,只需要把該網站加入到“本地Intranet”區域即可。注意訪問時不能使用ip地址,必須使用前面ktpass命令中使用的FQDN名,此例爲test.wyd.com
5、測試
        到此,實驗完成,域內用戶訪問不需要輸入密碼,不在域內或未登錄域訪問只需輸入域賬號密碼即可。可以使用下面這段PHP代碼測試:
      <?php
           echo "You have log in as ".$_SERVER['REMOTE_USER'];
       ?>

參考文檔:http://www.grolmsnet.de/kerbtut/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章