flask-jwt 如何处理令牌?
flask-jwt How handle a token?
我是 JWT 和 flask-jwt 的新手,所以我 运行 example where I find in docs. I read this 以更好地了解 JWT。
但现在我想知道我应该如何处理多个令牌?
我的意思是,用户 post 将他的凭据 "myserver/auth" 然后 return 给客户端的令牌。
当客户端发送新请求时,他应该发送令牌。
我的问题是我如何知道 "token" 属于哪个用户以及 "tokens" 存储在哪里?
JWTs由三部分组成,用点(.)隔开,分别是:
- Header
- 有效负载
- 签名
因此,JWT 通常如下所示。
xxxxx.yyyyy.zzzzz
简单总结一下
Header
header通常由两部分组成:令牌的类型,即JWT,以及哈希算法,例如HMAC SHA256或RSA。
{
"alg": "HS256",
"typ": "JWT"
}
有效负载
令牌的第二部分是负载,其中包含声明。声明是关于实体(通常是用户)和附加元数据的陈述。
这是有趣的部分,因为在令牌中我们可以检查你属于哪个。
{
“用户ID”:“1234567890”,
“expiration_date”:“2016-05-129”
}
当我们生成一个新的令牌时,我们可以指定负载包含的数据,这样我们就可以添加用户 ID 来识别用户,expiration_date 来检查是否需要一个新的令牌。
签名
要创建签名部分,您必须采用编码的 header、编码的有效负载、秘密、header 中指定的算法,然后对其进行签名。
签名用于验证 JWT 的发送者是否如其所说,并确保消息未被更改。
服务器端
我们应该在服务器端保存我们的密钥,因此,我们可以解密一个有效的负载并检查属于哪个用户。
通过这种方式,我们可以自由地避免存储令牌,因为每个令牌本身都会存储足够的数据来验证我们的用户。
如何更新令牌?:从客户端
生成更新令牌的过程是一样的,因此客户端应该请求更新服务(HTTP 请求如 www.myhost.com/renew)并发送旧令牌以生成新令牌。请记住,您可以检查哪些用户属于该令牌,因此更新令牌应包含相同的有效负载但到期日期不同。
单身sign-on
我们可以将 JWT 与更多策略一起使用,例如 single sign-on 以确保同一时间只有一个具有相同凭据的用户被登录。
我是 JWT 和 flask-jwt 的新手,所以我 运行 example where I find in docs. I read this 以更好地了解 JWT。
但现在我想知道我应该如何处理多个令牌? 我的意思是,用户 post 将他的凭据 "myserver/auth" 然后 return 给客户端的令牌。 当客户端发送新请求时,他应该发送令牌。
我的问题是我如何知道 "token" 属于哪个用户以及 "tokens" 存储在哪里?
JWTs由三部分组成,用点(.)隔开,分别是:
- Header
- 有效负载
- 签名
因此,JWT 通常如下所示。
xxxxx.yyyyy.zzzzz
简单总结一下
Header
header通常由两部分组成:令牌的类型,即JWT,以及哈希算法,例如HMAC SHA256或RSA。
{
"alg": "HS256",
"typ": "JWT"
}
有效负载
令牌的第二部分是负载,其中包含声明。声明是关于实体(通常是用户)和附加元数据的陈述。 这是有趣的部分,因为在令牌中我们可以检查你属于哪个。 { “用户ID”:“1234567890”, “expiration_date”:“2016-05-129” }
当我们生成一个新的令牌时,我们可以指定负载包含的数据,这样我们就可以添加用户 ID 来识别用户,expiration_date 来检查是否需要一个新的令牌。
签名
要创建签名部分,您必须采用编码的 header、编码的有效负载、秘密、header 中指定的算法,然后对其进行签名。 签名用于验证 JWT 的发送者是否如其所说,并确保消息未被更改。
服务器端
我们应该在服务器端保存我们的密钥,因此,我们可以解密一个有效的负载并检查属于哪个用户。 通过这种方式,我们可以自由地避免存储令牌,因为每个令牌本身都会存储足够的数据来验证我们的用户。
如何更新令牌?:从客户端
生成更新令牌的过程是一样的,因此客户端应该请求更新服务(HTTP 请求如 www.myhost.com/renew)并发送旧令牌以生成新令牌。请记住,您可以检查哪些用户属于该令牌,因此更新令牌应包含相同的有效负载但到期日期不同。
单身sign-on
我们可以将 JWT 与更多策略一起使用,例如 single sign-on 以确保同一时间只有一个具有相同凭据的用户被登录。