Spring Boot对接Duo做IdP的SAML认证后重定向至表单登录页问题
排查清单
- 优先排查预发环境反向代理/负载均衡的头透传配置:Spring SAML默认会基于请求原始信息生成ACS(断言消费地址),如果前置Nginx、SLB等代理没有正确透传
X-Forwarded-Proto、X-Forwarded-Host、X-Forwarded-Port头,Spring识别到的请求协议、域名会和实际访问地址不符,导致SAML响应的Destination校验失败,直接跳转登录页。可在application.properties中添加配置server.forward-headers-strategy=native开启代理头透传验证。 - 校验Duo侧配置的ACS地址与应用实际地址完全匹配:需严格匹配协议(http/https)、域名、端口、路径
/saml/SSO的大小写,任何细微差异(如末尾多斜杠、大小写错误)都会导致校验失败。 - 验证SAML响应签名校验是否通过:确认Duo侧的签名公钥已正确导入应用的SAML密钥库,无过期、格式错误问题。可添加日志配置
logging.level.org.springframework.security.saml=DEBUG开启SAML debug日志,排查是否有签名校验失败、响应过期等明确报错。 - 检查会话Cookie配置:预发环境使用HTTPS协议,需确认Spring生成的
JSESSIONIDCookie的Secure属性已正确开启,Domain属性与预发域名匹配,否则IdP跳转回应用后无法读取到之前的会话,会被判定为未认证状态跳转登录页。 - 确认Spring Security路径拦截规则:需在HttpSecurity配置中明确对
/saml/**路径放行,避免该路径被其他权限规则要求登录,导致SAML响应请求被拦截。 - 对比Duo与Okta返回的SAML断言差异:检查Duo返回的断言中NameID格式、必填用户属性是否符合应用配置要求,避免因属性缺失、格式不匹配导致后续用户信息解析失败,触发重定向登录。
内容的提问来源于stack exchange,提问作者DineshK
相关产品推荐
相关产品推荐

