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

Spring Security当前不存在HttpSession

宗政兴发
2023-03-14

SAML请求可以正常工作,但是当我从ADFS接收响应时,由于身份验证问题导致了一个重定向循环。

似乎在我成功地将userdetails存储在会话中之后,下一个请求找不到可用的HttpSession,因此创建了一个匿名令牌。

我使用了非常棒的SAML扩展库(http://docs.spring.io/autorepo/docs/spring-security-saml/1.0.x-snapshot/reference/htmlsingle/),并且实现了SamlUserDetailsService来构建UserDetails。

在第二个类似的WebApp中,一切都运行良好。

这里是我的日志:

(SAMLDefaultLogger.java:127) - AuthNResponse;SUCCESS; ...
(AbstractAuthenticationProcessingFilter.java:319) - Authentication success. Updating SecurityContextHolder to contain: org.springframework.security.providers.ExpiringUsernameAuthenticationToken@aecd14bd: 
(SavedRequestAwareAuthenticationSuccessHandler.java:79) - Redirecting to DefaultSavedRequest Url: ...
(DefaultRedirectStrategy.java:36) - Redirecting to ....
(HttpSessionSecurityContextRepository.java:327) - SecurityContext stored to HttpSession: 'org.springframework.security.core.context.SecurityContextImpl@aecd14bd: Authentication: org.springframework.security.providers.ExpiringUsernameAuthenticationToken@aecd14bd: ...
(SecurityContextPersistenceFilter.java:97) - SecurityContextHolder now cleared, as request processing completed
(FilterChainProxy.java:337) - / at position 1 of 12 in additional filter chain; firing Filter: 'SecurityContextPersistenceFilter'
(HttpSessionSecurityContextRepository.java:140) - No HttpSession currently exists
(HttpSessionSecurityContextRepository.java:91) - No SecurityContext was available from the HttpSession: null. A new one will be created.
(FilterChainProxy.java:337) - / at position 2 of 12 in additional filter chain; firing Filter: 'WebAsyncManagerIntegrationFilter'
(FilterChainProxy.java:337) - / at position 3 of 12 in additional filter chain; firing Filter: 'LogoutFilter'
(FilterChainProxy.java:337) - / at position 4 of 12 in additional filter chain; firing Filter: 'UsernamePasswordAuthenticationFilter'
(FilterChainProxy.java:337) - / at position 5 of 12 in additional filter chain; firing Filter: 'DefaultLoginPageGeneratingFilter'
(FilterChainProxy.java:337) - / at position 6 of 12 in additional filter chain; firing Filter: 'BasicAuthenticationFilter'
(FilterChainProxy.java:337) - / at position 7 of 12 in additional filter chain; firing Filter: 'FilterChainProxy'
(AntPathRequestMatcher.java:145) - Checking match of request : '/'; against '/saml/login/**'
(AntPathRequestMatcher.java:145) - Checking match of request : '/'; against '/saml/logout/**'
(AntPathRequestMatcher.java:145) - Checking match of request : '/'; against '/saml/sso/**'
(AntPathRequestMatcher.java:145) - Checking match of request : '/'; against '/saml/ssohok/**'
(AntPathRequestMatcher.java:145) - Checking match of request : '/'; against '/saml/singlelogout/**'
(FilterChainProxy.java:180) - / has no matching filters
(FilterChainProxy.java:337) - / at position 8 of 12 in additional filter chain; firing Filter: 'RequestCacheAwareFilter'
(FilterChainProxy.java:337) - / at position 9 of 12 in additional filter chain; firing Filter: 'SecurityContextHolderAwareRequestFilter'
(FilterChainProxy.java:337) - / at position 10 of 12 in additional filter chain; firing Filter: 'AnonymousAuthenticationFilter'
(AnonymousAuthenticationFilter.java:102) - Populated SecurityContextHolder with anonymous token: 'org.springframework.security.authentication.AnonymousAuthenticationToken@6faa3d44:
(ExceptionTranslationFilter.java:165) - Access is denied (user is anonymous); redirecting to authentication entry point ...

我使用的是Spring Security 3.2.5版本

共有1个答案

龙才俊
2023-03-14

我解决了,

问题与上下文路径有关。

将cookie设置为以斜杠“/”结尾的上下文路径后,没有此斜杠的下一个请求无法通过cookie会话。

 类似资料:
  • 在我的应用程序中,我试图执行一个简单的登录/注册操作。 我有一个,如果没有用户,它返回一个登录屏幕,如果有用户登录,它返回一个主屏幕: 代码工作得很好,如下所示: 我怎样才能解决这个问题?

  • 我知道这听起来像是FragmentStatePagerAdapter IllegalStateException: 当前不在FragmentManager中,但他的解决方案与我的情况无关。 我很少遇到以下崩溃: 原因:java.lang.IllegalStateException:Fragment MyFragment{40648258 id=0x7f070051}当前不在Android.supp

  • 您好,我正在使用visual studio Professional2015,我创建了一个MVC5项目,但我有3个错误: 名称“viewbag”在当前上下文中不存在 名称“RenderBody”在当前上下文中不存在 名称“RenderSection”在当前上下文中不存在 我正在使用MVC5,我在网上搜索,找到了很多解决方案,但他们不适合我的情况。 这是\views\web.config 这是\we

  • 问题内容: 尝试使用WebMatrix启动网站时出现此错误。我有一个.cs文件可以拨打电话。 我的项目中有一个名为“ dbase”的数据库。自从使用WebMatrix启动网站以来,我没有web.config文件,也没有使用WebMatrix包的导入,因此我认为我不需要它们。我需要将代码包装在Razor标签中吗?这也给我造成了错误。 是什么原因造成的?有人对此有任何解决方案吗? 问题答案: 您需要一

  • 我正在遵循一个将PayPal集成到MVC4的指南。然而,我遇到了这个错误“名称”session“在当前上下文中不存在。”名称“response”在当前上下文中不存在(&)。 https://www.asp.net/web-forms/overview/getting-started/getting-started-with-aspnet-45-web-forms/checkout-and-payp

  • 我再次开始在ASP.NET中进行开发,但在Visual Studio中遇到了一个小错误。我的.cshtml文件在使用一些razor函数时显示错误。例如“名称'viewbag'在当前上下文中不存在”。这里有一张图片: 我正在使用一个演示项目。您可以在这里找到这个项目:https://github.com/wintellight/angula-mvc-cookbook/tree/master/basi