2010-01-13 3 views
3

weblogic 10.3에서 사용할 수있는 API를 사용하여 웹 서비스 클라이언트 프로토 타입을 만들었습니다. 대신 Metro 2.0을 사용해야한다고 들었습니다. 이미 다른 프로젝트에 사용 중입니다. WSDL에 보안 정책 정보가 포함되어 있지 않지만 각 메서드 호출에 UsernameToken이 필요하다는 문제가 있습니다. weblogic에서는 자체 정책 XML 파일을 작성하고 서비스를 인스턴스화 할 수 있었지만 (아래 참조) Metro를 사용하여 동일한 작업을 수행하는 방법을 파악할 수는 없습니다.메트로 UsernameToken 정책

policy.xml이

<?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 (웹 로직) 내가 그러나 나는를 보내도록 구성하는 방법을 알아낼 수 없습니다 메트로를 사용하여 내 프록시 클래스를 생성 할 수 있어요

 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); 

... 

사용자 이름 토큰. 나는 웹에서 여러 가지 다른 예를 시도해 보았다. 어떤 도움을 주시면 감사하겠습니다.

답변

0

Implementing the WS-Security UsernameToken Profile for Metro-based web services을 확인하십시오. 이 자습서는 과거에 도움이되었습니다.

+0

감사합니다. 필자는이 자습서를 사용하여 WSDL을 수정하여 정책을 설정할 수있었습니다. 프로그래밍 방식으로 설정할 수있는 Weblogic과 비슷한 접근법이 있기를 바랬습니다. – Rodney

+0

WSDL을 수정할 필요가없는 메소드를 원합니다. 제 경우에는 WSDL이 제 3 자에 의해 유지되고 거기에 무엇이 들어가는지를 제어 할 수 없습니다. –