Tommy 碎碎念

Tommy Wu's blog

« 上一篇 | 下一篇 »

Apache 使用 AD 帳號密碼認證的處理
post by tommy @ 22 三月, 2017 10:42

Apache 本身有 mod_authnz_ldap 這個模組可以支援 ldap 的認證. 使用上並不困難, 使用下列的設定就可以:

<Location />
AuthName "Enter AD's Username/Password"
AuthType Basic
AuthBasicProvider ldap
AuthLDAPBindDN "CN=xxx,CN=Users,DC=xxx,DC=xxx,DC=xxx,DC=xx"
AuthLDAPBindPassword "password"
AuthLDAPURL "ldap://adserver:3268/DC=xxx,DC=xxx,DC=xxx,DC=xx?sAMAccountName?sub?(objectClass=*)"
AuthLDAPGroupAttributeIsDN on
require ldap-group CN=DEPT_xxx,DC=xxx,DC=xxx,DC=xxx,DC=xx
require ldap-user xxx
ErrorDocument 401 "Please use AD's username and password to login."
</Location>

是先透過一個帳號去 bind, 然後檢查帳號密碼是否正確, 再去判斷是否在允許的帳號或群組內.

我們用上面的設定跑了一陣子, 最近因為群組的設定有些變動, 會有 nested group 的情形, 就是群組內有另一個群組, 並不是直接是使用者. 這時發現上面的設定就不能正常運作了.

依據 AuthLDAPMaxSubGroupDepth 的預設值, 應該會檢查 10 層內的群組成員才對, 不過... 實際上就是不能用.

試了一陣子, 發現在 AuthLDAPSubGroupClass 的預設值只有 groupOfNames groupOfUniqueNames 這兩個, 而在 Windows AD 裡頭, 群組的 objectClass 屬性是 top; group, 所以 apache 在查詢時, 並不知道那是一個群組.

AuthLDAPSubGroupClass group

加上這個設定後, 重啟 apache 就可以正常的驗證到子群組的成員了.

Del.icio.us Furl HEMiDEMi Technorati MyShare
迴響
暱稱:
標題:
個人網頁:
電子郵件:
authimage

迴響

  

Bad Behavior 已經阻擋了 44 個過去 7 天試圖闖關的垃圾迴響與引用。
Power by LifeType. Template design by JamesHuang. Valid XHTML and CSS