我为我的组织创建了一个Springboot Restful Application。 我有要求,
我已成功在GAE(使用SAML)上部署Springboot应用程序。
我已经在localhost上使用Mock版本的IdP(类似于SSO-Circle)测试了SAML / SSO,它运行顺畅。
但是,当我在GAE上部署应用程序时(使用模拟版本的IdP或QA版本的IdP),我开始
InResponseToField与发送的消息
不对应
,我确实在Spring docs here中找到了解决方法。
但是, 我没理解,即使经过激烈的调试,为什么我首先得到了这个错误(虽然我在应用修复后会得到一个不同的错误,我将在后面进一步描述)。
很多令人困惑的部分是当我查看App Engine日志时,我发现了,
HttpSessionStorage:将消息a3bbxxxx6c17存储到 会话BXtxxxx1CCw
HttpSessionStorage:找不到消息a3bbxxxx6c17 会话BXtxxxx1CCw
以及例外
SAMLException:响应的InResponseToField不对应 发送消息a3bbxxxx6c17
此外,当我执行spring文档所说的内容时,"可以通过重新配置上下文提供程序来禁用InResponseToField的检查",我注意到发生了循环,即
我也不明白为什么会发生这种情况,但我的假设是这可能是由于上述问题。 有什么想法吗?
答案 0 :(得分:0)
通过添加额外配置解决了这个问题。
发生这种情况的事实是Spring并不知道App Engine(GAE)上的会话,我们需要做的就是告诉它。
@Configuration
@EnableWebSecurity
//Needed for Spring to know about the HttpSession
@EnableSpringHttpSession
@EnableGlobalMethodSecurity(securedEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
//And this bean
@Bean
public MapSessionRepository sessionRepository() {
return new MapSessionRepository();
}
// all other configurations
}