传递承载令牌时,Spring Boot安全旁路antmatchers不起作用

时间:2019-01-17 09:30:37

标签: spring-boot spring-security spring-security-oauth2

我的申请中有2个端点,一个是公开的,另一个是私有的。我正在使用Spring Boot oauth2。当我使用承载令牌向公共URL发送请求时,它的访问被拒绝。这是预期吗?

当授权头不存在时,我们期望公共URL和私有URL在起作用。

请在下面找到代码。

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>Test</groupId>
    <artifactId>Test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.2.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
            <version>2.3.4.RELEASE</version>
        </dependency>
    </dependencies>
</project>

资源服务器

@Configuration
@EnableResourceServer
public class ResourceServer extends ResourceServerConfigurerAdapter {
    @Override
    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
        resources.authenticationManager(new AuthenticationManager() {

            @Override
            public Authentication authenticate(Authentication authentication) throws AuthenticationException {
                return new UsernamePasswordAuthenticationToken("User", "pass",
                        Arrays.asList(new SimpleGrantedAuthority("ADMIN")));
            }
        });
    }

    @Override
    public void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("/public").permitAll();
        http.authorizeRequests().antMatchers("/private").authenticated();

    }

}

当我使用承载令牌调用公共URL时,我不希望请求通过身份验证管理器。这可能吗。

0 个答案:

没有答案