`
dylai
  • 浏览: 9415 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

xfire webService 加入用户名密码验证 02

 
阅读更多


1.需要的jar包


       除了xfire和spring必要的包外 还需要 wss4j-1.5.1.jar 和 commons-codec-1.3.jar

2.servicebean配置如下

<bean name="ticketcheckService" class="org.codehaus.xfire.spring.ServiceBean">
       <property name="serviceBean" ref="ticketcheckWS" />
       <property name="name" value="checkTicket"></property>
       <property name="serviceClass"
           value="ticketcheck.service.IticketCheck" />
       <property name="inHandlers">
           <list>
              <ref bean="addressingHandler" />
               <ref bean="domInHandler" />
              <ref bean="wss4jHandler" />
           </list>
       </property>




      <property name="properties">
          <props>

  <!-- 等待HttpConnectionManager从连接池中返回空闲连接的超时时间 -->

  <prop key="http.connection.manager.timeout">2000</prop>

  <!-- 等待建立连接的超时时间 -->

  <prop key="http.connection.manager.timeout">3000</prop>

  <!-- 等待服务器返回数据超时时间 -->

  <prop key="http.connection.manager.timeout">5000</prop>

  <!-- 连接到单个服务器的连接数上限 -->

  <prop key="http.connection.manager.timeout">10</prop>

  <!-- 连接到所有服务器的连接个数上限 -->

  <prop key="http.connection.manager.timeout">30</prop>

      </props>

       </property>


    </bean>


    <bean id="addressingHandler" class="org.codehaus.xfire.addressing.AddressingInHandler" />
    <bean id="domInHandler" class="org.codehaus.xfire.util.dom.DOMInHandler" />
  
  
    <bean id="wss4jHandler"  class="org.codehaus.xfire.security.wss4j.WSS4JInHandler"  >
    <property name="properties">
            <!--
            <props>
            <prop key="action">UsernameToken</prop>
            <prop key="passwordCallbackClass">ticketcheck.service.impl.PasswordHandlerImpl</prop>
            </props>
             -->
           <map>
             <entry key="action" value="UsernameToken"></entry>
             <entry key="passwordCallbackRef" value-ref="securityHandler" >  </entry>
           </map>
        </property>
     </bean>
    <bean id="securityHandler" class="ticketcheck.service.impl.PasswordHandlerImpl">
       <property name="userInfo">
           <map>
              <entry key="user1" value="pwd1"></entry>
              <entry key="user2" value="pwd2"></entry>
           </map>
       </property>
    </bean>
这里 在wss4jHandler配置中原先 用<props> 是无法实现passwordCallback的bean 注入(应用properties值都是字符的所以passwordCallbackRef 在<props>中是不起作用的)

下面就是实现securityHandler



3.PasswordHandlerImpl



import java.io.IOException;
import java.util.HashMap;


import org.apache.ws.security.WSConstants;
import org.apache.ws.security.WSPasswordCallback;
import org.apache.ws.security.WSSecurityException;




import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;


/**
* 验证用户密码
*/


public class PasswordHandlerImpl implements CallbackHandler {
    private HashMap<String, String> userInfo ; //保存的用户名密码信息

    public void setUserInfo(HashMap<String, String> userInfo) {
       this.userInfo = userInfo;
    }

    public void handle(Callback[] callbacks) throws IOException,
           UnsupportedCallbackException {
       WSPasswordCallback callback = (WSPasswordCallback) callbacks[0]; //获取回调对象
       String id = callback.getIdentifer();//获取用户名
String validPw = userInfo.get(id);
       if(validPw == null){
           throw new WSSecurityException("no such user");
       }

       if (WSConstants.PASSWORD_TEXT.equals(callback.getPasswordType())) {//如果是明文密码直接进行判断
           String pw = callback.getPassword();
           if (pw == null || !pw.equalsIgnoreCase(validPw)) {
              throw new WSSecurityException("password not match");
           }
       } else {//如果是密码摘要,向回调设置正确的密码(明文密码)这段主要是在service客户端用到
           callback.setPassword(validPw);
       }
    }
}
分享到:
评论

相关推荐

    Xfire webservice 加密

    在Xfire Webservice中,加密确保了用户数据(如用户名、密码和游戏活动)在传输过程中的安全性。 3. **SSL/TLS协议**:安全套接层(SSL)和传输层安全(TLS)协议是实现Web服务加密的常用方法。这些协议通过创建...

    XFire Webservice 客户端

    XFire Webservice客户端可能采用了某种形式的身份验证机制,如用户名和密码、API密钥或其他安全令牌,以确保只有授权的客户端才能访问服务。 **7. 异步通信** 考虑到游戏环境对实时性的要求,XFire Webservice...

    WebService之XFire和Jax实现身份验证

    UsernameToken方式通常涉及到用户名和密码的传递,而X509证书则基于公钥基础设施(PKI),使用数字证书进行身份验证。为了实现这些,开发者需要配置XFire的拦截器和安全策略,确保只有经过验证的请求才能访问服务。 ...

    xfire+spring+webservice+client

    Spring和XFire提供了支持WS-Security标准的机制,可以添加证书、用户名/密码等安全配置到Web服务客户端。 8. **测试与调试**:使用Spring和XFire的集成,可以通过JUnit或其他测试框架编写单元测试,模拟Web服务调用...

    使用xfire框架搭建webService的一个demo

    在xfire中实现WS-Security,你需要在服务端配置安全策略,如使用用户名令牌、X.509证书等。客户端则需要在发送请求时附带相应的安全信息。这通常涉及设置SOAP Header中的`wsse:Security`元素,并添加适当的`wsu:...

    WebService详细解析(axis,xfire,cxf,授权认证加密解密)

    - 基本认证:通过HTTP头发送用户名和密码进行身份验证。 - SSL/TLS:使用HTTPS确保数据传输的安全性。 - WS-Security:提供SOAP消息级别的安全,包括数字签名、加密、消息完整性等。 - OAuth和OpenID Connect:用于...

    xfire+spring

    在XFire中,可以通过配置安全策略来实现这一功能,例如使用用户名令牌(UsernameToken)、X.509证书等进行身份验证。客户端在调用Web服务时,必须提供有效的凭证以通过安全检查。这通常涉及在SOAP消息头中添加安全...

    Spring+xFire+wss4j配置Helloworld完整版,Myeclipse项目服务端+客户端.rar

    例如,我们可以配置wss4j以使用用户名令牌进行身份验证: ```xml ``` 客户端则需要配置相应的安全参数,以便能够成功调用服务。这通常涉及到设置认证信息和信任的证书,以便进行安全通信。 项目中包含的`...

    Webservice测试方案

    测试点包括接口调用是否需要用户名和密码,以及抵御恶意攻击的能力,防止系统因非法调用而崩溃。 3. WebService测试工具 soapUI是一个广泛使用的工具,用于进行WebService的功能测试。以下是如何使用soapUI进行...

    WebService测试方案.docx

    安全性测试确保WebService接口的调用受到适当的保护,例如验证用户名和密码,防止未授权访问和恶意攻击。测试内容包括验证接口是否对非法调用做出有效的防护,防止系统因恶意行为而崩溃。 **3. 使用soapUI进行功能...

    webservice小例子

    这个例子可能包含了处理登录请求的方法,如检查用户名和密码,以及生成会话令牌等。通过这个示例,学习者可以了解到如何在Web服务中处理认证和授权的过程。 为了充分利用这个例子,初学者应该首先了解Web服务的基本...

    xfie解析xml,加头部验证方式和验证内容的

    这些信息可能包括认证凭据(如用户名和密码)、安全令牌等。 4. **头部验证**:服务器端接收到请求后,会检查SOAP头中的信息,进行必要的验证。这可能涉及比较签名、检查证书、验证用户权限等。 5. **处理响应**:...

    eclipse,myeclipse开发webservice

    6. **身份认证**:16_7_2部分可能涉及使用用户名-密码进行Web服务的身份验证,这是安全性的一个重要方面,确保只有经过授权的客户端才能访问服务。 7. **SOAP报文**:SOAP是Web服务的标准通信协议,报文包含了服务...

    使用axis在项目中开发WebService服务

    - 在这个例子中,`checkPsd`方法接收用户名和密码,返回一个字符串数组,表示验证结果。 **第四步:** 生成服务接口和部署 - 使用Axis工具生成服务接口和部署描述符(WSDL文件),然后将这些文件部署到Web服务器...

    CXF创建Webservice接口与Spring整合实例

    这个接口定义了一个名为`login`的方法,用于接收用户名和密码并返回用户对象。 3. **实现服务接口**:创建接口的实现类,实现具体的服务逻辑。例如: ```java @WebService(endpointInterface = ...

    WS-Security 安全

    其中,UsernameTokenProfile、X.509TokenProfile和SAMLTokenProfile分别提供了基于用户名密码、数字证书和SAML断言的安全令牌机制,满足了不同场景下的身份验证需求。 #### 实现方案 在实际部署中,企业可以根据...

    MyEclipse 6 Java EE 开发中文手册

    - **配置数据库连接**:输入数据库服务器地址、端口、用户名和密码等信息。 - **测试连接**:确保连接信息正确无误。 **5.3 操作数据库** - **执行SQL查询**:编写并执行SQL查询语句。 - **浏览数据表**:查看...

    CXF服务端和客户端 应用开发指南

    此接口使用@WebService注解,标识其为待暴露的Web服务接口,包含一个公开的方法vote(),接受用户名和积分参数,返回投票结果。具体实现由SurveyService类完成,位于ws.cxf.impl包内。该类继承自ISurveyService,实现...

Global site tag (gtag.js) - Google Analytics