2017-02-15 53 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);