Spring 安全 XML 配置和 Spring SAML Java 配置

Spring Security XML configuration and Spring SAML in Java configuration

我在我的一个项目中使用 Spring 安全性,现在想引入 Spring SAML。到目前为止,我使用了 Spring 的 XML 配置。我可以使用基于 Java 的配置来集成 SAML 吗?

我是 SAML 集成的新手。

您可以使用 xml 配置进行 SAML 集成。作为初学者很难从头开始创建它,因此我建议您下载 spring saml 示例应用程序并基于它创建您的配置。与现有应用程序的集成只是 spring 安全集成。

是的,您可以使用 Java 配置 Spring SAML,就像使用其他 Spring 安全性一样。

您需要一个 WebSecurityConfig class,配置 class 像这样

   protected void configure(HttpSecurity http) throws Exception {
    http
        .httpBasic()
            .authenticationEntryPoint(samlEntryPoint());
    http
        .csrf()
            .disable();
    http
        .addFilterBefore(metadataGeneratorFilter(), ChannelProcessingFilter.class)
        .addFilterAfter(samlFilter(), BasicAuthenticationFilter.class);
    http        
        .authorizeRequests()
        .antMatchers("/").permitAll()
        .antMatchers("/error").permitAll()
        .antMatchers("/saml/**").permitAll()
        .anyRequest().authenticated();
    http
        .logout()
            .logoutSuccessUrl("/");
}

您只需要使用 Java 将所有不同的 bean 编写在一起,例如像这样设置 SecurityFilterChain

    public FilterChainProxy samlFilter() throws Exception {
    List<SecurityFilterChain> chains = new ArrayList<SecurityFilterChain>();
    chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/login/**"),
            samlEntryPoint()));
    chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/logout/**"),
            samlLogoutFilter()));
    chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/metadata/**"),
            metadataDisplayFilter()));
    chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/SSO/**"),
            samlWebSSOProcessingFilter()));
    chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/SSOHoK/**"),
            samlWebSSOHoKProcessingFilter()));
    chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/SingleLogout/**"),
            samlLogoutProcessingFilter()));
    chains.add(new DefaultSecurityFilterChain(new AntPathRequestMatcher("/saml/discovery/**"),
            samlIDPDiscovery()));
    return new FilterChainProxy(chains);
}

以这个项目https://github.com/vdenotaris/spring-boot-security-saml-sample为例,了解它是如何完成的。 com.vdenotaris.spring.boot.security.saml.web.config.WebSecurityConfig.java 显示秘制酱料的成分。