У меня есть приложение, которое использует Spring Source OAuth2 в качестве клиента для получения пользовательских данных с сервера ресурсов и создания локального пользователя.Я продолжаю получать сообщение об ошибке, когда OAuth2ClientContextFilter пытается извлечь токен:
org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [org.springframework.security.oauth2.common.OAuth2AccessToken] and content type [application/x-javascript;charset=utf-8]
Я понимаю, что MediaType по умолчанию - 'application / json', поэтому я попытался настроить MappingJacksonHttpMessageConverter следующим образом:
<bean id="jacksonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<bean class="org.springframework.http.MediaType">
<constructor-arg value="application"/>
<constructor-arg value="x-javascript"/>
<constructor-arg value="UTF-8"/>
</bean>
</list>
</property>
</bean>
Я также попробовал аргумент конструктора 'ALL', который должен поддерживать */*
типы контента, но не повезло.См. http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/http/MediaType.html
Другая важная информация заключается в том, что я сейчас использую всю конфигурацию XML.Я только что обновил наше приложение 2.5 до 3.1.1.Я использую OAuth2RestTemplate в фильтре PRE_AUTH с пружинной безопасностью, а не в контроллере.Поэтому я не использую аннотации для сопоставления остальных вызовов.Я пытался добавить <context:annotation-config/>
, но это не имело значения.
Я просто вызываю мой компонент службы OAuth из моего пользовательского AbstractPreAuthenticatedProcessingFilter.Когда служебный компонент пытается выполнить вызов rest для пользовательских данных, выдается исключение, запускающее OAuth2ClientContextFilter, который пытается получить токен.Вот моя конфигурация служебного компонента OAuth2:
<bean id="reprintsOauthService" class="com.coral.user.ReprintsOauthService">
<property name="reprintsUserInfoUrl" value="https://www.demo.com/api/userinfo.ashx" />
<property name="reprintsRestTemplate">
<bean class="org.springframework.security.oauth2.client.OAuth2RestTemplate">
<constructor-arg ref="reprintsResource"/>
<property name="messageConverters">
<list>
<ref bean="jacksonConverter"/>
</list>
</property>
</bean>
</property>
</bean>
Я что-то упустил?Почему Джексон не отображает ответ?