【发布时间】:2011-01-20 08:17:48
【问题描述】:
我正在尝试创建一个独立的客户端来使用一些 Web 服务。我必须将我的用户名和密码添加到 SOAP 标头。我尝试按如下方式添加凭据:
OTSWebSvcsService service = new OTSWebSvcsService();
OTSWebSvcs port = service.getOTSWebSvcs();
BindingProvider prov = (BindingProvider)port;
prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "myusername");
prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "mypassword");
...
当我在服务上调用方法时,出现以下异常:
com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5048E: One of "SOAP Header" elements required.
我做错了什么?如何将这些属性添加到 SOAP 标头?
已编辑:我使用的是 JDK6 中包含的 JAX-WS 2.1。我现在正在使用 JAX-WS 2.2。我现在得到以下异常:
com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5509E: A security token whose type is [http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken] is required.
我该如何创建这个令牌?
【问题讨论】:
-
目前正在使用 SOAP 并遇到同样的问题。在阅读了这个问题的所有答案之后,我有一种想要退出编程的感觉,我喜欢这个。老实说,我理解为什么现在每个人都在使用 REST,以及为什么 SOAP 是一种本不应该存在的可怕技术......
-
特别感谢@hello_earth,他指出了其他人只会提供错误线索的确切地方。
标签: java web-services soap jax-ws ws-security