2015-05-20 3 views
2

Я пытаюсь реализовать настройку Spring Oauth2 с сервером авторизации в приложении самостоятельно и серверах ресурсов в отдельных приложениях.Spring OAuth2 Токен доступа в HTTP-заголовке

скажу с самого начала, что из-за существующие ограничения системы, я вынужден не использовать старые версии Spring/Spring Security до того времени, что мы можем планировать в модернизации системы:

  • Spring : 3.1.1 Spring
  • безопасности: 3.2.7
  • Spring OAuth: 1.0.5

у меня все работает, однако, когда я прошу ограниченный ресурс с сервера Resouce, у меня есть для обеспечения access_token в качестве параметра запроса.

Я бы предпочел предоставить это как HTTP-заголовок. Есть ли встроенная функциональность для этого в Spring Security Oauth?

ресурсов сервер Config

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:oauth="http://www.springframework.org/schema/security/oauth2" 
    xmlns:sec="http://www.springframework.org/schema/security" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 

    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
    http://www.springframework.org/schema/security 
    http://www.springframework.org/schema/security/spring-security-3.2.xsd 
    http://www.springframework.org/schema/security/oauth2 
    http://www.springframework.org/schema/security/spring-security-oauth2-1.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.1.xsd"> 

    <!-- Resource Server Filter --> 
    <oauth:resource-server id="resourceServerFilter" resource-id="someResourceId" token-services-ref="tokenServices"/> 
    <!-- END Resource Server Filter --> 

    <!-- Protected resources --> 
    <http pattern="/rest/BasicService/**" create-session="stateless" xmlns="http://www.springframework.org/schema/security" entry-point-ref="oauthAuthenticationEntryPoint"> 
     <anonymous enabled="false"/> 
     <intercept-url pattern="/rest/BasicService/**" access="ROLE_USER"/> 
     <custom-filter ref="resourceServerFilter" before="PRE_AUTH_FILTER"/> 
     <access-denied-handler ref="oauthAccessDeniedHandler"/> 
    </http> 
    <!-- END Protected resources --> 

    <!-- Authentication --> 
    <sec:authentication-manager xmlns="http://www.springframework.org/schema/security" /> 
    <bean id="oauthAuthenticationEntryPoint" class="org.springframework.security.oauth2.provider.error.OAuth2AuthenticationEntryPoint" xmlns="http://www.springframework.org/schema/beans"/> 
    <bean id="oauthAccessDeniedHandler" class="org.springframework.security.oauth2.provider.error.OAuth2AccessDeniedHandler"/> 
    <!-- END Authentication -->   

    <!-- Token Store -->  
    <bean id="tokenStore" class="org.springframework.security.oauth2.provider.token.JdbcTokenStore"> 
     <constructor-arg ref="myJdbcTokenStore" /> 
    </bean> 

    <bean id="myJdbcTokenStore" class="org.springframework.jndi.JndiObjectFactoryBean"> 
     <property name="jndiName" value="java:comp/env/jdbc/someJNDIDatabaseName"/> 
    </bean> 

    <bean id="tokenServices" class="org.springframework.security.oauth2.provider.token.DefaultTokenServices"> 
     <property name="tokenStore" ref="tokenStore"/> 
    </bean> 
    <!-- END Token Store --> 

</beans> 
+1

Добавить Authorization заголовок, как этот :::: Authorization: Bearer <ваш доступ лексема здесь> –

+0

Ах, я попробовал заголовок авторизации. Однако я забыл на токен. – dooffas

ответ

2

Как уже отмечался в комментариях по prtk_shah, типу лексемы должен быть добавлен в заголовок авторизации.

Авторизация: Знаменосец

2

Если вы используете пружинные загрузки магию, может быть, следуя their example, вы только хотите установить authenticationScheme в header. Задание выполнено.

security: 
    oauth2: 
    client: 
     ... 
     authenticationScheme: header 
Смежные вопросы