Java 为openID connect重新配置BindingProvider

Java 为openID connect重新配置BindingProvider,java,web-services,soap,java-8,Java,Web Services,Soap,Java 8,我们正在尝试将用户密码soap Web服务更改为使用openID Connect。 因此,webservice身份验证代码正在标头中查找包含“承载者”的授权标头 我只是想写一个Web服务,这就是我们目前设置用户名和密码的方式 public void bindPort(javax.xml.ws.BindingProvider binding) { String endpointUrl = (String) binding.getRequestContext().get( Binding

我们正在尝试将用户密码soap Web服务更改为使用openID Connect。 因此,webservice身份验证代码正在标头中查找包含“承载者”的授权标头

我只是想写一个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,但由于它是一个com.sun类,我们不允许使用它们,因为我们支持不同的平台


我看到另一篇文章,看起来它回答了这个问题,但是代码看起来很糟糕,而且很旧(2012年),所以我希望从那以后一定能提供更好的解决方案

您可以通过将HTTP头放入请求上下文来传递它们。例如:

Map<String, List<String>> headers = new LinkedHashMap<>();

headers.put("Authorization", Collections.singletonList("Bearer " + token));

binding.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, headers);
Map headers=newlinkedhashmap();
headers.put(“授权”、Collections.singletonList(“承载者”+令牌));
binding.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS,HEADERS);