簡體   English   中英

LADP - Apache 上的 Kerberos 設置與 Wordpress 單點登錄不起作用

[英]LADP - Kerberos Setup on Apache with Wordpress Single Sign-On not working

我們使用 Active Directory 進行了本地網絡設置。 我們開發了一個只能從本地網絡托管和訪問的網站。 如果用戶已經登錄到操作系統上的 Active Directory,我們希望用戶在訪問我們的 Wordpress 網站時立即自動登錄。

在僅跟蹤文檔時,我們仍然面臨着我們發現很難修復的問題,我們花了很多時間才能成功啟動這樣的設置。 一些錯誤是:

  • gss_acquire_cred() 失敗:未指定的 GSS 失敗。 未找到關鍵表條目
  • 無法驗證 krb5 憑據:密鑰版本不可用

答案將列出我們面臨的所有問題以及我們如何設法解決這些問題,以防某些人在設置時遇到相同的問題。

在 Active Directory 域控制器上創建 Keytab 文件

  • 這是我們自己沒有做的事情,而是將命令提供給 Active Directory 專家以執行以下命令。 此命令區分大小寫,因此非常重要的是,如果域是大寫的(如下例所示),它也會在活動目錄中使用大寫域執行。
  • 命令
    • ktpass -princ HTTP/intranet.domain.com@DOMAIN.COM -pass "{PASSWORD}" -mapuser username@DOMAIN.COM -Ptype KRB5_NT_PRINCIPAL -out website-auth.keytab
  • 從 ktpass 命令:
    • intranet.domain.com - 是我們的 wordpress 網站 url
    • DOMAIN.COM - 是活動目錄域
    • {PASSWORD} - 任何隨機密碼,例如 UjhmPz5UPwx2VhQir7
      • 請注意這非常重要:因為我們的密碼有問題。 創建 ktpass 后,請勿更改活動目錄中相關服務用戶帳戶的密碼。 每次通過活動目錄更改服務帳戶密碼時,活動目錄上的密鑰表版本也會更新,除非您也更新 apache 上的密鑰表文件,否則您將無法進行身份驗證。 因此,如果您將密碼更改為新密碼,然后恢復為舊密碼,您仍然會遇到身份驗證問題(即使密碼現在已恢復為原始值)。 更多信息在這里: https : //support.oneidentity.com/fr-fr/kb/33866/when-does-the-vno-in-host-keytab-change-
    • username@DOMAIN.COM - Active Directory 的服務帳戶
      • 帳戶密碼應將密碼設置為“未過期”。
      • 應該信任該帳戶進行委派。
    • website-auth.keytab - 生成的密鑰表的文件名。 我們將它存儲在/etc/httpd/kerberos-credentials/website-auth.keytab
  • 將 Keytab 文件從 AD 域控制器復制到托管在 Apache 上的 Web 服務器。

在 Web 服務器上安裝 Kerberos 客戶端庫:

  • sudo apt-get install krb5-user (Ubuntu)
  • yum 安裝 krb5-workstation krb5-libs krb5-auth-dialog (Centos)

在 Kerberos 配置文件中配置 Active Directory 域

  • 更新 /etc/krb5.conf
  • 我正在下面粘貼我們的配置文件模板。 更新 enctypes 參數對我們來說非常重要,因為默認配置文件不包含從活動目錄生成的密鑰表的 enctype,這會導致身份驗證問題。 在這個示例中,我包含了我從研究中找到的所有加密類型。
# Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
 default_realm = DOMAIN.COM
 default_tkt_enctypes = aes256-cts des3-cbc-sha1 arcfour-hmac des-cbc-crc aes256-cts-hmac-sha1-96 des-cbc-md5 arcfour-hmac-md5
 default_tgs_enctypes = aes256-cts des3-cbc-sha1 arcfour-hmac des-cbc-crc aes256-cts-hmac-sha1-96 des-cbc-md5 arcfour-hmac-md5
 permitted_enctypes = aes256-cts des3-cbc-sha1 arcfour-hmac des-cbc-crc aes256-cts-hmac-sha1-96 des-cbc-md5 arcfour-hmac-md5

[realms]
 DOMAIN.COM = {
   admin_server = DOMAIN.COM
   kdc = DOMAIN.COM
 }

[domain_realm]
 domain.com = DOMAIN.COM
 .domain.com = DOMAIN.COM

[login]
 krb4_convert = true
 krb4_get_tickets = true

為 Apache 安裝 auth_kerb 模塊

  • Ubuntu:
    • 須藤 apt-get 安裝 libapache2-mod-auth-kerb
    • a2enmod auth_kerb
    • 重啟apache
  • Centos:
    • yum 安裝 mod_auth_kerb
    • 重啟apache:systemctl restart apache2

為站點目錄配置 Kerberos SSO

  • Ubuntu:編輯 /etc/apache2/sites-enabled/000-default.conf 文件
  • Centos:編輯/etc/httpd/conf.d/文件夾下的auth_kerb.conf配置文件
  • 我們在 Centos 上工作,所以我沒有 Ubuntu 的確切配置,但它應該與 Centos 配置非常相似。 我們的配置文件的模板是:
  • 設置好配置文件后,需要再次重啟apache
LoadModule auth_kerb_module /usr/lib64/httpd/modules/mod_auth_kerb.so

<Directory "/var/www/html">
Order allow,deny
Allow from all

AuthType Kerberos
AuthName "username used in keytab"
KrbAuthRealms DOMAIN.COM
KrbServiceName HTTP/intranet.domain.com@DOMAIN.COM
Krb5Keytab /etc/httpd/kerberos-credentials/website-auth.keytab
KrbMethodNegotiate On
KrbMethodK5Passwd On
KrbVerifyKDC On
require valid-user
</Directory>

在 apache 上檢查 httpd_can_network_connect

  • 完成上述設置后,我們認為我們已准備就緒,但仍然無法從網站進行身份驗證。
  • 經過一些研究,我們注意到我們需要在 apache 服務器上啟用httpd_can_network_connect設置。 為此,請運行:
    • getsebool -a | grep httpd getsebool -a | grep httpd :它正在返回 httpd_can_network_connect --> off
    • setsebool -P httpd_can_network_connect on : 啟用設置
    • 重啟apache服務
    • LDAP獲取的信息適用於 PHP CLI,但不適用於 apache

將 wordpress 網站添加到 OS 上的本地內網

  • 為了將 Wordpress 與 kerberos 集成,我們使用了現成的高級插件,但不幸的是,並非一切都像我們想象的那樣順利。 通過上述設置,當我們嘗試訪問我們的 wordpress 網站時,瀏覽器會彈出一個默認的身份驗證對話框。 這不是預期的結果,因為我們希望用戶在登錄 Active Directory 時自動登錄。 這是因為我們正在測試的 Windows 機器沒有在本地 Intranet 配置中列出我們的 wordpress 網站。 將網站添加到本地 Intranet:
    • 進入控制面板
    • 轉到 Internet 選項
    • 單擊安全選項卡
    • 單擊本地 Intranet 圖標
    • 單擊站點
    • 點擊高級按鈕
    • 添加 Wordpres 站點 url

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM