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