rest服务器设计中的java实现授权
我们的团队有一个REST服务器和一个使用Jersey开发的web应用程序。目前,我们只支持在应用程序中使用OpenID进行身份验证[1]。我们计划引入授权。在我的研究中,我发现基于角色的授权是实现这一点的一种方法。这种方法是拥有我们自己的表,如user、privileges和user\u privileges,并为用户分配所需的特权(一对多映射)
我有以下问题:
因为我们有一个web应用程序和一个REST服务器。授权应该在REST服务器内部还是在Web应用服务器中实现
希望了解使用Java的安全框架(如JAAS、ApacheShiro、OACC、Java安全注释[2](@RolesAllowed))的好处,以及代码重用能力、易于实现
如果建议的话,我们还希望收到关于从上述框架(JAAS、ApacheShiro、OACC、Java安全注释)中选择哪种框架的建议
多谢各位
[1]https://en.wikipedia.org/wiki/OpenID
[2] https://docs.oracle.com/javaee/7/tutorial/security-javaee002.htm
# 1 楼答案
至于你的问题:“授权应该“在”REST服务器内部实现,还是在Web应用服务器中实现”:我的建议是在这两种服务器中都实现它!相反,在REST层调用的服务中实现安全性。换句话说,安全性是在服务的核心实现的,无论服务如何调用,安全性都是强制执行的
至于你提到的安全框架,我对OACC有偏见/偏爱。OACC提供了一个完全实现的API,使用创新设计与应用程序无缝集成,支持多个数据库后端来持久化安全数据,并通过1000多个集成测试进行了广泛测试
这是一篇讨论OACC安全模型的好文章:https://dzone.com/articles/a-different-kind-of-java-security-framework
(披露:我是OACC框架的创建者/首席架构师)