在Rest Server中实施授权-设计

时间:2019-02-18 16:38:23

标签: java rest authorization

我们的团队拥有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

1 个答案:

答案 0 :(得分:0)

关于您的问题:“授权是在REST服务器内部还是在Web应用程序服务器中实现”:我的建议是既不在其中实现它!而是在REST层所调用的服务内部实现安全性。换句话说,安全性是在您的服务的核心实现的,并且无论调用该服务的方式如何,安全性都会得到加强。

关于您提到的安全框架,我对OACC有偏见/部分偏见。 OACC提供了一个完全实现的API,使用创新的设计与您的应用程序无缝集成,支持许多数据库后端来保留安全性数据,并经过1000多次集成测试的广泛测试。

这是一篇很好的文章,讨论了OACC安全模型:https://dzone.com/articles/a-different-kind-of-java-security-framework

公开:我是OACC框架的创建者/首席架构师