首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Springboot集成在Google上失败,InResponseToField不对应于发送的消息

Springboot集成在Google上失败,InResponseToField不对应于发送的消息
EN

Stack Overflow用户
提问于 2018-02-13 01:07:13
回答 1查看 482关注 0票数 0

我为我的组织创建了一个Springboot Restful应用程序。我有个要求,

  1. 用IdP (ADFS2.0)实现SAML/SSO
  2. 将应用程序部署到Google的App (GAE)上。

我已经成功地在GAE (使用SAML)上部署了Springboot应用程序。

我已经在本地主机上用模拟版本的IdP (类似于SSO-循环)对SAML/SSO进行了测试,它运行得很顺利。

但是,当我在GAE上部署应用程序(使用模拟版本的IdP或QA版本的IdP)时,我开始

InResponseToField不对应于发送的消息

,我在Spring 这里中找到了一个修复程序。

但是,即使是在密集的调试之后,我也无法理解为什么首先会出现这个错误(尽管我在应用修复后得到了一个不同的错误,稍后我将对此进行进一步的描述)。

令人困惑的是,当我查看App日志时,我发现,

  1. 在进行/saml/登录调用时,日志跟踪显示

HttpSessionStorage :将消息a3bbxxxx6c17存储到会话BXtxxxx1CCw

  1. 然后当IdP重定向到端点/saml/SSO上的应用程序时,日志会抛出一个错误,

HttpSessionStorage :会话BXtxxxx1CCw中找不到消息a3bbxxxx6c17

除了例外

SAMLException:响应的InResponseToField不对应于发送的消息a3bbxxxx6c17

  1. 我还交叉验证了从应用程序发出的SAML请求(XML)到IdP和SAML响应(XML),后者从IdP返回到应用程序,它们都有a3bbxxxx6c17消息。那么,为什么Springboot在GAE上被混淆了,并且在localhost上工作得很好。

此外,当我执行spring文档所说的“可以通过重新配置上下文提供程序来禁用InResponseToField检查”时,我注意到正在发生一个循环,即,

  1. /saml/登录-> 2. /saml/SSO -> /landing -> 3. /saml/SSO -> /landing -> 4. /saml/SSO -> /landing -> 5. /saml/SSO -> /landing .依此类推,直到IdP拒绝了请求,在很短的时间内说了太多的请求。

我也不明白为什么会发生这种情况,但我的假设是,这可能是由于上述问题。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-15 00:40:36

通过添加额外的配置解决了这个问题。

事实上,Spring并不知道App (GAE)上的会话,我们所需要做的就是告诉spring。

代码语言:javascript
复制
    @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
        }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48758041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档