Java和Jboss7:j_security_check自定义实现

Java和Jboss7:j_security_check自定义实现,java,security,jboss7.x,jaas,Java,Security,Jboss7.x,Jaas,我有这个案子: 登录表单使用DatabaseServerLoginModule-所有身份验证数据都存储在数据库中的单独表格中,我需要将flagj_usertype[从下拉列表]传递到j_security\u检查DatabaseServletLoginModule可以在表格之间切换并带来特定用户 有什么想法吗?您可以轻松地在登录表单中添加更多参数。当然,您需要编写自己的登录模块。问题是如何将添加的参数导入登录模块 没有符合标准的方法向j_security_check添加额外的参数(这是一个遗憾,很

我有这个案子: 登录表单使用
DatabaseServerLoginModule
-所有身份验证数据都存储在数据库中的单独表格中,我需要将flag
j_usertype
[从下拉列表]传递到
j_security\u检查
DatabaseServletLoginModule
可以在表格之间切换并带来特定用户


有什么想法吗?

您可以轻松地在登录表单中添加更多参数。当然,您需要编写自己的登录模块。问题是如何将添加的参数导入登录模块

没有符合标准的方法向
j_security_check
添加额外的参数(这是一个遗憾,很多人都需要这样做)

然而,有一种巧妙的方法可以达到同样的效果。有一个模糊但有用的安全规范称为(JACC)。它做了很多事情;其中一个更为模糊和可疑的问题是,它提供了一种从调用堆栈中的任何位置访问与当前请求相关的各种对象的方法。您可以使用具有静态方法的类来执行此操作。这将从由字符串键标识的“策略上下文处理程序”中获取对象。规范中需要一些此类处理程序,包括:

4.6.1.3 HttpServletRequest策略上下文处理程序

所有Servlet容器都必须注册PolicyContextHandler,当使用键“javax.Servlet.http.HttpServletRequest”调用时,其getContext方法返回javax.Servlet.http.HttpServletRequest对象。激活此处理程序时,容器必须返回与容器正在处理的组件请求相对应的HttpServletRequest对象

把这些放在一起,你可以做到:

HttpServletRequest request = (HttpServletRequest)PolicyContext.getContext("javax.servlet.http.HttpServletRequest")
一旦您有了一个请求,您就可以轻松地使用获取任意请求参数

我有责任指出这一点。这一答案也暗示了一种稍微好一点的形式:

HttpServletRequest request = (HttpServletRequest)PolicyContext.getContext(HttpServletRequest.class.getName())

您可以轻松地向登录表单添加更多参数。当然,您需要编写自己的登录模块。问题是如何将添加的参数导入登录模块

没有符合标准的方法向
j_security_check
添加额外的参数(这是一个遗憾,很多人都需要这样做)

然而,有一种巧妙的方法可以达到同样的效果。有一个模糊但有用的安全规范称为(JACC)。它做了很多事情;其中一个更为模糊和可疑的问题是,它提供了一种从调用堆栈中的任何位置访问与当前请求相关的各种对象的方法。您可以使用具有静态方法的类来执行此操作。这将从由字符串键标识的“策略上下文处理程序”中获取对象。规范中需要一些此类处理程序,包括:

4.6.1.3 HttpServletRequest策略上下文处理程序

所有Servlet容器都必须注册PolicyContextHandler,当使用键“javax.Servlet.http.HttpServletRequest”调用时,其getContext方法返回javax.Servlet.http.HttpServletRequest对象。激活此处理程序时,容器必须返回与容器正在处理的组件请求相对应的HttpServletRequest对象

把这些放在一起,你可以做到:

HttpServletRequest request = (HttpServletRequest)PolicyContext.getContext("javax.servlet.http.HttpServletRequest")
一旦您有了一个请求,您就可以轻松地使用获取任意请求参数

我有责任指出这一点。这一答案也暗示了一种稍微好一点的形式:

HttpServletRequest request = (HttpServletRequest)PolicyContext.getContext(HttpServletRequest.class.getName())

那好吧。。。。但是我如何在jboss 7.x的standalone.xml中传递这些参数呢?什么?“在standalone.xml中传递这些参数”是什么意思。。。。汤姆…哇,天哪!我想出来了。。。。。我仔细阅读了你的答案,这一次毕竟是一个欺诈解决方案,呵呵:)再次…一个欺诈解决方案!我不确定我是否为此感到骄傲。好吧。。。。但是我如何在jboss 7.x的standalone.xml中传递这些参数呢?什么?“在standalone.xml中传递这些参数”是什么意思。。。。汤姆…哇,天哪!我想出来了。。。。。我仔细阅读了你的答案,这一次毕竟是一个欺诈解决方案,呵呵:)再次…一个欺诈解决方案!我不确定我是否为此感到骄傲。