【问题标题】:reconfiguring BindingProvider for openID connect为 openID 连接重新配置 BindingProvider
【发布时间】:2017-07-04 12:00:41
【问题描述】:

我们正在尝试更改我们的用户密码soap webservice 以使用openID Connect。 因此,Web 服务身份验证代码在标头中查找包含“Bearer”的 Authorization 标头。

我只是想写一个网络服务,这就是我们目前设置用户名和密码的方式。

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 年),所以我希望从那时起必须提供更好的解决方案。 Add SOAP header object using pure JAX-WS

【问题讨论】:

    标签: java web-services soap java-8


    【解决方案1】:

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

    Map<String, List<String>> headers = new LinkedHashMap<>();
    
    headers.put("Authorization", Collections.singletonList("Bearer " + token));
    
    binding.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, headers);
    

    【讨论】:

      猜你喜欢
      • 2017-07-18
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      相关资源
      最近更新 更多