当前位置: 首页 > 知识库问答 >
问题:

服务器上的JWT登录流程和令牌验证

廉志强
2023-03-14

在服务器上验证令牌的正确方法是什么?

我正在我的应用程序中使用jwt令牌机制,下面是它目前的工作方式:

    null
    null

共有1个答案

督嘉言
2023-03-14
  1. 服务器必须使用私钥对JWT进行签名。然后客户端可以使用公钥验证它,当它收到一个令牌时,服务器本身也可以验证它。
  2. 在发送令牌之前,客户端必须知道公钥。
  3. 您不需要在数据库中存储访问令牌,因为JWT已签名。你可以用签名来验证。如果令牌是使用任何其他私钥生成的,则无法使用您的公钥对其进行验证。
  4. 攻击者应该无法使用访问令牌登录。如果存在恶意获取令牌的风险,则必须为令牌设置一个较短的有效期,并使用刷新令牌获取新令牌。刷新令牌应持久化在服务器端。如果刷新令牌被破坏,它可以被无效(用户应该能够撤销对该客户端的访问)。或者,您可以向JWT注入一个安全的随机数,并针对用户将该数字存储在服务器端。当用户发送令牌时,您必须验证JWT中的安全随机数与数据库中的安全随机数。然后可以通过更改数据库中的安全随机数来使令牌无效。
 类似资料:
  • 我尝试用angular2前端实现jwt令牌。当我尝试使用Postman接收带有post方法的令牌时,我接收到授权令牌,但在Angular中这样做返回空响应对象。这里是我使用的Angular服务的代码片段。 问题是,当我尝试记录时,令牌是空的,与响应相同。对于代码的后端部分,我遵循了jwt令牌的这个实现。

  • 我有一个关于JWT的SSO流的简单问题 假设我们有单独的授权服务器,它为客户端应用程序/服务器和资源服务器提供JWT,客户端尝试使用该令牌访问该服务器。 问题是,资源服务器应该自己验证令牌(例如,与Auth server共享私有证书),还是应该请求Auth server为每个客户端请求验证JWT?

  • 嗨,我正在创建使用 REST API endpoint与服务器端通信的移动本机应用程序。 我以前有开发本机客户端的经验,但我将简单的令牌(随机生成的字符串)存储在存储用户信息的同一表中的数据库中。所以它就像浏览器中使用的会话,但每个请求的标头中都有令牌,而不是 cookie。 最近我发现了JWT令牌。这似乎是保护私有endpoint的好方法。您可以从移动客户端请求令牌,前提是您通过登录并获得生成的

  • 我们使用nginx服务器反向代理少数微服务。每个请求都有包含JWT令牌的头。现在,我们需要做的是从JWT令牌中提取用户详细信息,并将其登录到nginx服务器上。是否有任何方法可以解码和记录JWT?我研究了几个使用JWT验证请求的lua脚本,但这不是我们需要的。此外,我们还试图避免在nginx服务器上安装Lua。 任何帮助将不胜感激。 编辑:我们也可以使用基于Lua的解决方案。

  • 我正在尝试使用JWT为跨域应用程序开发单点登录(SSO)。 在研究了一些解决方案和线程后,我决定使用以下内容:使用JWT进行跨域身份验证的单点登录流程 但我不确定,如何在资源服务器上验证IdP令牌? IdP和资源服务器是否都应该访问相同的数据源? 此外,是否有必要为每个应用程序使用唯一的资源令牌?

  • 我正在使用asp。net核心与openiddict,为了授权,我使用jwtmiddleware 但由于某些原因,它抛出了这个错误,任何帮助都将不胜感激。 info: Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerMiddleware[7] Bearer 未经过身份验证.失败消息:IDX10501:签名验证失败。无法匹配“孩子”: “7