JBoss的安全
最近做了一个JBoss安全的项目,对JBoss安全的内容有了一些了解,这些了解仅限于开发阶段,在这里记录下来,免得忘记了。
照着JBoss Admin Guide关于Security的章节来写,不然太乱了。有些就直接翻译过来了。
安全在Java中具备两种意思,
1.客户端:这个应用是从哪里来的,我允许它做些什么。
2.服务端:谁在执行这个应用,我允许他做些什么。
这篇文章里面只讨论第二种情况。
安全是企业级应用的基础。作为开发人员,你需要具备控制谁被允许访问你的应用,以及应用上的何种操作被允许的能力。J2EE Spec为EJB及web组件定义了一种简单的基于role的安全模型。在JBoss中我们使用JBossSX扩展框架来处理安全。JBossSX组件支持J2EE的基于role的安全模型, 同时通过安全代理层(Security Proxy Layer),它还可以集成定制化的安全模型。JBossSX默认的声明式安全模型(基于role)是基于J2EE的JAAS(Java Authentication and Authorization Service)登陆模块的。而对于那些用声明式无法实现的安全模型,JBossSX利用安全代理层使得定制的安全模型成为可能。
1. J2EE 声明式安全
你可以将security role以及permission通过声明的方式写入标准XML描述符,并以此将安全机制与具体的业务逻辑解耦。J2EE的声明式安全正是通过这种方法来实现的,你可以将安全需求写入J2EE部署描述符(ejb-jar.xml和web.xml)。而在新的EJB和Servlet版本中,你还可以通过annotation的方式来加载。
1.1 Security References
EJB和Servlet都可以声明一到多个security-role-ref, 这个ref引用到application级别的role定义,并可以用其检验某个用户是否具备该role。
<method-permission><description>The admin role may access any method of theEmployeeServiceAdmin bean </description><role-name>admin</role-name><method><ejb-name>EmployeeServiceAdmin</ejb-name><method-name>*</method-name></method></method-permission>