Spring Boot 2.0 web flux自定义身份验证 - 如何使用?

时间:2018-02-22 19:52:23

标签: spring security reactive spring-webflux

有很多Spring Boot 2.0安全性最小配置的例子,根据您尝试的里程碑或候选版本而编译或不编译。

什么是 HTTP Basic的最小配置,它将(1)让我访问HTTP请求(标题,cookie等)并调用我自己的身份验证管理器?

我想查看标题和Cookie,并根据用户的身份以及用户是否经过身份验证来确定。我这样做应该对这个答案无关紧要 - 问题是,为了让我能够连接到安全基础设施,最小的Spring安全配置是什么,以便我的身份验证存在于被动端点?

编辑:

这适用于Spring Boot 2.0.0.RC2,所以我的问题可能是,这是将自定义身份验证引入Spring Security的正确方法吗?

@Configuration
@EnableWebFluxSecurity
public class SecurityConfiguration {

    @Bean
    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {

        AuthenticationWebFilter authenticationFilter = new AuthenticationWebFilter(authentication -> {
            authentication.setAuthenticated(true);
            return Mono.just(authentication);
        });

        authenticationFilter.setAuthenticationConverter(serverWebExchange ->
                Mono.just(new AbstractAuthenticationToken(new ArrayList<>()) {
                    @Override
                    public Object getCredentials() {
                        return null;
                    }

                    @Override
                    public Object getPrincipal() {
                        return "jim";
                    }
                }));

        return http.addFilterAt(authenticationFilter, SecurityWebFiltersOrder.FORM_LOGIN)
                .authorizeExchange()
                .anyExchange()
                .authenticated()
                .and()
                .build();
    }
}

你可以想象在转换器中,我可以通过serverWebExchange查看请求,并检查我希望的任何头文件或cookie,稍后在上层lambda(代表ReactiveAuthenticationManager)我可以实际决定是否是否应该进行身份验证。

0 个答案:

没有答案