【JSON Web Token】JWT handoook 阅读笔记(一)

最近要写一篇关于JWT的论文,所以打算先试着翻译下JWT手册。学习之余也方便自己复习。
英语水平不佳,很多地方可能拗口或是存在翻译错误。因此也只能算是一篇阅读笔记吧。各位看官路过要是能提点下就再好不过了。
----------------以下是正文-------------

介绍

JSON Web Token,简称JWT(“jot”)。这是一种用于在空间受限的环境下,安全传递声明信息的标准。它已经渗入了各种主流web框架。简单、紧凑和高可用性是其架构的主要特点。虽然有很多更为复杂的系统还在被使用着,JWT任具有广泛的应用。这本小小的手册将会覆盖JWT架构最重要的几个方面,包括它们的二进制表示、用于构成JWT的运算规则,以及它们在产业中的一般用途。

1.1 什么是JSON Web Token?

一个JSON Web Token看起来是这样的(换行仅为提升可读性):

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

这看起来令人费解,但事实是,它以非常紧凑的,可打印的特点,表示了一组声明,其后的签名则用于验证其可靠性。

{
	"alg": "HS256",
	"typ": "JWT"
}
{
	"sub": "1234567890",
	"name": "John Doe",
	"admin": true
}

声明(claim)是的对当事人或对象的定义或断言。这些声明(及其含义)中的一部分是JWT细则所规定的。其他的则由用户来定义。JWT背后的魔力在于它标准化了一些在常规操作环境下非常有用的声明。比如,为某一用户建立身份认证就是这些常规操作之一。因此,JWT标准声明之一便是sub(subject)。在第三章,我们将会逐个仔细探究这些声明。

JWT的另一个关键方面在于它的可签署性和可加密性。签署可以使用 JSON Web Signatures (JWS,RFC 7515 ),加密可以使用 JSON Web Encryption (JWE, RFC 7516 )。与JWS和JWE结合使用,JWT可以为许多不同的问题提供安全有效的解决方案。

1.2 JWT用于解决什么问题?

仅管JWT的主要目的是在双方之间传递声明,但可以说,这其中最重要的方面是,以简单的、验证可选的、加密的容器格式,组成的标准化工作。过去,为了解决这个问题,几种特定的方案已经开始公开或非公开的运作了。用于建立(关于某些用户的)声明的旧标准也依然有效。JWT带给我们的是一个简单、有效的标准化容器格式。

尽管给出的定义有点抽象,我们不难想象JWT将如何被使用,那就是登录系统(仅管其他用途也是可能的)。我们将在第二章探究其在实践中的应用。这些应用包括:

  • 认证(Authentication)
  • 授权(Authorization)
  • 绑定身份( Federated identity )
  • 客户端会话(Client-side sessions (“stateless” sessions))
  • 客户端密钥(Client-side secrets)

1.3 一点点历史

JOSE(JSON Object Signing and Encryption group)成立于2011年。这个小组的目标是:

standardize the mechanism for integrity protection (signature and MAC) and encryption as well as the format for keys and algorithm identifiers to support interoperability of security services for protocols that use JSON”(标准化完整性保护(签名和MAC)、加密以及密钥和算法标识的格式的机制,从而支持JSON协议下安全服务之间的交互性)。

到2013年一系列草案问世了,其中包括一本使用手册,里面包括了这个小组的想法的各种使用使用范例。这些草案后来演变为了JWT, JWS, JWE, JWK 和 JWA 标准。

到了2016年,这些标准在进行质量跟踪,勘误表还没出现。现在,这个小组已经不活跃了。

这些规则的主要作者是 Mike Jones , Nat Sakimura , John Bradley 以及 Joe Hildebrand。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值