首页
学习
活动
专区
圈层
工具
发布

10_单点登录SSO

于是,就想到是不是可以在一个系统登录,其他系统就不用登录了呢?这就是单点登录要解决的问题。 单点登录英文全称Single Sign On,简称就是SSO。...由于jwt的payload是使用base64编码的,并没有加密,因此jwt中不能存储敏感数据。而session1的信息是存在服务端的,相对来说更安全 性能 jwt太长。...例如你在payload中存储了一些信息,当信息需要更新时,则重新签发一个jwt,但是由于旧的jwt还没过期,拿着这个旧的jwt依旧可以登录,那登录后服务端从jwt中拿到的信息就是过时的。...,就返回token给客户端,此token可以包含用户信息 客户端存储token,可以保存在cookie或者local storage 客户端以后请求时,都要带上这个token,一般放在请求头中 服务器判断是否存在...token,并且解码后就可以知道是哪个用户 服务器这样就可以返回该用户的相关信息了 ---- JWT工作方式: 在用户进行认证登录时,登录成功后服务器会返回一个JWT给客户端;那这个JWT就是用户的凭证

1.3K20

状态码在后端开发中常常遇到的场景

Spring Cloud Gateway:在路由配置正确且下游服务正常时返回。 Nginx:当请求的资源存在且客户端有权限访问时返回。...通用:任何服务器在未找到资源时都可能返回404,如Spring Boot应用或Nginx服务器。...Spring Boot:当后端服务发生异常时,如果没有特定的异常处理器,将返回500状态码。 Nginx:后端服务故障或Nginx配置错误时返回500。...- 配置重定向规则,如return 302。 401 Unauthorized,未授权。 当用户未登录或令牌无效时返回。 - 403 Forbidden,禁止访问。...- 在权限控制中,如果用户没有访问权限返回。 404 Not Found,未找到。 - 服务器无法找到请求的资源时返回。 500 Internal Server Error,服务器内部错误。

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    使用Spring Security和JWT来进行身份验证和授权(三)

    该类从数据库中获取用户信息,并将其转换为Spring Security用户详细信息对象。接下来,我们需要实现JWT身份验证入口点。...该类用于在未经身份验证的情况下拒绝请求,并返回HTTP状态代码401。最后,我们需要实现JWT请求过滤器。...如果JWT令牌有效,则设置Spring Security上下文的身份验证信息。现在我们需要将这些组件集成到我们的Spring Boot应用程序中。...我们在这里配置了以下内容:我们允许访问“/authenticate”端点而不需要身份验证。这是我们用于生成JWT令牌的端点。我们要求对所有其他请求进行身份验证。...我们将JWT请求过滤器添加到Spring Security的过滤器链中。它应该在用户名密码身份验证过滤器之前运行。

    3K40

    Spring Cloud服务认证与授权(二):JWT无状态认证实战详解

    当一个微服务需要调用另一个微服务时,可以在请求中携带JWT令牌,被调用的服务通过验证令牌来确认调用方的合法性。 这种机制特别适合在Spring Cloud Gateway等API网关场景中使用。...当客户端携带JWT令牌发起请求时,服务端需要依次完成以下步骤:解析令牌结构、验证签名有效性、检查令牌是否过期,并提取关键信息(如用户角色)。...2025年的实践中,RS256因更好的分布式安全性而更受青睐。 异常处理:捕获JwtException异常,区分签名无效、格式错误等场景,返回明确的错误信息。...、格式异常)或篡改令牌,系统需统一返回401状态码,并记录审计日志。...每个服务独立部署,通过Spring Cloud Gateway作为统一的API网关入口。用户登录后,需要访问多个服务(如查看订单、支付等),而服务间调用也需要确保身份合法性。

    68310

    Spring Security 实战干货: 401和403状态

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

    4.7K30

    JWT令牌详解

    传统的 Session 认证在分布式系统中面临共享难题,而 JWT(JSON Web Token) 凭借其无状态、自包含、跨域友好的特性,成为当前最主流的身份认证方案之一。...五、Spring Boot 中集成 JWT5.1 引入 JJWT 依赖在 pom.xml 中添加:ExpiredJwtException:令牌已过期SignatureException:签名不匹配(可能被篡改)MalformedJwtException:格式错误方式二:在线解析(调试用)打开...Token 实现自动续期敏感信息不要在 JWT 中存放密码、手机号等敏感信息❌ 避免的坑❌ 使用弱密钥(如 123456)❌ 在 URL 中传递 JWT(易被日志记录)❌ 无限期有效令牌❌ 不验证签名就使用...但记住:JWT 不是银弹。它解决了 Session 共享问题,也带来了令牌管理、安全防护等新挑战。掌握 JWT 的核心原理与安全实践,是每一位 Java 开发者迈向高阶的必经之路。

    1.7K20

    SpringBoot 系列 web 篇之自定义返回 Http Code 的 n 种姿势

    SpringBoot 系列 web 篇之自定义返回 Http Code 的 n 种姿势 虽然 http 的提供了一整套完整、定义明确的状态码,但实际的业务支持中,后端并不总会遵守这套规则,更多的是在返回结果中...在 Spring 中可以做呢?...如果看过 web 系列教程中的:SpringBoot 系列教程 web 篇之全局异常处理 可能就会有一些映象,配合@ExceptionHandler来根据异常返回对应的状态码 一个推荐的使用姿势,下面表示当你的业务逻辑中出现数组越界时...从上面的使用实例上看,可以知道这种使用方式,不仅仅支持标准的 http code,也支持自定义的 code(如返回 code 451) 3....body 中不会有你的业务返回数据,如 /** * send error 方式,只支持标准http状态码; 且不会带上返回的结果 * * @param response * @return

    6K20

    打造REST风格的Spring Security配置

    认证成功返回200而不是301 3.5. 认证失败返回 401 而不是 302 3.6. AuthenticationManager和Provider 3.7....请注意,映射是相对于web应用程序根上下文的,而不是REST Servlet;这是因为整个安全配置都存在于Spring根上下文中,而不是在Servlet的子上下文中。...3.2.认证入口点 在一个标准的web应用程序中,当客户端不经过身份认证就试图访问一个安全的资源时,身份认证过程可能会被自动触发——这通常是通过重定向到登录页面来实现的,这样用户就可以输入认证信息了。...请记住,在REST服务中,这个功能是没有意义的,新的自定义入口点被定义为在触发时简单返回401。...401而不是302 类似地,我们配置了认证失败处理器——就像我们对成功处理器所做的那样。

    1.5K20

    面试必考:RuntimeException如何应对

    当系统内部状态不一致时 当出现无法通过外部干预解决的问题时 当需要立即终止当前操作并修复代码时 当出现系统内部bug时 当出现设计缺陷时 当需要立即修复代码而不是处理异常时 Java内置了很多...典型Exception 对比Exception 大都是源自于外界因素 通过修改外部环境或者配置都能解决 正常情况下不应出现Exception 典型场景有: 当需要返回错误码给前端时 当需要处理网络超时时...、Dao 出现 Runtime 就让他返回更高层 这样可以将异常信息反馈到 View 告诉用户,他违反了什么规则 例如:余额不足、输入为负数、手机号不是11位、没有权限等 特别在Spring项目中 采用...Runtime 就无须层层 throw 可以通过 @ControllerAdvice 在 Controller 返回给前端时 记录日志,并返回友好的错误信息给前端 同时转换为 401、500 等标准...返回 HTTP 500 */ @ExceptionHandler(Exception.class) public ResponseEntity<ApiResponse<Void

    18410

    后端开发必备的 RestFul API 知识

    如: https://api.example.com/v1/复制代码 另一种做法是,将版本号放在HTTP头信息中,但不如放入URL方便和直观。Github采用这种做法。...这些请求应该是幂等的,而不是更改服务器的状态。 5xx 范围的状态码是保留给服务器端错误用的。...当收到5xx响应时,客户端不可能知道服务器的状态,所以这类状态码是要尽可能的避免。复制代码 服务器向用户返回的状态码和提示信息,常见的有以下一些(方括号中是该状态码对应的HTTP动词)。...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...422 Unprocesable entity - [POST/PUT/PATCH] 当创建一个对象时,发生一个验证错误。

    1.2K40

    轻松上手SpringBoot Security + JWT Hello World示例

    在本教程中,我们将开发一个Spring Boot应用程序,该应用程序使用JWT身份验证来保护公开的REST API。在此示例中,我们将使用硬编码的用户和密码进行用户身份验证。...在下一个教程中,我们将实现Spring Boot + JWT + MySQL JPA,用于存储和获取用户凭证。任何用户只有拥有有效的JSON Web Token(JWT)才能使用此API。...当对用户提供的用户详细信息进行身份验证时,Spring Security Authentication Manager调用此方法从数据库中获取用户详细信息。...在这里,我们从硬编码的用户列表中获取用户详细信息。在接下来的教程中,我们将增加从数据库中获取用户详细信息的DAO实现。用户密码也使用BCrypt以加密格式存储。...它拒绝每个未经身份验证的请求并发送错误代码401。

    7.5K20

    【SpringBoot WEB 系列】RestTemplate 之非 200 状态码信息捕获

    ,当返回非 200 状态码时,会直接抛异常,如果我希望能捕获异常,并针对正常获取返回的 message,可以如何处理呢?...; } 一个简单的鉴权逻辑如上,从请求头中拿到Authorization对应的 value,并解析用户名密码,如果满足则正确返回;如果不存在 or 不满足,则返回 http 状态码为 401,并携带对应的提示信息...未捕获场景 当我们直接像之前一样使用 RestTemplate 时,看一下效果如何 try { // 如果返回状态码不是200,则直接抛异常,无法拿到responseBody RestTemplate...为返回的状态码,其中也包含了 ResponseBody,然后再业务中根据状态码和返回结果进行处理即可 (exception with no auth after errorHandler res: <...一灰灰 Blog 尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现 bug 或者有更好的建议,欢迎批评指正,不吝感激 下面一灰灰的个人博客,记录所有学习和工作中的博文,

    3.4K30

    【Flask】abort和errorhandler、app_errorhandler进行请求中断及自定义异常处理

    在view函数中,如果需要中断request,可以使用abort(500)或者直接raise exception。当然我们还需要返回一个出错信息给前端,所以需要定制一下ErrorHandler。...(401) # 请求到此即中断,不会打印下面的语句,并返回HTTP状态码401 print '123' errorhandler捕捉当前app或蓝图的状态码,并进行自定制处理 下面是一份示例代码...,admin是一个蓝本或者app,发生404错误或500错误,会返回一个Json对象给请求段。...response = dict(status=0, message="404 Not Found") return jsonify(response), 404 补充说明   当我们不是使用的工厂模式创建...app时,app.errorhandler(401),即可捕捉全局401状态;若使用了create_app方式创建app,则无法进行捕捉,若想捕捉,可以在蓝图中写,如admin.errorhandler

    2K20

    最全HTTP 状态码

    401未授权请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。402预留该状态码是为了将来可能的需求而预留的。403禁止服务器拒绝请求。404未找到服务器找不到请求的网页。...407需要代理授权此状态代码与401(未授权)类似,但指定请求者应当授权使用代理。408请求超时服务器等候请求时发生超时。409冲突服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。...同时也被用于401未认证的替代选择为了从其它被拒绝访问的已认证客户端中指定服务器的资源。420方法失效不是HTTP的标准,但是被Spring定义在HTTP状态类中当方法失时使用。...这个状态码已经不推荐在Spring中使用。420提高你的耐心也不是HTTP标准的一部分,但是被版本1的Twitter搜索和趋势APi返回当客户端的速率被限制的时候。...499客户端关闭请求(Nginx)当服务器仍在处理请求但连接已被客户端关闭时使用,在Nginx日志中记录,用于表示服务器无法返回状态码。

    3.7K10

    Spring Cloud 之 Zuul.

    当请求在一个阶段中存在多个过滤器时,需要根据该方法返回的值来依次执行,数值越小,优先级越高。...这里我们直接返回了true, 因此该过滤器对所有请求都会生效。实际运用中我们可以利用该函数来指定过滤器的有效范围。...ctx.setResponseStatusCode(401); // 设置返回的 body ctx.setResponseBody...下图源自 Zuul 的官方Wiki 中关于请求生命周期的图解, 它描述了一个 HTTP 请求到达 API 网关之后, 如何在各种不同类型的过滤器之间转的详细过程。 ?...这里的具体处理内容就是将外部请求转发到具体服务实例上去的过程,当服务实例将请求结果都返回之后,routing 阶段完成, 请求进入第三个阶段 post。

    79810

    从Java全栈到云原生:一场真实的技术面试对话

    例如,如果返回的是401未授权,我会跳转到登录页面;如果是500服务器错误,我会提示用户稍后再试。此外,我也使用了try/catch来捕获网络请求中的异常。...它帮助我提前发现了许多潜在的类型错误,比如在调用函数时传递了错误的参数类型。此外,TypeScript的智能提示功能也大大提升了我的编码速度。...## 技术点总结 在这次面试中,我展示了自己的Java全栈能力,涵盖了后端开发(Spring Boot, Spring Cloud, MyBatis)、前端开发(Vue3, Pinia, Axios)...('token'); router.push('/login'); } return Promise.reject(error); } ); ``` 这段代码展示了如何在...在请求拦截器中,我们添加了认证令牌;在响应拦截器中,我们检查了 401 错误并进行了相应的处理。

    25410
    领券