2017-02-15 48 views
0

我们正在尝试将我们的用户密码soap webservice更改为使用openID Connect。 因此,Web服务认证代码正在头部查找包含“承载”的授权标头。重新配置BindingProvider for 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); 

我已经做了一些googleing,发现WSBindingProvider,但因为它是一个的com.sun类,我们是不允许他们使用由于我们支持不同的平台。

我看到另一篇文章看起来像回答了这个问题,但代码看起来很糟糕,而且相当老旧(2012年),所以我希望从那时起必须提供更好的解决方案。 Add SOAP header object using pure JAX-WS

回答

0

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

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

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

binding.getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS, headers);