2017-05-09 55 views
0

我有一个使用Feign客户端的spring启动项目,并通过OAuth和JSON Web令牌处理授权。授权后,您必须通过GET参数发送访问令牌。但不是将它作为GET参数发送,我想在标题内发送它。我找不到一个办法。任何人都知道吗?Spring Boot:在标题中发送JWT(OAuth)

我的配置:

@Configuration 
@EnableAuthorizationServer 
public class AuthorizationServerConfiguration extends AuthorizationServerConfigurerAdapter { 

    @Autowired 
    @Qualifier("authenticationManagerBean") 
    private AuthenticationManager authenticationManager; 

    @Override 
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception { 

     clients.inMemory() 
       .withClient(oAuth2ClientName) 
       .authorizedGrantTypes("password", "authorization_code", "refresh_token", "implicit") 
       .authorities("ROLE_CLIENT", "ROLE_TRUSTED_CLIENT") 
       .scopes("read", "write", "trust") 
       .secret(oAuth2ClientSecret) 
       .accessTokenValiditySeconds(oAuth2AccessTokenValidSecs). 
       refreshTokenValiditySeconds(oAuth2RefreshTokenValidSecs); 
    } 

    @Override 
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception { 
     endpoints.tokenStore(tokenStore()) 
       .accessTokenConverter(accessTokenConverter()) 
       .authenticationManager(authenticationManager); 
    } 

    @Bean 
    public TokenStore tokenStore() { 
     return new JwtTokenStore(accessTokenConverter()); 
    } 

    @Bean 
    public JwtAccessTokenConverter accessTokenConverter() { 
     JwtAccessTokenConverter converter = new JwtAccessTokenConverter(); 
     converter.setSigningKey(jwtSigningKey); 
     return converter; 
    } 

    @Bean 
    @Primary 
    public DefaultTokenServices tokenServices() { 
     DefaultTokenServices defaultTokenServices = new DefaultTokenServices(); 
     defaultTokenServices.setTokenStore(tokenStore()); 
     defaultTokenServices.setSupportRefreshToken(true); 
     return defaultTokenServices; 
    } 
} 

我已经GOOGLE了,但我发现这个东西是一种自我设计的,看起来相当复杂。

回答

0
  1. 作为授权服务,客户端必须通过调用/oauth/token的GET/POST API来生成令牌。在clientId,clientSecret,用户名和密码旁边,您必须标识grant_type。无论如何,这个调用生成一个访问令牌作为JWT令牌。
  2. 客户端获取jwt令牌,从中提取访问令牌并将其发送到资源服务器(以下是您的问题)授权承载头。同样的事情也该Authorization Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJhZG1pbiIsInNjb3BlIjpbInJlYWQiLCJ3cml0ZSJdLCJleHAiOjE0OTUxMjE0NzYsImF1dGhvcml0aWVzIjpbIlJPTEVfQURNSU4iLCJST0xFX1VTRVIiXSwianRpIjoiNGYyNzQxMmMtNzkyOC00MWE5LTliMjQtN2I4ZmNmMTdiOGRhIiwidGVuYW50IjoidDEiLCJjbGllbnRfaWQiOiJjbGllbnQxIn0.Hwo7T8cAEFVm2NvXQUURiV2uiVz0nHz6RtXbOrFzGaK09TnTJJQmY8VKXsOble7prkveWBqLpWJk9J-9PRCntPW2Tsh5bjQJoFkkfHvT0Vc0TFarbFOh7St567rv5w0mYBNCxD28CM6dv_FHiz5wIoeEUeqQFIqojE3qo-aoT0o1ts-mO-Qmz-Dtla4-wGAYVgs84gQQ_n-U0kZzk_F09iHMgZRAIWq1ot2O6EZ8HHzaHA1gTsq5iWOZyxZAkGO0MTRyZir6vf8PoCHMn2Ge1uePl2NS0-UI5E8ozs2EXyGRHY6p-ZQTGvrUIObf_ZBQGgd37EoDBkrPK65kVqpZfw
  3. 资源服务器必须验证JWT访问令牌,如果资源服务器与授权服务器捆绑的资源服务器的配置取决于,所以他们都在同一个Spring上下文存在。
相关问题