为什么在 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();
    }

我的问题是:

AuthorizationServerConfigformLogin() 配置的原因纯粹是 “方便配置”,因为它将设置 LoginUrlAuthenticationEntryPoint 和当前请求未通过身份验证时执行重定向到 /login

例如,当客户端被重定向到/oauth2/authorize并且用户未通过身份验证时,用户将被重定向到/login,这将匹配由定义的SecurityFilterChain DefaultSecurityConfig 不是 AuthorizationServerConfig.

基本上,AuthorizationServerConfig 中的 formLogin() 的唯一目的是执行重定向到 /login,最终匹配 DefaultSecurityConfig SecurityFilterChain .