首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >城域UsernameToken策略

城域UsernameToken策略
EN

Stack Overflow用户
提问于 2010-01-13 10:40:38
回答 1查看 1.6K关注 0票数 3

我使用WebLogic10.3中提供的api创建了一个web服务客户端原型。我被告知我需要使用Metro 2.0 (它已经被用于其他项目)。我遇到的问题是,WSDL不包含任何安全策略信息,但是每个方法调用都需要一个UsernameToken。在weblogic中,我能够编写自己的策略xml文件并使用它实例化我的服务(见下文),但是我似乎不知道如何使用Metro来做同样的事情。

Policy.xml

代码语言:javascript
复制
 <?xml version="1.0"?>  
     <wsp:Policy  
       xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"  
       xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512">  
       <sp:SupportingTokens>  
         <wsp:Policy>  
           <sp:UsernameToken  
             sp:IncludeToken="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200512/IncludeToken/AlwaysToRecipient">  
             <wsp:Policy>  
               <sp:WssUsernameToken10/>
               <sp:HashPassword/>
             </wsp:Policy>  
           </sp:UsernameToken>  
         </wsp:Policy>  
       </sp:SupportingTokens>  
     </wsp:Policy>

Client.java (Weblogic)

代码语言:javascript
复制
      ClientPolicyFeature cpf = new ClientPolicyFeature();
      InputStream asStream =  WebServiceSoapClient.class.getResourceAsStream("Policy.xml");  
      cpf.setEffectivePolicy(new InputStreamPolicySource(asStream)); 

      try
      {
         webService = new WebService(new URL("http://192.168.1.10/WebService/WebService.asmx?wsdl"), new QName("http://testme.com", "WebService"));
      }
      catch ( MalformedURLException e )
      {
         e.printStackTrace();
      }

      WebServiceSoap client = webService.getWebServiceSoap(new WebServiceFeature[] {cpf});    

      List<CredentialProvider> credProviders = new ArrayList<CredentialProvider>();    
      String username = "user";
      String password = "pass";
      CredentialProvider cp = new ClientUNTCredentialProvider(username.getBytes(), password.getBytes());     
      credProviders.add(cp);

      Map<String, Object> rc = ((BindingProvider) client).getRequestContext();  
      rc.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credProviders);

... 

我可以使用Metro生成我的代理类,但是我不知道如何配置它来发送UsernameToken。我已经尝试了几个不同的网络例子,但都没有成功。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2010-01-14 12:47:10

也许你可以去看看Implementing the WS-Security UsernameToken Profile for Metro-based web services。这篇教程过去对我很有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2054014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档