首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring Security返回403而不是401,并创建无效的Redis会话cookie

Spring Security返回403而不是401是因为权限不足而不是身份验证失败。当用户尝试访问需要特定权限的资源时,Spring Security会返回403 Forbidden错误,表示用户没有足够的权限进行访问。

与之相反,当用户未经身份验证尝试访问受保护的资源时,应返回401 Unauthorized错误,表示用户需要提供有效的身份验证凭据。

创建无效的Redis会话cookie可能导致身份验证失败,从而返回401错误。Redis会话cookie用于存储用户的会话信息,如果会话cookie无效,则无法验证用户的身份。

为了解决这个问题,可以采取以下步骤:

  1. 检查Redis会话配置:确保Redis会话配置正确,并且与Spring Security集成正常。确保Redis服务器正在运行,并且与应用程序正确连接。
  2. 检查会话管理器配置:确保会话管理器正确配置,并且与Redis会话存储进行交互。确保会话管理器能够正确读取和写入Redis会话数据。
  3. 检查会话过期时间:确保会话过期时间设置合理。如果会话过期时间太短,会导致会话cookie在用户访问期间过期,从而导致身份验证失败。
  4. 检查会话cookie配置:确保会话cookie配置正确,并且与Redis会话存储进行交互。确保会话cookie能够正确传递给客户端,并在后续请求中正确发送回服务器。
  5. 检查身份验证逻辑:确保身份验证逻辑正确实现,并且能够正确验证用户的身份。检查用户凭据是否正确解析,并与存储的凭据进行比较。

总结起来,Spring Security返回403而不是401可能是由于权限不足而不是身份验证失败所致。创建无效的Redis会话cookie可能导致身份验证失败。为了解决这个问题,需要检查Redis会话配置、会话管理器配置、会话过期时间、会话cookie配置和身份验证逻辑。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

spring之session

该解决方案可以轻松地在独立部署服务之间共享会话数据,不必绑定到单个容器(即Tomcat)。 此外,它支持在同一浏览器中多个会话并在标头中发送会话。...2简单项目案例 首先创建一个简单Spring Boot项目,方便在后边会话示例中使用: org.springframework.boot</groupId...在两种类型中,@EnableRedisHttpSession和AbstractHttpSessionApplicationInitializer扩展实现,将在所有安全基础结构之前创建连接一个过滤器,...(0, result.size()); } 现在测试我们安全保护为未经身份验证请求返回401: @Test public void testUnauthenticatedCantAccess...然后我们从响应头中提取会话值,并在第二个请求中将其用作我们身份验证。 验证之后清除Redis所有数据。 最后,我们使用会话cookie发出另一个请求确认已注销。

61310

微服务 day17:基于Zuul网关实现路由转发、过滤器

本章节为【学成在线】项目的 day17 内容  构建用户中心服务,基于 Spring Security Oauth2 以及 jwt 令牌实现用户认证完整流程。  ...2、认证服务认证通过向浏览器 cookie 写入 token (身份令牌) 认证服务请求用户中心查询用户信息。 认证服务请求 Spring Security 申请令牌。...中将正确密码返回spring security 会自动去比对输入密码正确性。...修改申请令牌程序解析返回错误: 由于 restTemplate 收到400或401错误会抛出异常, spring security 针对账号不存在及密码错误会返回 400 及 401,所以在代码中控制针对...认证服务对外提供jwt查询接口,流程如下: 1、客户端携带 cookie身份令牌请求认证服务获取 jwt 2、认证服务根据身份令牌从 redis 中查询 jwt 令牌返回给客户端。

3.6K20

学成在线-第16天-讲义- Spring Security Oauth2 JWT RSA加解密

3 Spring Security Oauth2研究 3.1 目标 ​ 本项目认证服务基于Spring Security Oauth2进行构建,并在其基础上作了一些扩展,采用JWT令牌机制,自定义了用户身份信息内容...3.2.2 创建数据库 导入资料目录下 xc_user.sql,创建用户数据库 以“oauth_”开头表都是spring Security 自带表。...3.6.3 JWT入门 Spring Security 提供对JWT支持,本节我们使用Spring Security 提供JwtHelper来创建JWT令牌,校验JWT令牌等操作。...、网关从cookie获取token,查询Redis校验token,如果token不存在则拒绝访问,否则放行 5、用户退出,请求认证服务,清除redistoken,并且删除cookietoken...使用redis存储用户身份令牌有以下作用: 1、实现用户退出注销功能,服务端清除令牌后,即使客户端请求携带token也是无效

11.8K10

微服务 day16:基于Spring Security Oauth2开发认证服务

三、Spring Security Oauth2 研究 0x01 目标 本项目认证服务基于 Spring Security Oauth2 进行构建,并在其基础上作了一些扩展,采用 JWT 令牌机制,自定义了用户身份信息内容...创建数据库 导入资料目录下 xc_user.sql,创建用户数据库 ? 以 oauth_ 开头表都是 Spring Security 自带表。...JWT入门 Spring Security 提供对 JWT 支持,本节我们使用 Spring Security 提供 JwtHelper 来创建JWT令牌,校验JWT令牌等操作。...到网关 4、网关从 cookie 获取 token,查询 Redis 校验 token,如果 token 不存在则拒绝访问,否则放行 5、用户退出,请求认证服务,清除 redis token,并且删除...cookie token 使用 redis 存储用户身份令牌有以下作用: 1、实现用户退出注销功能,服务端清除令牌后,即使客户端请求携带 token 也是无效

4.1K30

不用 Spring Security 可否?试试这个小美的安全框架

谈及安全,多数 Java 开发人员都离不开 Spring 框架支持,自然也就会先想到 Spring Security,那我们先来看二者差别 Shiro Spring Security 简单、灵活 复杂...、笨重 可脱离Spring 不可脱离Spring 粒度较粗 粒度较细 虽然 Spring Security 属于名震中外 Spring 家族一部分,但是了解 Shiro 之后,你不会想 “嫁入豪门”...我们也可以用这个过滤器做默认登录逻辑,但是一般都是我们自己在控制器写登录逻辑,自己写的话出错返回信息都可以定制嘛。...basic登录 Logout LogoutFilter 登出过滤器,配置指定url就可以实现退出功能,非常方便 noSessionCreation NoSessionCreationFilter 禁止创建会话...,也会对理解 Spring Security 有很大帮助,点击文末「阅读原文」,效果更好 落霞与孤鹜齐飞 秋水共长天一色,产品经理和程序员一片祥和… 灵魂追问 都说 Redis 是单线程,但是很快,你知道为什么吗

48930

不用 Spring Security 可否?试试这个小美的安全框架

谈及安全,多数 Java 开发人员都离不开 Spring 框架支持,自然也就会先想到 Spring Security,那我们先来看二者差别 Shiro Spring Security 简单、灵活 复杂...、笨重 可脱离Spring 不可脱离Spring 粒度较粗 粒度较细 虽然 Spring Security 属于名震中外 Spring 家族一部分,但是了解 Shiro 之后,你不会想 “嫁入豪门”...我们也可以用这个过滤器做默认登录逻辑,但是一般都是我们自己在控制器写登录逻辑,自己写的话出错返回信息都可以定制嘛。...basic登录 Logout LogoutFilter 登出过滤器,配置指定url就可以实现退出功能,非常方便 noSessionCreation NoSessionCreationFilter 禁止创建会话...那是你没有自己动手去尝试,结合官网与 demo 相信你会对 Shiro 有更好理解,另外你可以理解 Shiro 是 mini 版本 Spring Security,我希望以小见大,当需要更细粒度认证授权时

60410

Spring Security 实战干货: 401403状态

前言 最近几篇我对Spring Security中用户认证流程进行了分析,同时在分析基础上我们实现了一个验证码登录认证实战功能。...今天来谈谈两个和认证授权息息相关两个状态401403以及它们如何在Spring Security融入体系中。 2. 401 未授权 我在RFC 7235[1]中找到了相关表述。...当客户端收到401状态码时,表明了该请求因为缺乏了被信任认证凭据被拒绝访问目标资源。 如果用户在请求中携带了认证凭据,那么401响应表明该凭据是未授信,不能访问目标资源。...Spring Security这两种状态 通常情况Spring Security401403两种状态都是以异常形式来进行体现,由AuthenticationException和AccessDeniedException...仅仅当登录认证失败返回401,其它情况这两种异常都返回403。 ? Spring Security异常处理体系 默认情况下他们都会被转发到异常页面。

3.1K30

Spring Security---ONE

url,登录失败跳转url,退出登录url JSON登录方式测试 自定义权限访问异常结果处理 详解 Spring Security创建使用session方法 会话超时管理 session会话超时时间配置...会话超时处理 Spring Security会话固化保护 Cookie安全 同账号多端登录踢下线 跳转到指定页面 Json友好数据提示 测试方法: cookie和session复习 ---- Http...Security创建使用session方法 Spring Security提供4种方式精确控制会话创建: always:如果当前请求没有对应session存在,Spring Security...:该配置只能控制Spring Security如何创建与使用session,不是控制整个应用程序。...”时,原始会话不会无效 设置“newSession”后,将创建一个干净会话不会复制旧会话任何属性 migrateSession - 即对于同一个cookiesSESSIONID用户,每次登录访问之后访问将创建一个新

1.8K10

Echo 登录认证和授权是怎么做

所谓登录凭证无效,就是指用户登出后,这个凭证就会被设置为无效状态;凭证默认过期时间是 1000s。这段代码在 UserService 中: ?...可能有同学就会问了,为什么是直接删除缓存,不是也相应更新缓存呢?...授权 认证的话上面大家也看到了,是我们自己写逻辑,跳过了 Spring Security,那我们就需要把我们自己做逻辑认证结果存入 SecurityContext,以便于 Spring Security...登出 Spring Security 底层会默认拦截 /logout 请求,进行退出处理,由于退出逻辑我们也自己实现了(将该用户 LoginTicket 状态设置为无效): ?...所以我们赋予 Spring Security 一个根本不存在退出路径,使得程序能够执行到我们自己编写退出代码: ?

90321

帅气 Spring Session 功能,基于 Redis 实现分布式会话,还可以整合 Spring Security

如果胖友对 Cookie 和 Session 概念不是很清晰,建议可以先看下 《彻底理解 Cookie、Session、Token》 文章。...Spring Security 内置该登陆界面。 终端执行 redis-cli 命令,连接到 Redis 中,查看是否创建了一个 Session 。...返回 Map 对象,其 key 为 sessionid 。...随便请求一个 API 接口,我们来看看响应 Header 中,是不是有 "token" 返回。如下图所示: ? 在红圈处,我们可以看到确实响应 Header 中有 "token" 返回。...微服务拆分之后,如果在 Session 存储会话信息,就显得太重,因为一些信息并不是所有服务都需要,所以需要经过一定拆分,存储到 Redis 当中。

6.1K20

Spring Security认证和授权

返回值也是一个Authentication,这个Authentication则是在认证成功后,将用户权限及其他信息重新组装后生成。...是spring security包中接口,直接继承自Principal类,Principal是位于 java.security 包中。...Spring Security默认配置没有明确设定一个登录页面的URL,因此Spring Security会根据启用功能自动生成一个登录页面URL,使用默认URL处理登录提交内容,登录后跳转到默认...若使用stateless,则说明Spring Security对登录成功用户不会创建Session了,你应用程序也不会允许新建session,并且它会暗示不使用cookie,所以每个请求都需要重新进行身份验证...安全会话cookie 我们可以使用httpOnly和secure标签来保护我们会话cookie,修改spring boot配置文件: server.servlet.session.cookie.http‐only

2.1K30

深入理解JWT使用场景和优劣

如果觉得比较抽象,不妨用传统 session+cookie 单点登录方案来做类比,通常我们可以选择 spring security(身份认证和权限管理安全框架)和 spring session(session...遵循如下实践可以尽可能保护你 jwt 不被泄露:使用 https 加密你应用,返回 jwt 给客户端时设置 httpOnly=true 并且使用 cookie 不是 LocalStorage 存储...如果你一定要使用 jwt 做会话管理(payload 中存储会话信息),也不是没有解决方案,但个人认为都不是很令人满意 每次请求刷新 jwt jwt 修改 payload 中 exp 后整个 jwt...tips:精确控制 redis 过期时间不是件容易事,可以参考我最近一篇借助于 spring session 讲解 redis 过期时间排坑记录。...可能对 jwt 使用场景还有一些地方未被我察觉,后续会研究下 spring security oauth jwt 源码,不知到时会不会有新发现。

3.1K80
领券