求非云环境下Spring Boot 3 + ADFS的SAML 2.0 SSO实现示例
Spring Boot 3 对接ADFS实现SAML 2.0单点登录(非云环境)示例
核心配置文件(application.yml)
替换官方示例配置,适配ADFS的核心配置如下,注意将占位符替换为实际环境信息:
spring: security: saml2: relyingparty: registration: adfs: # 替换为你的ADFS服务器元数据地址 assertingparty: metadata-uri: "https://your-adfs-server/FederationMetadata/2007-06/FederationMetadata.xml" # SP签名用的私钥和证书路径 signing: credentials: - private-key-location: "classpath:private.key" certificate-location: "classpath:public.crt" # 单点登出配置 singlelogout: binding: POST response-url: "{baseUrl}/logout/saml2/slo"
Spring Security 配置类
通过Java代码配置SAML2的登录、登出逻辑:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.web.SecurityFilterChain; @Configuration @EnableWebSecurity public class Saml2SecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http // 所有请求需经过认证 .authorizeHttpRequests(auth -> auth.anyRequest().authenticated()) // 配置登录成功跳转页 .saml2Login(saml2 -> saml2.defaultSuccessUrl("/home", true)) // 配置登出成功跳转页 .saml2Logout(saml2 -> saml2.logoutSuccessUrl("/")); return http.build(); } }
对接ADFS的关键注意点
- ADFS信赖方配置:在ADFS管理控制台添加信赖方信任,导入Spring Boot应用的SAML元数据(访问地址为
{你的应用域名}/saml2/service-provider-metadata/adfs),同时配置声明规则,将ADFS中的用户属性(如用户ID、邮箱)映射到SAML断言中。 - 证书信任:测试环境可使用自签证书,但需将SP的公钥证书导入ADFS信任存储;生产环境建议使用CA签发的证书。
- 回调地址一致性:ADFS中配置的回复URL必须与Spring Boot应用的断言消费地址一致,默认地址为
{你的应用域名}/login/saml2/sso/adfs,若修改配置需同步更新ADFS设置。 - 元数据更新:ADFS元数据变更后,Spring Boot应用会自动拉取最新数据,也可手动触发刷新。
内容的提问来源于stack exchange,提问作者Learn2Dev
相关产品推荐
相关产品推荐

