有很多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)我可以实际决定是否是否应该进行身份验证。