![]() |
1
12
你的第一个问题:
回答: 让我们看看jwt.io提供的关于何时使用jwt s的描述:
这意味着您需要在用户登录后在服务器端生成令牌。 它包含:
一旦客户端向服务器请求或发送数据,服务器首先检查给定的令牌是否有效和已知,然后检查角色是否满足访问特定资源的条件。 所有角色/访问数据都可以在系统启动时读取一次并保存在内存中。此外,当客户机登录时,只从数据库中读取一次客户机拥有的角色。这样,您就没有后续的数据库访问,因此,性能大大提高。 另一方面,如果客户端请求数据或希望执行操作,则需要一个身份验证机制,该机制评估传递的令牌是否获得了执行此操作所需的角色。 这样我们就解决了数据库的麻烦,并且消除了向客户端暴露太多信息的危险(即使客户端不能篡改数据,它也可以读取数据!) 请注意: https://jwt.io/introduction
见A3(敏感数据曝光): https://www.owasp.org/index.php/Top_10-2017_Top_10 最后:如果客户端空闲时间过长或有意注销,也要使令牌失效。 后续问题:
回答: 根据服务器的基础结构,您可以在服务器端编写刷新机制(如果角色更新,服务器将生成新令牌并将其与生成的答案一起发送给客户端,从而使旧令牌失效,客户端仅使用最近的令牌并覆盖旧令牌),或者添加一些状态,如客户端会话: 删除令牌上的角色/权限。最好为客户端生成会话,并在服务器端提供会话角色/权限。客户端获取它可以进行身份验证的会话令牌(通常是一个id)。一旦权限/角色更改,我们必须做两件事:
同样,每个后续请求都将在内存中执行角色/权限检查,并且不需要数据库通信,而客户端只有一个小的会话令牌(或JWT)。因此,角色/权限更改对客户端是透明的(不需要重新记录),并且我们消除了JWT刷新要求。 |
![]() |
2
2
取决于你如何解释效率。在谈到资源效率时,请记住JWT是根据每个请求发送的。因此,如果您有一个具有细粒度访问控制列表(acl)的大型应用程序,并且您总是在每个请求响应上来回ping这些列表,那么根据您发出的请求数,这肯定会花费您几千字节。 |
![]() |
David 54321 · 我的密码在pyinstaller.exe中安全吗? 11 月前 |
![]() |
Michael · 某些Windows客户端上的命名管道安全问题 1 年前 |
![]() |
adamency · 是否可以从Go二进制文件的源代码中检索字符串? 1 年前 |
![]() |
AlboSimo · PayPal Api密钥安全 1 年前 |