我正在检查最新的 Spring 授权服务器 v0.2.0 并发现在提供的
示例授权服务器上配置了两个
formLogin()
。
一个是AuthorizationServerConfig.java:
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public SecurityFilterChain authorizationServerSecurityFilterChain(HttpSecurity http) throws Exception {
OAuth2AuthorizationServerConfiguration.applyDefaultSecurity(http);
return http.formLogin(Customizer.withDefaults()).build();
}
另一个是DefaultSecurityConfig.java:
@Bean
SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests(authorizeRequests ->
authorizeRequests.anyRequest().authenticated()
)
.formLogin(withDefaults());
return http.build();
}
我的问题是:
formLogin()
formLogin()
我应该更改哪一个?在
formLogin()
中进行AuthorizationServerConfig
配置的原因纯粹是“方便配置”,因为当当前请求未经过身份验证时,它将设置LoginUrlAuthenticationEntryPoint
并执行重定向到/login
。
例如,当客户端重定向到
/oauth2/authorize
并且用户未经过身份验证时,用户将被重定向到 /login
,这将匹配由 SecurityFilterChain
NOT DefaultSecurityConfig
定义的 AuthorizationServerConfig
。
基本上,
formLogin()
中的AuthorizationServerConfig
的唯一目的是执行到/login
的重定向,最终与DefaultSecurityConfig
SecurityFilterChain
匹配。