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);
...
사용자 이름 토큰. 나는 웹에서 여러 가지 다른 예를 시도해 보았다. 어떤 도움을 주시면 감사하겠습니다.
감사합니다. 필자는이 자습서를 사용하여 WSDL을 수정하여 정책을 설정할 수있었습니다. 프로그래밍 방식으로 설정할 수있는 Weblogic과 비슷한 접근법이 있기를 바랬습니다. – Rodney
WSDL을 수정할 필요가없는 메소드를 원합니다. 제 경우에는 WSDL이 제 3 자에 의해 유지되고 거기에 무엇이 들어가는지를 제어 할 수 없습니다. –