当前位置:首页 > Web开发 > 正文

但也可以使用cookie)

2024-03-31 Web开发

官方介绍:https://jwt.io/introduction/ 

https://auth0.com/learn/json-web-tokens/

什么是JSON WEB TOKEN?

JSON Web Token(JWT)是一种开放标准(RFC 7519),它界说了一种紧凑且独立的方法,可以在各方之间作为JSON东西安适地传输信息。此信息可以通过数字签名进行验证和信任。JWT可以使用奥秘(使用HMAC算法)或使用RSA的公钥/私钥对进行签名。

让我们进一步解释这个界说的一些观点。

压缩:由于它的巨细,它可以通过URL,POST参数或HTTP头内部发送。别的,由于其尺寸,其传输速度很快。

自包罗:有效负载包罗有关用户的所有必须信息,以制止多次盘问数据库。

有关JSON Web令牌的完整详细信息,请检察JWT手册。

什么时候应该使用JSON WEB TOKEN?

这些是JSON Web Tokens非常有用的场景:

身份验证:这是使用JWT的范例方案,一旦用户登录,每个后续请求将包孕JWT,允许用户访谒该令牌允许的路由,处事和资源。Single Sign On是一种此刻广泛使用JWT的成果,因为它的开销很小,并且能够在差别域的系统中轻松使用。

信息交换:JWT是在各方之间安适传输信息的好要领,因为它们可以签名,例如使用公钥/私钥对,您可以确定发件人是他们所说的人。别的,由于使用标头和有效负载计算签名,您还可以验证内容是否未变动。

哪个是JSON WEB TOKEN布局?

JWT由dot(.)分隔断绝分手的三个部分构成,它们是:

有效载荷

签名

因此,JWT凡是如下所示。

xxxxx.yyyyy.zzzzz

让我们分化差此外部分。

标头凡是由两部分构成:令牌的类型,即JWT,以及哈希算法,如HMAC SHA256或RSA。

例如:

{ "alg": "HS256", "typ": "JWT" }

然后,这个JSON被编码为Base64Url,形成JWT的第一部分。

有效载荷

令牌的第二部分是有效负载,此中包罗声明。声明是关于实体(凡是是用户)和其他元数据的声明。索赔有三种类型:保存,果然和私人索赔。

保存的声明:这些是一组预界说的声明,这些声明不是强制性的,但建议用于供给一组有用的,可互操纵的声明。此中一些是:iss(刊行人),exp(到期时间),sub(主题),  aud(不雅观众)等。

请注意,声明名称只有三个字符,因为JWT意味着紧凑。

果然声明:这些可以由使用JWT的人随意界说。但是为制止斗嘴,,应在IANA JSON Web令牌注册表中界说它们,或者将其界说为包罗防斗嘴定名空间的URI。

私人声明:这些声明是为了在同意使用它们的各方之间共享信息而创建的。

有效载荷的一个例子可能是:

{ "sub": "1234567890", "name": "John Doe", "admin": true }

然后有效载荷被Base64Url编码以形成JWT的第二部分。

签名

要创建签名部分,您必需给与编码标头,编码的有效负载,奥秘,标头中指定的算法,并对其进行签名。

例如,如果要使用HMAC SHA256算法,将以下列方法创建签名。

HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

签名用于验证JWT的发件人是否是其所说的人,并确保邮件未被变动。

把所有人放在一起

输出是三个由点分隔断绝分手的Base64字符串,可以在HTML和HTTP环境中轻松通报,与基于XML的标准(如SAML)对比越发紧凑。

下面显示了一个JWT,它具有先前的头和??有效负载编码,并使用机密签名。

技术图片

技术图片

?

您可以浏览jwt.io,在那里您可以使用JWT并将这些观点付诸实践。jwt.io允许您解码,验证和生成JWT。

JSON WEB TOKEN如何事情?

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/31674.html