添加SOAP标头对象
我们正在尝试更改我们的用户密码SOAP WebService使用OpenID Connect。因此,Web服务身份验证代码正在标题中查找包含"持票人"的授权标题。
我只是想编写一个网络服务,这是我们当前如何设置用户名和密码的方式。
public void bindPort(javax.xml.ws.BindingProvider binding)
{
String endpointUrl = (String) binding.getRequestContext().get(
BindingProvider.ENDPOINT_ADDRESS_PROPERTY);
binding.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
getEndpointUrl(endpointUrl, m_webserviceUrl));
binding.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, m_user );
binding.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, password);
我已经做了一些谷歌搜索并找到了WSBindingProvider,但由于我们支持的不同平台,因此不允许使用它们。
我看到了另一个看起来像它回答这个问题的帖子,但是代码看起来很恐怖,而且很旧(2012年),所以我希望从那以后必须提供更好的解决方案。使用纯Jax-ws
您可以通过将其放入请求上下文中传递HTTP标头。例如:
Map<String, List<String>> headers = new LinkedHashMap<>();
headers.put("Authorization", Collections.singletonList("Bearer " + token));
binding.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, headers);