2010-09-27 58 views
0

我實現了一個LoginModule來執行一些自定義驗證,並使用LoginContext類的login()方法調用驗證。登錄模塊的login()和commit()方法被成功調用,但不能夠使用web應用程序,而是立即將其發送回登錄頁面。 request.getUserPrincipal()爲null,以及request.getRemoteUser()。JAAS LoginModule login()和commit()成功,但用戶未登錄

任何想法將不勝感激。謝謝!

附加信息

而且,之後我打電話loginContext.login()在前端,呼籲loginContext.getSubject().getPrincipals()給我,只是記錄在校長和角色對用戶的正確列表。

我使用Tomcat 6.0.29作爲我的服務器。

回答

0

我試圖做編程登錄在Tomcat中,即使登錄模塊正在運行,容器沒有收到認證。我的解決方案是使用帶有「j_security_check」的HTML表單進行身份驗證,因爲它是動作。

1

烏姆在黑暗

一個鏡頭你試圖給權限的政策文件,像這樣

grant codeBase "file:/myCustomModule.jar" { 
    permission javax.security.auth.AuthPermission "modifyPrincipals"; 
    permission javax.security.auth.AuthPermission "modifyPublicCredentials"; 
    permission javax.security.auth.AuthPermission "modifyPrivateCredentials"; 
}; 
+0

我猜測如果我有某種JAR的話就會使用策略文件。我正在驗證運行在Tomcat上的網站;我需要一個策略文件嗎? – 2010-09-28 15:50:02

+0

@Jon:不是在jar中的loginmodule? – JoseK 2010-09-28 16:55:44

+0

是的。 JAR打包在我的Web應用程序的WEB-INF/lib文件夾中。這是一個奇怪的問題,因爲登錄似乎成功了,而commit()被調用。 – 2010-09-28 17:00:41