【发布时间】:2017-11-29 14:34:36
【问题描述】:
对于我的 JSF/TomEE 应用程序,我有一个 NoSQL 数据库,其中包含用户和角色,用于指定用户如何以只读或写入方式访问资源(基本上是 url 参数中的 ID)。
我想实现安全性和this post gave me some ideas,但我热衷于尝试第 3 方库 - 可能是 Shiro 或 PicketLink。规则是用户将使用客户端证书进行身份验证,如果未提供,他们将作为默认访客用户进行身份验证。
令人惊讶的是,我很难在 Shiro 中找到一些有关如何执行此操作的信息,它看起来并不直截了当。 Shiro 中没有“开箱即用”的东西来实现客户端证书身份验证,这让我有点惊讶。
所以我想我必须创建一个领域来“连接” Shiro 和我的数据库。然后我读到我可能需要扩展 org.apache.shiro.authc.UsernamePasswordToken 来读取证书并将其传递给 Shiro。然后我想我必须限制对 JSF xhtml 页面中内容的访问(例如使用 rendered 属性),我想即使在 Named 托管 bean 的所有方法中我也需要检查权限。
另外,我不清楚在未提供证书时如何分配来宾用户,因为显然是 TomEE 验证了客户端,所以如果没有提供证书,我的代码将不会被执行分配来宾用户。我可以在 TomEE 中打开两个不同的端口,但是访问将不会统一,因为我想将访客用户与系统中的任何其他用户一视同仁。如何做到这一点?
这是否在 PicketLink 中以更简单的方式实现? (这也为 JSF 做好了准备)
【问题讨论】:
标签: jsf-2 shiro tomee-7 picketlink