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中,加密确保了用户数据(如用户名、密码和游戏活动)在传输过程中的安全性。 3. **SSL/TLS协议**:安全套接层(SSL)和传输层安全(TLS)协议是实现Web服务加密的常用方法。这些协议通过创建...
XFire Webservice客户端可能采用了某种形式的身份验证机制,如用户名和密码、API密钥或其他安全令牌,以确保只有授权的客户端才能访问服务。 **7. 异步通信** 考虑到游戏环境对实时性的要求,XFire Webservice...
UsernameToken方式通常涉及到用户名和密码的传递,而X509证书则基于公钥基础设施(PKI),使用数字证书进行身份验证。为了实现这些,开发者需要配置XFire的拦截器和安全策略,确保只有经过验证的请求才能访问服务。 ...
Spring和XFire提供了支持WS-Security标准的机制,可以添加证书、用户名/密码等安全配置到Web服务客户端。 8. **测试与调试**:使用Spring和XFire的集成,可以通过JUnit或其他测试框架编写单元测试,模拟Web服务调用...
在xfire中实现WS-Security,你需要在服务端配置安全策略,如使用用户名令牌、X.509证书等。客户端则需要在发送请求时附带相应的安全信息。这通常涉及设置SOAP Header中的`wsse:Security`元素,并添加适当的`wsu:...
- 基本认证:通过HTTP头发送用户名和密码进行身份验证。 - SSL/TLS:使用HTTPS确保数据传输的安全性。 - WS-Security:提供SOAP消息级别的安全,包括数字签名、加密、消息完整性等。 - OAuth和OpenID Connect:用于...
在XFire中,可以通过配置安全策略来实现这一功能,例如使用用户名令牌(UsernameToken)、X.509证书等进行身份验证。客户端在调用Web服务时,必须提供有效的凭证以通过安全检查。这通常涉及在SOAP消息头中添加安全...
例如,我们可以配置wss4j以使用用户名令牌进行身份验证: ```xml ``` 客户端则需要配置相应的安全参数,以便能够成功调用服务。这通常涉及到设置认证信息和信任的证书,以便进行安全通信。 项目中包含的`...
安全性测试确保WebService接口的调用受到适当的保护,例如验证用户名和密码,防止未授权访问和恶意攻击。测试内容包括验证接口是否对非法调用做出有效的防护,防止系统因恶意行为而崩溃。 **3. 使用soapUI进行功能...
这个例子可能包含了处理登录请求的方法,如检查用户名和密码,以及生成会话令牌等。通过这个示例,学习者可以了解到如何在Web服务中处理认证和授权的过程。 为了充分利用这个例子,初学者应该首先了解Web服务的基本...
这些信息可能包括认证凭据(如用户名和密码)、安全令牌等。 4. **头部验证**:服务器端接收到请求后,会检查SOAP头中的信息,进行必要的验证。这可能涉及比较签名、检查证书、验证用户权限等。 5. **处理响应**:...
6. **身份认证**:16_7_2部分可能涉及使用用户名-密码进行Web服务的身份验证,这是安全性的一个重要方面,确保只有经过授权的客户端才能访问服务。 7. **SOAP报文**:SOAP是Web服务的标准通信协议,报文包含了服务...
- 在这个例子中,`checkPsd`方法接收用户名和密码,返回一个字符串数组,表示验证结果。 **第四步:** 生成服务接口和部署 - 使用Axis工具生成服务接口和部署描述符(WSDL文件),然后将这些文件部署到Web服务器...
这个接口定义了一个名为`login`的方法,用于接收用户名和密码并返回用户对象。 3. **实现服务接口**:创建接口的实现类,实现具体的服务逻辑。例如: ```java @WebService(endpointInterface = ...
其中,UsernameTokenProfile、X.509TokenProfile和SAMLTokenProfile分别提供了基于用户名密码、数字证书和SAML断言的安全令牌机制,满足了不同场景下的身份验证需求。 #### 实现方案 在实际部署中,企业可以根据...
- **配置数据库连接**:输入数据库服务器地址、端口、用户名和密码等信息。 - **测试连接**:确保连接信息正确无误。 **5.3 操作数据库** - **执行SQL查询**:编写并执行SQL查询语句。 - **浏览数据表**:查看...
此接口使用@WebService注解,标识其为待暴露的Web服务接口,包含一个公开的方法vote(),接受用户名和积分参数,返回投票结果。具体实现由SurveyService类完成,位于ws.cxf.impl包内。该类继承自ISurveyService,实现...