JBoss下的单点登陆(SSO)技术实现分析(5)

导读:
   4. Josso与Web应用安全 策略的管理
  Josso在Web应用安全策略的管理主要通过JBoss容器的进行用户权限的分配和取消。它的整个应用模型主要是基于JAAS的安 全策略模型进行拓展,并对Web页面层和EJB应用组件分别进行安全控制,下面我们通过Josso自带的一个例子来说明。
  Web页面层的安全控制是在web.xml中通过<login-config>、</login-config><security-constraint>和</security-constraint><security-role>标签定义来实现的。
  以下是Josso中partnerapp例子对Web页面层的安全控制实现:
  
  <security-constraint>
  
  <web-resource-collection>
  
  <web-resource-name>public-resources</web-resource-name>
  <url-pattern>/resources/**//*</url-pattern>
  <http-method>HEAD</http-method>
  <http-method>GET</http-method>
  <http-method>POST</http-method>
  <http-method>PUT</http-method>
  <http-method>DELETE</http-method>
  </web-resource-collection>
  </security-constraint>
  <security-constraint>
  <web-resource-collection>
  <web-resource-name>protected-resources</web-resource-name>
  <url-pattern>/josso/*</url-pattern>
  <url-pattern>/protected/*</url-pattern>
  <http-method>HEAD</http-method>
  <http-method>GET</http-method>
  <http-method>POST</http-method>
  <http-method>PUT</http-method>
  <http-method>DELETE</http-method>
  </web-resource-collection>
  <auth-constraint>
  <role-name>role1</role-name>
  </auth-constraint>
  <user-data-constraint>
  <transport-guarantee>NONE</transport-guarantee>
  </user-data-constraint>
  </security-constraint>
  <login-config>
  <auth-method>FORM</auth-method>
  <form-login-config>
  <form-login-page>/login-redirect.jsp</form-login-page>
  <form-error-page>/login-redirect.jsp</form-error-page>
  </form-login-config>
  </login-config>
  <security-role>
  <description>Role 1</description>
  <role-name>role1</role-name>
  </security-role>
  
  
  对于EJB应用组件只需在ejb-jar.xml的部署描述符中添加</security-role><security-role>中定义相应的安全策略,对于JBoss来说同时还需要在jboss.xml中添加</security-role><security-domain>,以保证当前域的安全策略生效。在partnerapp中的实现如下:
  
  
  
  <ejb-jar>
  <display-name>Partner Component</display-name>
  <enterprise-beans>
  <session>
  <ejb-name>PartnerComponentEJB</ejb-name>
  <home>org.josso.samples.ejb.PartnerComponentHome</home>
  <remote>org.josso.samples.ejb.PartnerComponent</remote>
  <ejb-class>org.josso.samples.ejb.PartnerComponentEJB</ejb-class>
  <session-type>Stateless</session-type>
  <transaction-type>Container</transaction-type>
  </session>
  </enterprise-beans>
  <assembly-descriptor>
  <security-role>
  <description>Role 1</description>
  <role-name>role1</role-name>
  </security-role>
  <method-permission>
  <description>Security attributes for 'PartnerComponenttEJB' methods</description>
  <role-name>role1</role-name>
  <method>
  <ejb-name>PartnerComponentEJB</ejb-name>
  <method-name>*</method-name>
  </method>
  </method-permission>
  <container-transaction>
  <method>
  <ejb-name>PartnerComponentEJB</ejb-name>
  <method-name>*</method-name>
  </method>
  <trans-attribute>Required</trans-attribute>
  </container-transaction>
  </assembly-descriptor>
  </ejb-jar>
  
  "-//JBoss//DTD JBOSS 3.0//EN"
"http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">  "-//JBoss//DTD JBOSS 3.0//EN"
  "http://www.jboss.org/j2ee/dtd/jboss_3_0.dtd">
  <jboss>
  <security-domain>java:/jaas/josso</security-domain>
  <enterprise-beans>
  <session>
  <ejb-name>PartnerComponentEJB</ejb-name>
  <jndi-name>josso/samples/PartnerComponentEJB</jndi-name>
  </session>
  </enterprise-beans>
  </jboss>
  
  
  以上是Josso对Web应用层和EJB组件所关联的安全策略的部署描述,另外在Josso验证的验证过程中,登陆页面、注销页面和通过验证后用户的信息都是通过JBoss服务器支持的单点登陆模式来实现的。JBoss服务器支持的登录验证机制主要有:基于HTTP的基本验证(采用简单的Base64编码),基于HTTPS的客户端验证(采用证书验证),基于表单验证(通过表单提交的信息,自己定制验证方式)等;而通过验证后的用户信息可以通过Servlet的request对象的getUserPrincipal()方法来获得。在这里我们就不多做介绍。相关的信息可以查阅JBoss及Servlet的文档。
   5. 小结
  单点登陆(SSO)是一个很大的议题,在本文中笔者只是简单地通过对单点登陆(SSO)的实现原理和Josso在JBoss环境下的实施的介绍,让读者在一个侧面对单点登陆(SSO)有一定认识。进入讨论组讨论。

你可能感兴趣的:(Web,jboss,ejb,Security,SSO)