我正在我的一个项目中使用Spring Security,现在想介绍Spring SAML。到目前为止,我已经使用过Spring的XML配置。我可以使用基于Java的配置集成SAML吗?
我是SAML集成的新手。
是的,您可以像其他Spring Security一样使用Java配置Spring SAML。
您需要一个带有这样的配置类的WebSecurityConfig类
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显示了秘密调味料的成分。
您可以将xml配置用于SAML集成。很难从头开始创建它,因此我建议您下载spring saml示例应用程序并基于它创建配置。与现有应用程序的集成只是spring安全性的集成。