如何从拦截器更改JAAS上下文?

时间:2012-07-28 07:46:05

标签: java security java-ee jaas role

我想问一下是否可以从EJB拦截器更改Java EE JAAS Context(分配的用户角色)?

我有一些EJB会话bean使用方法'isUserInRole()'来测试授权。另一方面,我的应用程序正在管理用户配置文件,其中包含一些特殊信息,这些信息无法映射到通过应用程序Java EE域管理的JAAS角色/组,因为它们是在运行时创建的。

我的想法是实现像EJB拦截器之类的东西,检查存储在用户配置文件中的信息从我的应用程序中,并向用户凭证/主题添加一些新的自定义角色。

因此,结果将是分配给凭据的新动态角色定义,可以由我的会话bean询问。但是这些角色不会在ejb(@RolesAllowd)或ejb-jar.xml或sun-ejb-jar.xml描述符中进行硬编码。

感谢您对此问题的任何帮助。

1 个答案:

答案 0 :(得分:0)

更改已经建立的安全上下文很难,但如果最初设置安全上下文也适用于您的情况,则必须查看自定义登录模块。

在Java EE中,这可以通过构建在JAAS上的JASPI API来完成。

几乎每个应用程序服务器都有一个专有API来执行此操作,其中大多数也基于JAAS构建。