java - 需要java中的安全头代码

标签 java web-services cxf soap-client

我需要访问安全网络服务。我需要在 soap 请求中传递安全 header 。请帮助我在 java 中提供自定义安全 header 代码。

要求:

   <soapenv:Header>

 <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2002/07/secext">

  <wsse:UsernameToken xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
    <wsse:Username>XYZ</wsse:Username>
    <wsse:Password Type="wsse:PasswordText">security</wsse:Password>
  </wsse:UsernameToken>

如果有人能帮助我,我将不胜感激。`

最佳答案

很明显,您想要添加一个 UsernameToken 安全 header 。至少有几种不同的方法可以做到这一点。如果您有一个包含 WS-SecurityPolicy 组件的 WSDL 服务定义,您只需设置适当的属性来定义用户名和密码值,如 this 所示。文章

如果您想直接设置它(不使用策略),您可以在您的客户端代码中这样做。这是它如何工作的示例:`

    // create the client stub
    MyService service = new MyService();
    MyServicePort stub = service.getMyServicePort();

    // configure UsernameToken security handling
    Map<String, Object> props = new HashMap<String, Object>();
    props.put(WSHandlerConstants.ACTION, WSHandlerConstants.USERNAME_TOKEN);
    props.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
    props.put(WSHandlerConstants.USER, "XYZ");
    props.put(WSHandlerConstants.PW_CALLBACK_CLASS, PasswordHandler.class.getName());
    WSS4JOutInterceptor wssOut = new WSS4JOutInterceptor(props);
    Client client = ClientProxy.getClient(stub);
    client.getOutInterceptors().add(wssOut);

...

/**
 * Callback for password used by WS-Security UsernameToken.
 */
public static class PasswordHandler implements CallbackHandler
{
    public void handle(Callback[] callbacks) {
        for (int i = 0; i < callbacks.length; i++) {
            WSPasswordCallback pc = (WSPasswordCallback)callbacks[i];
            pc.setPassword("security");
        }
    }
}

`

关于java - 需要java中的安全头代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18798179/

相关文章:

java - 如何在应用程序启动时自动注册@Entity装饰类?

java - JAXM SOAP 消息解析

java - 从属性文件创建动态 xml?

java - Apache Camel : RouteBuilder with CxfEndpoint

java - JFileChooser showOpenDialog 方法不适用于 ActionListener

java - 使用非 volatile 写入重新排序 volatile 写入

c# - 单元测试服务和模拟自动生成的 WCF 客户端代理

java - CXF xml 配置未使用 disableCNcheck ="true"进行验证

web-services - Tomcat 没有启动我的网络服务

java - 遍历文件列表以检查里面有多少行