2017-02-15 12 views
0

Мы пытаемся изменить наше пользовательское мыло webservice для использования openID Connect. Таким образом, код аутентификации webservice ищет в заголовке заголовок авторизации, содержащий «несущий».реконфигурирование BindingProvider для openID connect

Я просто пытаюсь написать веб-сервис, и в настоящее время мы настраиваем имя пользователя и пароль.

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, помещая их в контекст запроса. Например:

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

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

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