Nginx

在 RHEL 7 上向 nginx 添加 ldap 身份驗證

  • April 14, 2017

我使用來自 epel repo 的 yum 將 nginx 1.10.2 安裝到我的 RHEL 7 伺服器:

$ sudo yum install epel-release
$ sudo yum install nginx httpd-tools

現在我想添加 ldap 身份驗證。我從 github 搜尋中找到了這個: https ://github.com/kvspb/nginx-auth-ldap

但是,根據說明,它需要通過配置添加模組並在 nginx 源上執行命令,我相信我無權訪問。

這是否意味著我需要從原始碼重新安裝 nginx?還有其他方法嗎?

我最終從原始碼重新安裝了 NGINX,並在編譯時添加了 nginx-auth-ldap 模組。我在這裡找到了一個非常有用的方法:http ://www.ehowstuff.com/how-to-install-nginx-on-centos-7-rhel-7/我只是將 nginx-auth-ldap 模組添加到./configure 命令,它在編譯時被正確添加。我現在開始跑步了!:-)

從經驗中吸取了一些教訓:

  • 從https://github.com/kvspb/nginx-auth-ldap下載模組並在繼續之前閱讀自述文件和 wiki
  • 這似乎並不明顯,但您需要為模組創建一個 AD 使用者才能訪問 AD(我創建了一個名為“LDAPauth”的使用者,其權限最小,並將密碼設置為永不過期並且使用者不能更改(這是您將在 binddn 和 binddn_passwd 指令中使用的使用者帳戶)
  • 對我有用的 binddn 語法是“DOMAIN\LDAPAUTH”(注意雙反斜杠和全部大寫)$$ edit: the comment editor removed the double-backslash between DOMAIN and LDAPAUTH and replaces it with a single backslash for some reason $$
  • 我建議您在伺服器塊中為至少兩個域控制器創建 ldap_server 部分以實現冗餘。然後添加一個“auth_ldap_servers xxx;” 位置塊中每個 DC 的指令。
  • 確保針對“require”指令添加適當的“group_attribute”指令(即,如果您計劃對使用者進行身份驗證,請添加“group_attribute uniquemember”。要對組成員進行身份驗證,請添加“group_attribute member”)
  • 如果您遇到 DN 語法問題,請轉至 ADUC,打開您的 AD 使用者或組屬性,然後在“屬性編輯器”選項卡中,向下滾動到 distinctName。您可以從此處點兩下並複制粘貼正確的 DN。注意:請注意不要在此視窗中意外更改值…
  • 我發現我在 auth_ldap“輸入 AD 憑據”指令中指定的語句並不總是按預期顯示,具體取決於所使用的瀏覽器。在 Firefox 中,我收到“mysite 正在請求使用者名和密碼。該站點顯示:“輸入 AD 憑據””。在 Chrome 中,我得到“mysite 需要使用者名和密碼”。在 IE 中,我得到伺服器 mysite 正在詢問您的使用者名和密碼。伺服器報告它來自輸入 AD 憑據。”

在 1.9.11 版之前,所有 nginx 模組,包括 3rd 方模組,都必須靜態編譯到 nginx 中。與 Apache 不同,nginx 不支持動態載入模組。所以每次你想添加一個新模組時,你都必須重新編譯 nginx。

nginx 1.9.11 引入了該load_module指令,但並非所有模組都具有甚至可以轉換為動態模組。許多現有的文件仍然反映了這一點。

nginx-auth-ldapconfig看起來具有作為動態模組工作的正確語法,那麼更多的問題是 EPEL 的 nginx 包維護者是否提供提供 nginx-auth-ldap 的現成 RPM,以及它們是否提供你不需要自己編譯模組嗎?

nginx 來源,我相信我無權訪問。

順便說一句,您可以安裝 SRC rpm 包來訪問用於製作二進制 nginx RPM 的原始碼和 SPEC 文件

引用自:https://serverfault.com/questions/844205