JWT

什么是 JWT?

JWT(JSON Web Token)是一种开放标准(RFC 7519),用于在网络应用程序之间安全地传输信息。它被设计用于在两方之间传输声明,这些声明可以是身份验证和授权信息,也可以是任何其他类型的信息。

设计目的:不需要服务器端存储状态,安全地传递非敏感信息。

JWT 特点

  • 可扩展性:可以在 payload 中携带任意的 JSON 数据
  • 自包含性:所有用户相关信息都在 JWT 中,不需要依赖数据库
  • 无状态性:服务器不需要保存会话状态,提高了系统的可扩展性
  • 跨域支持:可以跨域传递,因为是 JSON 格式
  • 安全性:通过签名确保数据不被篡改

JWT 组成

eyJraWQiOiJmYTNkZmZjMS0xZmQ3LTRhM2QtYTEyMC1mNjY4OWE4NDM5YjQiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJjbGllbnQiLCJhdWQiOiJjbGllbnQiLCJuYmYiOjE3MTc1NDk5NDMsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODA4MCIsImV4cCI6MTcxNzU1MDI0MywiaWF0IjoxNzE3NTQ5OTQzLCJqdGkiOiJiMjU0ZGVhMi1kMWE2LTQxNzEtYjEyYy1lNmYzYzZjMDJkMGQifQ.eRiS0H2E-h5PiDEfJikjoPGH1DCqWVt4VIzLtPoSOaIK6jBIaw0h5m-reZVUyZPNYZG68Ymhey17aZBMveirqCxN-lNcPMIGfuqMptfsD9E6Hfam6bEMgpEAOQsQ6Ruk3vGtdmjnEC2h9ZStoqT5-C6JgArwFLGgX92LXrRYz7-60n0I6EAB07u9kxc6FQKLow90RiyXi2YLur-ttOUQpecf8zHi48zRc-HLLoWAMaNddT-4hg4v0Qts4DultpxZB_Xu7DRc91G_8M6sYFSvFSVFHlcWFgKNLZqUYwepLHX2LxoXdbTLGqV9x__-J8UO0TO3TkpC2BaZAiseYcpYMw

JWT 主要有以下三个部分通过 base64 加密组成:

More »

OAuth2和OIDC区别

认证和授权

认证 (Authentication)

  • 认证是验证用户、设备或系统身份的过程。
  • 常见的认证方式包括用户名/密码、生物特征(如指纹、人脸)、单点登录(SSO)等。
  • 认证确保只有被授权的实体才能访问系统或资源。

授权 (Authorization)

More »

[译]OAuth2.0服务器

背景

前言

作者:Aaron Parecki

我第一次接触 OAuth 是在 2010 年,当时我正在构建一个 API,我知道我希望第三方开发人员能够在其基础上构建应用程序。当时,OAuth 看起来令人生畏。OAuth 1 的实现只有少数几个,而 OAuth 2.0 仍是一个草稿。一天晚上,我决定坐下来,拿着精酿啤酒和最新草案的纸质副本,从头到尾阅读它,直到我理解它。

More »

[译]OAuth2简化版

这篇文章以简化的格式描述了 OAuth 2.0,以帮助开发人员和服务提供商实现该协议。

OAuth 2 规范读起来可能有点混乱,所以我写了这篇文章来帮助以简化的格式描述术语。核心规范将许多决策留给实现者,通常基于实现的安全权衡。这篇文章没有描述成功实施 OAuth 2 所需的所有可能决策,而是做出适用于大多数实现的决策。

More »

RFC6749 | OAuth2.0授权框架中文版

前言

摘要

OAuth2.0 授权框架允许第三方应用获取对 HTTP 服务的有限的访问权限,既可以以资源所有者名义在资源所有者和 HTTP 服务之间进行允许的交互,也可以允许第三方应用以自己的名义进行访问。本规范取代并淘汰 RFC 5849 中描述的 OAuth 1.0 协议。

More »

All things about Spring Modulith

VMware 推出了一个实验性的项目Spring Modulith,以便于通过模块和事件更好地组织 Spring Boot 3 应用。该项目引入了新的类和注解,但并不会生成代码。它的模块没有使用 Java Platform Module System(JPMS),而是映射到了普通的 Java 包。模块有 API,但是 Spring Modulith 鼓励使用 Spring 应用事件作为“主要的交互方式”。这些事件可以自动持久化到事件日志中。Spring Modulith 还简化了模块和事件的测试。

More »

[译]比较 Socket.IO 和 HTTP:主要区别和用例

原文链接:https://ably.com/topic/socketio-vs-http

在规划实时应用程序时,您应该仔细考虑要使用哪些技术。本文对Socket.IO实时库和HTTP协议进行了比较。下面您将了解每种解决方案的功能、每种解决方案的优缺点以及何时使用它们。

什么是Socket.IO?

Socket.IO 是一个创建于 2010 年的库,提供客户端和服务器之间的实时双向通信。它允许管理连接、发送和接收消息等等。这使得 Socket.IO 成为构建消息/聊天应用程序的理想选择。

More »