`
zhang_xzhi_xjtu
  • 浏览: 536785 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

用cxf做用户名和密码的检测

    博客分类:
  • SOA
阅读更多
用cxf做用户名和密码的检测

在server端,主要为得到JaxWsServerFactoryBean后配置Interceptors,

<code>

......
JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
......

Map<String, Object> inProps = new HashMap<String, Object>();

inProps.put(WSHandlerConstants.ACTION,WSHandlerConstants.USERNAME_TOKEN);
inProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
inProps.put(WSHandlerConstants.PW_CALLBACK_CLASS, ServerPasswordHandler.class.getName());

WSS4JInInterceptor wssIn = new WSS4JInInterceptor(inProps);

svrFactory.getInInterceptors().add(wssIn);
svrFactory.getInInterceptors().add(new SAAJInInterceptor());

......

其中ServerPasswordHandler为真正的用户名密码检查处。

public class ServerPasswordHandler implements CallbackHandler {

@Override
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];

if (pc.getIdentifer().equals("userName")) {

if (!pc.getPassword().equals("password")) {

throw new RuntimeException("security error.");

}
} else {
throw new RuntimeException("security error.");
}

}
}

在client端基本和server端对称,只要在client端配置Interceptors就可以工作了。

<code>

.......
JaxWsProxyFactoryBean factory=......;
.......
Map<String, Object> outProps = new HashMap<String, Object>();
outProps.put(WSHandlerConstants.ACTION,
WSHandlerConstants.USERNAME_TOKEN);
outProps.put(WSHandlerConstants.USER, "userName");
outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS,
ClientPasswordCallback.class.getName());

WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(outProps);
factory.getOutInterceptors().add(wssOut);
factory.getOutInterceptors().add(new SAAJOutInterceptor());

其中ClientPasswordCallback实际配置password的地方。

public class ClientPasswordCallback implements CallbackHandler {

public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {

WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
pc.setIdentifier("userName");
pc.setPassword("password");
}
}

PS:outProps.put(WSHandlerConstants.USER, "userName");一定要设置,即使后来它会被
pc.setIdentifier("userName");
pc.setPassword("password");
覆盖掉。
分享到:
评论

相关推荐

    CXF 通过用户名和密码进行验证

    标题中的"CXF 通过用户名和密码进行验证"指的是在使用Apache CXF框架开发Web服务时,如何实现基于用户名和密码的身份验证。Apache CXF是一个开源的Java框架,它用于创建和消费SOAP和RESTful Web服务。这里的验证过程...

    CXF 调用ASP服务器端通过用户名密码验证

    java CXF客户端请求ERP SAP webservice通过用户名和密码验证功能!

    Springboot整合CXF发布Web service和客户端调用(用户和密码验证)

    这样,客户端就可以通过提供的用户名和密码来调用服务端的方法了。 总结起来,Spring Boot整合CXF发布Web服务和实现用户密码验证的客户端调用主要包括以下步骤: 1. 引入CXF和Spring Security依赖。 2. 定义并实现...

    springBoot整合CXF并实现用户名密码校验的方法

    SpringBoot整合CXF并实现用户名密码...在这个示例中,我们只是简单地实现了用户名密码校验,但是在实际项目中,我们可能需要使用更加复杂的校验机制,例如使用数据库来存储用户名和密码,或者使用OAuth2进行身份验证。

    CXF V3.2.4 实现的WebService调用(带安全认证)

    我们需要创建该拦截器并设置适当的属性,如`wsse:UsernameToken`用于用户名和密码认证,或者`wsse:Security`用于更复杂的认证机制。 ```java WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(); HashMap,...

    Cxf客户端及服务器端,实现客户端和服务器端的权限验证

    例如,可以使用X.509证书进行客户端和服务器端的身份验证,或者使用UsernameToken来传递用户名和密码。此外,还可以使用加密和签名策略来保护消息内容。 为了实现这些功能,我们需要进行以下步骤: 1. **服务器端...

    使用cxf的webservice安全验证

    1. **基本认证**:这是最简单的身份验证方式,涉及到用户名和密码的传递。在CXF中,可以通过在Spring配置文件中添加`&lt;security:basic-authentication&gt;`元素来启用此功能。 2. **Digest认证**:相比基本认证,Digest...

    使用CXF和camel-cxf调用webservice

    本篇文章将详细介绍如何使用CXF和camel-cxf调用Web服务,以及这两个工具的核心功能和使用场景。 Apache CXF是一个全面的服务开发框架,它支持多种Web服务标准,如SOAP、WS-*协议栈、RESTful服务等。CXF提供了丰富的...

    cxf-3.1.5 和 cxf-3.3.13 JAVA7和JAVA8对应CXF资源

    JAVA7和JAVA8对应CXF资源 WebService CXF 用了一天时间找,官网打不开,国内要积分,下下来又永不了。最后终于搞到手,上传上来分享给大家。 jdk版本 CXF版本 java 9及以上 3.3.x java 8 3.x java 7 2.2x --- ...

    cxf 安全验证例子

    1. **基本认证**:基于HTTP的基本认证,需要提供用户名和密码。CXF可以通过设置`&lt;http-basic&gt;`元素来启用此功能。 2. **digest认证**:比基本认证更安全,因为它不直接传输密码。CXF同样支持通过`&lt;http-digest&gt;`...

    RCP和CXF做的例子

    【标题】"RCP和CXF做的例子"指的是一个基于 Rich Client Platform (RCP) 和 Apache CXF 的应用程序示例。RCP 是 Eclipse 平台的一部分,它提供了一个框架,用于构建功能丰富的桌面应用程序。而 CXF 是一个开源服务...

    springboot整合CXF发布webservice和客户端调用

    - 官方文档:Apache CXF和SpringBoot的官方文档提供了详细的配置和使用指南。 - 社区论坛:Stack Overflow和其他技术社区有很多关于SpringBoot+CXF整合的问题和解答,可以作为参考。 6. **调试与测试** - 使用`...

    02.CXF功能概述_CXF发展历史和使用CXF开发WebService服务器端

    【标题】"02.CXF功能概述_CXF发展历史和使用CXF开发WebService服务器端"主要探讨了Apache CXF框架在Web服务领域的应用及其发展历程,同时也涵盖了如何利用CXF来构建一个高效的WebService服务器端。 Apache CXF是一...

    用CXF开发SOAP接口

    【标题】"用CXF开发SOAP接口"涉及的是在Java环境中使用Apache CXF框架来创建、实现和消费基于SOAP(Simple Object Access Protocol)的Web服务。SOAP是一种用于交换结构化和类型化的信息的协议,常用于企业级应用...

    cxf+ws-security-JAR

    【标题】"cxf+ws-security-JAR"指的是Apache CXF框架与WS-Security整合创建的JAR包,用于在Web服务(Web Service)中实现基于用户名和密码的身份验证安全调用。 【描述】该描述指出,这个项目是关于如何使用Apache ...

    我的cxf与ws-security

    2. **设置WS-Security策略**:使用WS-Policy表达安全需求,如必须提供用户名和密码、使用特定的加密算法等。 3. **处理令牌**:根据安全策略,可能需要处理不同类型的令牌,如用户名令牌(UsernameToken)和X.509...

    cxf-webservice

    这篇博客文章(尽管描述为空,但可以从博文链接中获取更多信息)可能涵盖了使用CXF框架创建和部署Web服务的基本步骤,以及如何在Spring环境中集成CXF。CXF与Spring的结合使用,使得服务的生命周期管理变得更加简单,...

    Apache Cxf 安全认证

    客户端配置包括使用`WSS4JOutInterceptor`拦截器和`ClientPasswordCallback`类来加载用户名和密码,而服务端则使用`WSS4JInInterceptor`拦截器和`ServerPasswordCallback`类来验证传入请求的用户身份。 在客户端,`...

    cxf做webservice接口

    Apache CXF 是一个开放源代码框架,提供了用于方便地构建和开发 Web 服务的可靠基础架构。它允许创建高性能和可扩展的服务,您可以将这样的服务部署在 Tomcat 和基于 Spring 的轻量级容器中,以及部署在更高级的...

Global site tag (gtag.js) - Google Analytics