Vikings

          實施WebService Security[WS-Security1.0]的Encrypt和Sign模式(XFire+WSS4J)

          轉自:
          http://www.aygfsteel.com/security/archive/2006/08/08/xfire_wss4j.html

          thanks for springside

          鑒于很多系統需要實施WS-Security的標準,我們在SpringSide中提供了XFire+WSS4J的Demo,本文介紹SpringSide中Spring+XFire+WSS4J的基本配置

          [WebService Server端配置]
          第一,創建一個基本的BookService
          public interface BookService {
              
          /** *//**
               * 按書名模糊查詢圖書
               
          */

              List findBooksByName(String name);

              
          /** *//**
               * 查找目錄下的所有圖書
               *
               * 
          @param categoryId 如果category為null或“all”, 列出所有圖書。
               
          */

              List findBooksByCategory(String categoryId);

              
          /** *//**
               * 列出所有分類.
               *
               * 
          @return List<Category>,或是null。
               
          */

              List getAllCategorys();
          }
          第二,接口擴展,即Extend基本的BookService,在XFire中,不同的WSS4J策略需要針對不同的ServiceClass,否則<inHandlers>里面的定義會Overlap。


             <!--BookService 基類-->
              
          <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" abstract="true">
                  
          <property name="serviceFactory" ref="xfire.serviceFactory"/>
                  
          <property name="xfire" ref="xfire"/>
              
          </bean>

              
          <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
                  
          <property name="mappings">
                      
          <value>
                          /BookService=bookService
                          /BookServiceWSS4J=bookServiceWSS4J
                          /BookServiceWSS4JEnc=bookServiceWSS4JEnc
                          /BookServiceWSS4JSign=bookServiceWSS4JSign
                      
          </value>
                  
          </property>
              
          </bean>

             
          <!--(1)BookWebService 不需要認證-->
              
          <bean id="bookService" class="org.codehaus.xfire.spring.remoting.XFireExporter">
                  
          <property name="serviceFactory" ref="xfire.serviceFactory"/>
                  
          <property name="xfire" ref="xfire"/>
                  
          <property name="serviceBean" ref="bookManager"/>
                  
          <property name="serviceClass" value="org.springside.bookstore.plugins.xfire.service.BookService"/>
              
          </bean>

              
          <!--  (3)BookWebService 使用 WSS4J驗證-->
              
          <bean id="bookServiceWSS4J" class="org.codehaus.xfire.spring.remoting.XFireExporter">
                  
          <property name="serviceBean" ref="bookManager"/>
                  
          <property name="serviceClass" value="org.springside.bookstore.plugins.xfire.service.BookServiceWSS4J"/>
                  
          <property name="inHandlers">
                      
          <list>
                          
          <ref bean="domInHandler"/>
                          
          <ref bean="wss4jInHandler"/>
                          
          <ref bean="validateUserTokenHandler"/>
                      
          </list>
                  
          </property>
              
          </bean>

              
          <bean id="domInHandler" class="org.codehaus.xfire.util.dom.DOMInHandler"/>

              
          <bean id="wss4jInHandler" class="org.codehaus.xfire.security.wss4j.WSS4JInHandler">
                  
          <property name="properties">
                      
          <props>
                          
          <prop key="action">UsernameToken</prop>
                          
          <prop key="passwordCallbackClass">org.springside.bookstore.plugins.xfire.wss4j.PasswordHandler</prop>
                      
          </props>
                  
          </property>
              
          </bean>

              
          <bean id="validateUserTokenHandler" class="org.springside.bookstore.plugins.xfire.wss4j.WSS4JTokenHandler"/>
              
              
          <!--  (4)BookWebService 使用 WSS4J驗證 Encrypt模式-->
              
          <bean id="bookServiceWSS4JEnc" class="org.codehaus.xfire.spring.remoting.XFireExporter">
                  
          <property name="serviceBean" ref="bookManager"/>
                  
          <property name="serviceClass" value="org.springside.bookstore.plugins.xfire.service.BookServiceWSS4JEnc"/>
                  
          <property name="inHandlers">
                      
          <list>
                          
          <ref bean="domInHandler"/>
                          
          <ref bean="wss4jInHandlerEnc"/>
                          
          <ref bean="validateUserTokenHandler"/>
                      
          </list>
                  
          </property>
              
          </bean>
                  
              
          <bean id="wss4jInHandlerEnc" class="org.codehaus.xfire.security.wss4j.WSS4JInHandler">
                  
          <property name="properties">
                    
          <props>
                      
          <prop key="action">Encrypt</prop>
                      
          <prop key="decryptionPropFile">org/springside/bookstore/plugins/xfire/wss4j/insecurity_enc.properties</prop>
                      
          <prop key="passwordCallbackClass">org.springside.bookstore.plugins.xfire.wss4j.PasswordHandler</prop>
                    
          </props>
                  
          </property>
              
          </bean>
              
              
          <!--  (5)BookWebService 使用 WSS4J驗證 Signature模式-->
              
          <bean id="bookServiceWSS4JSign" class="org.codehaus.xfire.spring.remoting.XFireExporter">
                  
          <property name="serviceBean" ref="bookManager"/>
                  
          <property name="serviceClass" value="org.springside.bookstore.plugins.xfire.service.BookServiceWSS4JSign"/>
                  
          <property name="inHandlers">
                      
          <list>
                          
          <ref bean="domInHandler"/>
                          
          <ref bean="wss4jInHandlerSign"/>
                          
          <ref bean="validateUserTokenHandler"/>
                      
          </list>
                  
          </property>
              
          </bean>
              
              
          <bean id="wss4jInHandlerSign" class="org.codehaus.xfire.security.wss4j.WSS4JInHandler">
                  
          <property name="properties">
                    
          <props>
                      
          <prop key="action">Signature</prop>
                      
          <prop key="signaturePropFile">org/springside/bookstore/plugins/xfire/wss4j/insecurity_sign.properties</prop>
                      
          <prop key="passwordCallbackClass">org.springside.bookstore.plugins.xfire.wss4j.PasswordHandler</prop>
                    
          </props>
                  
          </property>
              
          </bean>
              
          </beans>

          posted on 2008-10-29 01:55 Vikings 閱讀(383) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 黑河市| 咸阳市| 绥滨县| 邓州市| 余干县| 三河市| 芦溪县| 威海市| 镇雄县| 秭归县| 竹山县| 林州市| 平舆县| 绍兴市| 德令哈市| 名山县| 福安市| 门源| 隆回县| 常熟市| 巴彦淖尔市| 枣庄市| 富民县| 嵊州市| 洛阳市| 通渭县| 东明县| 施秉县| 任丘市| 吴江市| 唐河县| 平乐县| 普定县| 沐川县| 自贡市| 宜昌市| 邵武市| 诸城市| 津南区| 中西区| 内黄县|