由於我使用Tomcat6作爲servlet容器運行Java,因此我發現適合使用Tomcat JNDIRealm feature,以便LDAP用戶無需任何額外的努力即可登錄到我的站點。我使用的LDAP服務器是OpenLDAP on Ubuntu。Java Tomcat LDAP身份驗證
在此我有登錄頁面使用form-based authentication超過https connection。
我通過LDAP發現了兩個非常好的身份驗證用戶示例,here和here,這兩個示例都實現了我幾乎達到的感覺。爲什麼幾乎可以實現?
當我嘗試使用錯誤的憑據登錄時,我適當地發送到<form-error-page>
,login-failed.html
在我的情況。
當我的憑據很好,我驗證成功後,我開始爲網站中的所有網址獲得403。除非我重新啓動Tomcat,否則我無法刪除403錯誤(即使登錄頁面也沒有!)。
我懷疑是因爲我沒有roles
在領域或其他配置文件中設置正確。爲了簡便起見,我把相關的配置文件摘錄於pastebin:
- Realm in Tomcat
server.xml
- Relevant
tomcat-users.xml
part - Relevant
web.xml
part - Basic LDAP structure,破折號表示樹形結構
需要注意的是,基於Tomcat由於該角色很容易附加到tomcat-users.xml
中的用戶身上,因此auth可以很好地工作。因此,我認爲在成功通過身份驗證後,從LDAP獲取已通過身份驗證的用戶的角色時存在問題。
TL/DR
我在Tomcat的連接到LDAP身份驗證一個配置問題。用戶數據正確提取,但不是用戶的角色。可根據請求提供LDAP日誌消息;)
更新:我粘貼了LDAP數據here。
你有一個羣組cn = site-users,ou = groups,dc = mydomain,dc = com以及該羣組中的用戶嗎? – MaVRoSCy
也請提供一些關於您的ldap結構的更多信息 – MaVRoSCy
@MaVRoSCy基本的LDAP結構[here](http://pastebin.com/rQqxqtsm)。因此,我有'cn = site-users,ou = groups,dc = mydomain,dc = com'。請注意,'site-users'有一些指向用戶的'member'屬性。 –