我正在尝试实现一个简单的Web服务,部署在weblogic上,通过用户名令牌和密码摘要进行身份验证。有很多使用明文的代码示例,但我找不到任何使用摘要密码的示例。
我尝试过使用此网络服务:
@WebService
@Policies({ @Policy( uri = "../policy/usernametoken.xml" ) } )
public class Hello{
public String sayHello(String name){
return "Hello : " + name;
}
}
,使用此WS-policy文件usernametoken.xml:
<wsp:Policy
xmlns:wsp="http://www.w3.org/ns/ws-policy"
xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702" >
<sp:SupportingTokens>
<wsp:Policy>
<sp:UsernameToken sp:IncludeToken="http://docs.oasis-open.org/ws-sx/wssecuritypolicy/200702/IncludeToken/AlwaysToRecipient">
<wsp:Policy>
<sp:WssUsernameToken10/>
<sp:HashPassword />
</wsp:Policy>
</sp:UsernameToken>
</wsp:Policy>
</sp:SupportingTokens>
</wsp:Policy>
,这个客户:
public static void main(String[] args)
{
HelloService service = new HelloService();
Hello port = service.getHelloPort();
List<CredentialProvider> credProviders = new ArrayList<CredentialProvider>();
String username = "weblogic";
String password = "web1ogiC";
CredentialProvider cp = new ClientUNTCredentialProvider(username.getBytes(), password.getBytes());
credProviders.add(cp);
Map<String, Object> rc = ((BindingProvider)port).getRequestContext();
rc.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credProviders);
String result = port.sayHello("xxx1");
System.out.println("*************** RESULT from WebService ***************");
System.out.println(result);
System.out.println("******************************************************");
}
,但它不起作用。
还要通过SOAPUI工具调用digest密码,但它也无法正常工作。
任何人都可以通过提供一个工作示例或修复我的示例来帮助我吗?
编辑:我使用weblogic 12c