当前位置: 首页 > 知识库问答 >
问题:

Spring SAML SSO with OKTA-更改Web应用程序上下文时的响应

周培
2023-03-14

我们在OKTA SAML SSO与Spring Security的集成方面遇到了很多问题。我们使用Spring Security的saml dsl扩展来配置身份验证,在HTTP上一切正常,但是当我们尝试使用HTTPS时,身份验证仅在应用程序部署在根(/)上下文上时才起作用。当我们将上下文更改为其他内容时,它会停止工作,并开始抛出InResponseTo字段错误,有时使用不同的配置,它会出现重定向循环。

以下是我们正在使用的配置:

        http
                .csrf()
                .disable();
        http
                .sessionManagement().sessionFixation().none();
        http
                .logout()
                .logoutSuccessUrl("/");
        http
                .authorizeRequests()
                .antMatchers("/saml*").permitAll()
                .anyRequest().authenticated()
                .and()
                .apply(samlConfigurer())
                .serviceProvider()
                .keyStore()
                .storeFilePath(config.getKeystorePath())
                .password(config.getKeystorePassword())
                .keyname(config.getKeyAlias())
                .keyPassword(config.getKeystorePassword())
                .and()
                .protocol("https")
                .hostname(String.format("%s:%s", serverURL, config.getServerPort()))
                .basePath("/"+contextRoot)
                .and()
                .identityProvider()
                .metadataFilePath(config.getMetadataUrl());

我们也应该正确设置OKTA(https://localhost:8443/ourappcontext/saml/SSO用于测试,所有其他内容也包括在内)

我们已经尝试了这里提出的大多数解决方案和Spring留档(空工厂、Spring会话管理和会话固定等等),似乎没有任何效果。我们是不是做错了什么?我们目前没有生成任何SP元数据,有没有可能这是错误的,请求被重定向到错误的地方?现在真的很困惑,第一次使用SAML,我不确定它是扩展,OKTA配置还是Spring配置...

我们正在Wildfly上部署,您可以通过一个单独的jboss web在上面设置应用程序上下文。xml,如果这很重要的话。

共有1个答案

冉昊
2023-03-14

默认情况下,将使用HttpSessionStorageFactory,这将提供HttpSessionStorageSAML消息存储。

--

当SAML响应传递给Spring Security SAML SP时,如果浏览器未发送HTTP会话cookie,则它无法找到相关的SAML AuthNRequest,并且无法将“InResponseTo”值与匹配AuthNRequest的“ID”值进行比较。

如果你不能保证HTTP会话cookie被交付,你可以实现你自己的SAMLMessageStorageFactorySAMLMessagestore(就像我做的那样)。

 类似资料:
  • 问题内容: 我想将上下文根从“ / war_name”(默认)更改为“ /”。 因此,我创建了一个jboss-web.xml文件,并将其推送到WEB-INF目录中。 该文件的内容是: 不幸的是,这在战争部署期间导致以下错误: 但是,当我输入诸如/ RoomManagement之类的目录名称时,没有此问题。但是,如果我使用这个,我将无法访问/ RoomManagement中没有的JSP。 您是否有一

  • 我在Netbean中创建了名为TestA的新war应用程序。然后,我创建了新的Glassfish部署描述符glassfish-web.xml,内容如下: 然后我将我的应用程序部署到GF。上下文根仍然 /TestA,而不是 /new_context_root.为什么? Glassfish版本为3.1.2.2 断续器 如果我通过自动部署文件夹进行部署,则上下文根会正常更改,但不会从web-admin更

  • 我正在尝试找到一种方法来显式指定部署到Glassfish的Web应用程序的上下文路径3.1.2.2但到目前为止我还没有运气。有人能对此提供指导吗?背景如下: 我有一个Web应用程序,它由两个单独的Netbean(7.0)项目组成。第一个是Web服务,称为FOWS。第二个是使用FOWS网络服务的面向用户的Web应用程序。它被称为FooApp。 我最近将glassfish升级到3.1.2.2,希望解决

  • 我必须测试一个由spring和jsp编写的web应用程序。应用程序的默认会话超时为30分钟。 我想减少会话超时。为此,我更改了中的文件。但是它不起作用。中的默认配置是- 我刚刚改变了时间- 但仍然不起作用。据我所知,在这种情况下,我必须对spring应用程序的web进行更改。xml。但我不确定。有人能帮我吗? 提前谢谢。

  • 问题内容: 关于这两个上下文的内容,已经有很多文章了。但是我仍然不太正确。 到目前为止,据我了解:每个实例都是其类的一个实例,这意味着某些程序员建议您尽可能频繁地使用它,以免“泄漏”任何内存。这是因为另一个this(获取Activity实例上下文)指向的Activity是每次用户倾斜手机或离开应用程序等时都将销毁的一个。显然,垃圾收集器(GC)无法捕获,因此使用了过多的内存。 .. 但是任何人都可

  • 问题内容: 有时,您需要在servlet / JSP /基于的任何内容中构造指向Web应用程序上下文的完整URL 。类似于 **http://server.name:8080/context/** 。Servlet API没有实现此目的的单一方法。 直接的方法是将所有URL组件附加到,例如 我想知道这种选择是否有问题(速度快10倍): 上述两种方法是否 总是会 产生相同的结果? 问题答案: 它称为