Java EE

时间:2016-05-23 15:53:48

标签: authentication java-ee

到目前为止,我见过的所有Java EE授权技术仅适用于视图层 - 主要基于JSF。您基本上限制对某些URL模式或JSF组件的访问。

但是,我更喜欢在服务上安装我的安全层。我的图层看起来像这样:

  • 查看(XHTML + JSF Backing Beans / RESTful Web服务)
  • 服务
  • 实体和业务逻辑
  • 的DAO

由于服务是我的业务逻辑的代理,并且它们本身不包含任何逻辑,因此我想将它们用于访问控制。这样我就不需要单独为每个视图技术实现安全性,也不需要注意URL模式(维护起来很糟糕)。

我首选的解决方案是对服务的类或方法进行注释。如果某些视图代码试图在未经许可的情况下访问它们,则会获得异常(处理并转发到登录表单)。

我可以使用这样的东西吗?

1 个答案:

答案 0 :(得分:4)

  

我首选的解决方案是对服务的类或方法进行注释。如果某些视图代码试图在未经许可的情况下访问它们,则会获得异常(处理并转发到登录表单)。

     

我可以使用这样的东西吗?

是。您熟悉的内容称为“应用程序级”安全性,它确实很常见。但Java EE长期以来一直提供内置的声明机制作为替代或辅助;这些可以在Web应用程序级别或组件级别上运行。这里的细节太广泛了,但Java EE教程有三章涵盖它们。您可能希望从the overview开始。

处于非常高的水平,

  • 传统上,声明性安全要求已在部署描述符中表达。详细信息因受保护的组件或应用程序类型而异。

  • 至少从Java EE 6开始,一些安全声明也可以通过组件源中的注释进行。

  • 用户身份验证和授权的主要内置机制是Java Authentication and Authorization Services(JAAS)。这实际上是一种Java SE技术,因此您也可以将它用于常规应用程序。如果你曾经使用Solaris的/ Linux可插拔认证模块(PAM)子系统,那么JAAS会对概念感到熟悉。

  • 一些Java EE容器和一些应用程序框架提供了自己的安全机制;如果你的情况允许你考虑这些事情,那么值得一看。