Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CXF+;wsdl2java+;认证_Java_Web Services_Cxf - Fatal编程技术网

CXF+;wsdl2java+;认证

CXF+;wsdl2java+;认证,java,web-services,cxf,Java,Web Services,Cxf,我使用wsdl2java命令从WSDL为我的客户机创建了jar。现在,我需要知道如何对客户端进行身份验证以完成操作 我正在使用CXF 2.7.16。我使用生成的类MyApp_服务创建了我的服务,我正在努力解决这个问题。有没有一种简单的方法告诉我的客户机应该使用哪些凭据来访问web服务 我读过关于Spring配置的文章,但是我无法确定它是否适用于我的案例,以及如果适用的话如何处理。我尝试将MyApp_服务类强制转换为BindingProvider,以便使用包含的方法将用户名和密码属性放入具有值的上

我使用wsdl2java命令从WSDL为我的客户机创建了jar。现在,我需要知道如何对客户端进行身份验证以完成操作

我正在使用CXF 2.7.16。我使用生成的类MyApp_服务创建了我的服务,我正在努力解决这个问题。有没有一种简单的方法告诉我的客户机应该使用哪些凭据来访问web服务

我读过关于Spring配置的文章,但是我无法确定它是否适用于我的案例,以及如果适用的话如何处理。我尝试将MyApp_服务类强制转换为BindingProvider,以便使用包含的方法将用户名和密码属性放入具有值的上下文中。但是,MyApp_服务无法强制转换为BindingProvider

这是我有史以来第一个web服务客户端应用程序。因此,任何帮助都将受到欢迎

更新2015-05-28:我试图定义身份验证策略,但似乎不起作用。代码如下:

        Client client = JaxWsDynamicClientFactory.newInstance().createClient(wsdlUrl);
        ClientImpl clt = (ClientImpl) client;
        HTTPConduit cc = (HTTPConduit) clt.getConduit();

        org.apache.cxf.configuration.security.ObjectFactory secOF = new org.apache.cxf.configuration.security.ObjectFactory();
        AuthorizationPolicy ap = secOF.createAuthorizationPolicy();
        ap.setUserName(usagerWS);
        ap.setPassword(mdpWS);
        ap.setAuthorizationType("Basic");

        cc.setAuthorization(ap);
通过WireShark嗅探,HTTP请求中显然缺少授权标头


缺少什么?

问题已解决,以下是解决方案:

        MyApp_Service service = new MyApp_Service(wsdlUrl, new QName(namespace, serviceName));
        MyApp port = service.getMyApp();

        // Set credentials
        Map<String, Object> reqCtxt = ((javax.xml.ws.BindingProvider) port).getRequestContext();
        reqCtxt.put(javax.xml.ws.BindingProvider.USERNAME_PROPERTY, username);
        reqCtxt.put(javax.xml.ws.BindingProvider.PASSWORD_PROPERTY, password);
MyApp_服务=新的MyApp_服务(wsdlUrl,新的QName(名称空间,服务名称));
MyApp端口=service.getMyApp();
//设置凭据
Map reqCtxt=((javax.xml.ws.BindingProvider)端口).getRequestContext();
reqCtxt.put(javax.xml.ws.BindingProvider.USERNAME\u属性,用户名);
reqCtxt.put(javax.xml.ws.BindingProvider.PASSWORD_属性,密码);

不再使用动态客户端。仅使用wsdl2java生成的类。

3年后:谢谢