Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:在web.xml中触发无安全约束的JAAS身份验证_Java_Rest_Authentication_Jboss_Jaas - Fatal编程技术网

Java:在web.xml中触发无安全约束的JAAS身份验证

Java:在web.xml中触发无安全约束的JAAS身份验证,java,rest,authentication,jboss,jaas,Java,Rest,Authentication,Jboss,Jaas,我在JavaEE中遇到有关身份验证的问题。让我介绍一下我正在使用的技术: -JBossAS 7.1 -JAAS数据库登录模块 -放松 我将尝试这样组织我的问题: 行为我知道它有效: 我在web.xml文件中指定“/index.html”作为受保护的资源,并在“jboss web.xml”文件中指定安全域。访问“index.html”会将用户重定向到“login.html”表单页面。此页面的提交表单使用“j_security_check”,容器正确执行身份验证。如果调用获取“request.get

我在JavaEE中遇到有关身份验证的问题。让我介绍一下我正在使用的技术:
-JBossAS 7.1
-JAAS数据库登录模块
-放松

我将尝试这样组织我的问题:

行为我知道它有效:
我在web.xml文件中指定“/index.html”作为受保护的资源,并在“jboss web.xml”文件中指定安全域。访问“index.html”会将用户重定向到“login.html”表单页面。此页面的提交表单使用“j_security_check”,容器正确执行身份验证。如果调用获取“request.getPrincipal()”的REST服务,则成功获取主体信息。此外,对另一个受保护资源的访问也会被验证,因为用户已登录。一切都好

我想要的行为(我尝试过,但缺少了一些东西):
我希望能够调用login.html并将操作提交给REST服务中的登录方法。这个rest服务将调用login方法(现在我正在使用request.login(用户名、密码))并执行登录过程。在对不同REST服务的后续调用中,req.getPrincipal()将获取已登录用户的凭据

所需行为的问题:
在我调用REST服务中的login方法后,login工作正常,但下次我尝试从请求或SecurityContext类中获取主体信息时,它为null。如果我试图访问受保护的资源(例如,另一个html)容器,则无法识别该用户已登录。
看起来在没有事先请求任何受保护资源的情况下“手动”登录不会触发容器中的身份验证机制,因为在我执行此“手动登录”之后,下次调用request.getPrincipal()时完全为空,我无法从我的业务服务获取请求个性化信息的主要信息

我为什么要这样做:
实现此行为的目的是我不想依赖整个html页面的身份验证,而是在另一个调用容器中身份验证机制的页面中盗用一个小的登录表单。但是,如果有人试图访问应用程序中受保护的资源,我希望将操作重定向到登录表单页面

您可能回复的所有内容都将非常有帮助,请提前感谢

迭戈