根据软件许可证标志更改JAAS角色

时间:2009-03-24 04:53:15

标签: java hibernate licensing java-ee jaas

我在JBOSS上运行了一个非常普通的Java EE应用程序。 它使用JBoss DatabaseLoginModule JAAS身份验证。 它还在Hibernate中具有完全相同的应用层用户/角色。

我有一个想法(我认为这对我来说非常有用),我可以在软件许可对象(不使用hibernate)中设置一个能力位,使所有用户成为只读用户。这使我可以通过重新许可来制作产品的只读版本。

我想要做的是根据程序中可访问的布尔标记重新映射用户关联。

通常我们得到(很多次加入)

用户 - * UserRole * -Role - * RoleActions

,其中

user.roleid => role.id

设置布尔值(软件许可证中设置的功能位)

我希望JAAS的行为像许可证所说的那样,所有用户都是roleid = 1。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

通过继承DatabaseServerLoginModule,我可以执行额外的检查。 (在软件许可证上)

我可以随便

  1. 如果许可证已过期,请提供A Readonly用户(凭据已修复)

  2. 如果许可证设置了只读功能位,请给予只读用户(凭据已修复)

  3. 由于已经拦截了登录,因此Hibernate User查找将适用于正确的用户。

答案 1 :(得分:0)

也许我在这里错过了这条船,但为什么不以编程方式做到这一点呢?

User对象中,提供一个像getAuthenticatedRoles()这样的瞬态getter,它会额外过滤Hibernate加载的内容。另外,创建原始映射集合getter protected,并仅使用其他Java代码中的getAuthenticatedRoles()