我已经实现了一个LoginModule来执行一些自定义身份验证,并使用LoginContext类的login()方法调用身份验证。登录模块的login()和commit()方法被成功调用,但不是能够使用Web应用程序,而是立即将其发送回登录页面。 request.getUserPrincipal()为null,以及request.getRemoteUser()。
任何想法都将不胜感激。谢谢!
附加信息
此外,在我在前端调用loginContext.login()
之后,调用loginContext.getSubject().getPrincipals()
为我提供了刚刚登录的用户的正确的主体和角色列表。
我正在使用Tomcat 6.0.29作为我的服务器。
答案 0 :(得分:1)
在黑暗中拍摄
您是否尝试过像这样的政策文件中的权限
grant codeBase "file:/myCustomModule.jar" {
permission javax.security.auth.AuthPermission "modifyPrincipals";
permission javax.security.auth.AuthPermission "modifyPublicCredentials";
permission javax.security.auth.AuthPermission "modifyPrivateCredentials";
};
答案 1 :(得分:0)
我试图在Tomcat中进行编程登录,即使登录模块正在运行,容器也没有接收到身份验证。我的解决方案是使用带有" j_security_check"的HTML表单进行身份验证。这是它的行动。