根据软件许可证标志更改 JAAS 角色
题
我有一个在 JBOSS 上运行的非常普通的 Java EE 应用程序。它使用 JBoss DatabaseLoginModule JAAS 身份验证。它在 Hibernate 中也有完全相同的应用层用户/角色。
我有一个想法(无论如何,我认为这对我来说非常有用),我可以在软件许可证对象(不使用休眠)中设置一个功能位,使所有用户成为只读用户。这让我可以通过重新许可来制作该产品的只读版本。
我想做的是根据程序内部可访问的布尔标志重新映射用户关联。
所以通常我们得到(多对多连接)
用户-*UserRole*-Role-*RoleActions
在哪里
用户.角色=>角色.id
当布尔值被设置时(软件许可证中设置的功能位)
当许可证如此规定时,我希望 JAAS 的行为就像所有用户都是 roleid =1 一样。
有任何想法吗 ?
解决方案
通过子类化 DatabaseServerLoginModule 我可以执行额外的检查。(在软件许可证上)
简单地说我可以
如果许可证已过期,请授予只读用户(凭据已修复)
如果许可证设置了只读功能位,请授予只读用户(凭据是固定的)
由于登录已被拦截,Hibernate 用户查找将针对正确的用户。
其他提示
也许我在这里错过了船,但为什么不这样做编程?
在User
目的,提供一个短暂的吸气剂像getAuthenticatedRoles()
将附加过滤Hibernate
加载什么。 Additonally,使原来的映射集合吸气protected
,和其他Java代码只使用getAuthenticatedRoles()
。
不隶属于 StackOverflow