我们的团队拥有REST服务器和使用Jersey开发的Web应用程序。当前,我们仅在使用OpenID [1]的应用程序中支持身份验证。我们正计划引入授权。在我的研究中,我发现基于角色的授权是实现此目标的一种方法。这种方法是拥有我们自己的表,例如user,privacy和user_privileges,并为用户分配所需的特权(一对多映射)。
我有以下问题:
因为我们有一个Web应用程序和一个REST服务器。授权应该在REST服务器内部实现还是在Web应用服务器中实现。
想了解使用Java安全框架(如JAAS,Apache Shiro,OACC,Java安全注释[2](@RolesAllowed))的好处,除了具有代码重用能力,易于实现之外。
如果愿意,还将希望收到有关从上述框架中选择哪种框架(JAAS,Apache Shiro,OACC,Java安全注释)的建议。
谢谢。
[1] https://en.wikipedia.org/wiki/OpenID
[2] https://docs.oracle.com/javaee/7/tutorial/security-javaee002.htm
答案 0 :(得分:0)
关于您的问题:“授权是在REST服务器内部还是在Web应用程序服务器中实现”:我的建议是既不在其中实现它!而是在REST层所调用的服务内部实现安全性。换句话说,安全性是在您的服务的核心实现的,并且无论调用该服务的方式如何,安全性都会得到加强。
关于您提到的安全框架,我对OACC有偏见/部分偏见。 OACC提供了一个完全实现的API,使用创新的设计与您的应用程序无缝集成,支持许多数据库后端来保留安全性数据,并经过1000多次集成测试的广泛测试。
这是一篇很好的文章,讨论了OACC安全模型:https://dzone.com/articles/a-different-kind-of-java-security-framework
(公开:我是OACC框架的创建者/首席架构师)