我使用的是Sping Boot 应用程序和最新稳定版本的Spring Boot和Sprign Security。我使用SAML2对ADFS IDP进行身份验证。这对所有GET请求都有效。现在我需要使用PUT和POST,因此我想禁用csrf。
使用这段代码,我尝试禁用csrf:
@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().and().cors().disable();
}
}
但是这样做时,完整的SAML身份验证会丢失,并且不会执行单点登录等操作。
spring:
security:
saml2:
relyingparty:
registration:
DemoApp:
entity-id: urn:id:demo-app
identityprovider:
entity-id: "http://adfs.local/adfs/services/trust"
metadata-uri: "https://adfs.local/FederationMetadata/2007-06/FederationMetadata.xml"
singlesignon:
url: "https://adfs.local/adfs/ls"
sign-request: true
如何禁用csrf并保持SAML2正常工作?
2条答案
按热度按时间jjhzyzn01#
不赞成使用WebSecurityConfigurerAdapter。请使用SecurityFilterChain Bean来配置HttpSecurity,或使用WebSecurityCustomizer Bean来配置WebSecurity。请尝试以下操作
stszievb2#
下面的Java配置将在Spring security 5.7中禁用CSRF保护
有关详细信息,请访问以下链接
https://docs.spring.io/spring-security/reference/servlet/exploits/csrf.html#servlet-csrf-configure-disable