为什么在 Spring 授权服务器中配置两个 formLogin 示例代码
Why two formLogin configured in Spring Authorization Server Sample code
我正在查看最新的 Spring Authorization Server v0.2.0 and found two formLogin()
configured on the provided sample authorizationserver。
一个是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()
我应该更改哪一个?
AuthorizationServerConfig
中 formLogin()
配置的原因纯粹是 “方便配置”,因为它将设置 LoginUrlAuthenticationEntryPoint
和当前请求未通过身份验证时执行重定向到 /login
。
例如,当客户端被重定向到/oauth2/authorize
并且用户未通过身份验证时,用户将被重定向到/login
,这将匹配由定义的SecurityFilterChain
DefaultSecurityConfig
不是 AuthorizationServerConfig
.
基本上,AuthorizationServerConfig
中的 formLogin()
的唯一目的是执行重定向到 /login
,最终匹配 DefaultSecurityConfig
SecurityFilterChain
.
我正在查看最新的 Spring Authorization Server v0.2.0 and found two formLogin()
configured on the provided sample authorizationserver。
一个是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()
我应该更改哪一个?
AuthorizationServerConfig
中 formLogin()
配置的原因纯粹是 “方便配置”,因为它将设置 LoginUrlAuthenticationEntryPoint
和当前请求未通过身份验证时执行重定向到 /login
。
例如,当客户端被重定向到/oauth2/authorize
并且用户未通过身份验证时,用户将被重定向到/login
,这将匹配由定义的SecurityFilterChain
DefaultSecurityConfig
不是 AuthorizationServerConfig
.
基本上,AuthorizationServerConfig
中的 formLogin()
的唯一目的是执行重定向到 /login
,最终匹配 DefaultSecurityConfig
SecurityFilterChain
.