Oauth2实战参数解析

Oauth2实战之client_credentials模式 参数解析

    • postman 参数分析
    • 代码块 参数分析

postman 参数分析

使用postman获取token,url上填写 http://localhost:9050/oauth/token?grant_type=client_credentials
Oauth2实战参数解析_第1张图片
1)grant_type设置授权模式 此处为客户端模式 client_credentials


代码块 参数分析

@Configuration
@EnableAuthorizationServer
public class Oauth2AuthorizationServer extends AuthorizationServerConfigurerAdapter {

    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
        DefaultTokenServices defaultTokenServices = new DefaultTokenServices();
        defaultTokenServices.setSupportRefreshToken(true);
        defaultTokenServices.setReuseRefreshToken(true);
        clients.inMemory()
                .withClient("southAssistant")
                .secret(passwordEncoder().encode("southAssistantsecret"))
                .authorizedGrantTypes("client_credentials", "refresh_token")
                .accessTokenValiditySeconds(60000*24*7)
                .scopes("south_assistant");
    }
}

1).withClient() 设置clientId
2).secret() 设置秘钥
3).authorizedGrantTypes() 设置授权类型,可同时支持多种,中间用逗号隔开
4).accessTokenValiditySeconds() 设置token有效时长
5).scopes() 设置授权范围标识



@Configuration
@EnableResourceServer
public class Oauth2ResourceServer extends ResourceServerConfigurerAdapter {
    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().anyRequest().authenticated().and()
                .requestMatchers().antMatchers("/southAssistant/**");
    }
}

1).antMatchers("/southAssistant/**") 过滤掉非/api/开头的请求,如果不用antMatcher,所有请求都会进入,进入的请求只有两条路,允许通过(permitall)或者导向login(authenticated)

2)匹配规则
.antMatchers("/admin/**").hasRole(“ADMIN”)
.antMatchers("/admin/login").permitAll()
范围小的放在前面,范围大的放在后面,想法的话范围小的就不会匹配,按照范围大的处理。
比如上面,/admin/login按照hasRole(“ADMIN”)处理。

你可能感兴趣的:(硬杠oauth2,java,oauth2,spring,boot,后端)