我为我的组织创建了一个Springboot Restful应用程序。我有个要求,
我已经成功地在GAE (使用SAML)上部署了Springboot应用程序。
我已经在本地主机上用模拟版本的IdP (类似于SSO-循环)对SAML/SSO进行了测试,它运行得很顺利。
但是,当我在GAE上部署应用程序(使用模拟版本的IdP或QA版本的IdP)时,我开始
InResponseToField不对应于发送的消息
,我在Spring 这里中找到了一个修复程序。
但是,即使是在密集的调试之后,我也无法理解为什么首先会出现这个错误(尽管我在应用修复后得到了一个不同的错误,稍后我将对此进行进一步的描述)。
令人困惑的是,当我查看App日志时,我发现,
HttpSessionStorage :将消息a3bbxxxx6c17存储到会话BXtxxxx1CCw
HttpSessionStorage :会话BXtxxxx1CCw中找不到消息a3bbxxxx6c17
除了例外
SAMLException:响应的InResponseToField不对应于发送的消息a3bbxxxx6c17
此外,当我执行spring文档所说的“可以通过重新配置上下文提供程序来禁用InResponseToField检查”时,我注意到正在发生一个循环,即,
我也不明白为什么会发生这种情况,但我的假设是,这可能是由于上述问题。有什么想法吗?
发布于 2018-02-15 00:40:36
通过添加额外的配置解决了这个问题。
事实上,Spring并不知道App (GAE)上的会话,我们所需要做的就是告诉spring。
@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
}https://stackoverflow.com/questions/48758041
复制相似问题