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

无记名令牌认证和JWT

田兴朝
2023-03-14

我已经提供了一个REST API,它具有身份验证类型承载(安全方案类型:API密钥,标头参数名称:授权),我用它来验证用户,然后获取其他数据(我只会使用反应创建前端)。

作为第一步,用户登录,我将他/她的用户名密码发送到预先提到的 REST API,并取回访问权限和刷新令牌。

将这两个令牌存储在cookie中以便在后续请求中使用它们有什么问题吗?对于这两个标志,JWT是如何发挥作用的?在这种情况下,JWT对我有用吗?

共有2个答案

金伟
2023-03-14

根据我对这个问题的理解,您正在使用一个身份提供者,它为您提供用户的访问令牌和刷新令牌。这意味着它是一个身份验证即服务REST API。

REST API 要求将授权标头与用户名密码一起传递,以交换用户的访问令牌和刷新令牌。(如果我错了,请纠正我)在这种情况下,您可能希望使授权标头远离用户(请参阅身份验证即服务文档)。

您使用有效负载(用户密码)以及如下标头调用REST API:

Authorization: ACCESS_TOKEN

但是,ACCESS_TOKEN是供应商提供给您使用REST API的。成功调用REST API时,它应该返回一组访问令牌和刷新令牌。然后,您可以使用此访问令牌和刷新令牌来安全保护您自己的API,您控制的API为您的用户提供服务。

访问令牌和刷新令牌可能只是 JWT 令牌(再次查阅供应商文档)。

此外,如果您使用的是身份验证即服务 REST API,请查看文档是否提供客户端 sdk。在这种情况下,它应显示处理访问令牌和刷新它返回的令牌的最佳做法。

卢才艺
2023-03-14

将令牌存储在cookies中没有错,但是如果您计划使用React开发一个单页面应用程序,那么将这些令牌存储在内存中就足够了。一旦用户刷新页面,您可以让他们再次登录,或者在后台执行静默登录以获得一组新的令牌。在这两种情况下,保留在授权服务器上的会话都应该生效,并且您应该在不需要用户交互的情况下获得新的令牌。

如果您不将代币保存在cookie中,您的代币将更加安全。

JWT 不是访问和刷新令牌的要求。如果您不必使用它们,我建议您使用不透明的令牌。也就是说,由于您无法控制 API,因此您可能仅限于 API 所需的格式。如果您不想受此格式的限制,则可以设置自己的网关,您可以使用该网关执行令牌交换或自检,并使用适当的令牌将请求转发到 API(称为幻像令牌模式

 类似资料:
  • 最后,我实现了UserDetailsService接口

  • 我正在努力围绕JWT身份验证进行思考。我读了很多文章和SO问题,但是其中一些已经过时了,我仍然没有得到满意的答案。 我读过这个SO问题,从JoséF.Romaniello的回答中我明白: 使用刷新令牌,客户端在旧的访问令牌过期之前请求新的访问令牌(这是正常的,预期行为) 在移动应用上,代币永不过期 同样在 auth0 上它说: 您可以请求新的访问令牌,直到刷新令牌在DenyList上。应用程序必须

  • 我正在使用wordpress rest api的JWT认证插件进行api访问认证,但问题是< code > https://example . com/WP-JSON/jwt-auth/v1/token 正在生成不允许的错误。 例如,如果我尝试在postman中运行此url``https://example.com/wp-json/jwt-auth/v1/token`该API还需要身份验证,因为它

  • 问题内容: 我正在编写一个想同时用作Web应用程序和API提供程序的nodejs应用程序。验证用户身份后,我想为该用户分配一个令牌,以用于后续请求。这对于Web应用程序的通行证非常有用,因为我只是在会话中使用令牌对用户进行序列化和反序列化。但是,在响应API请求时,没有用于设置存储会话信息的cookie。理想情况下,护照将在会话和请求正文中都寻找令牌。有什么方法可以配置通行证来完成此任务吗? 问题

  • 问题内容: 我已经阅读了《 Django Rest Framework指南》并完成了所有教程。一切似乎都有意义,并且按应有的方式工作。我得到了如上所述的基本身份验证和会话身份验证。 http://django-rest-framework.org/api-guide 但是,我在文档的令牌认证部分苦苦挣扎,它缺少或没有教程那么深入。 http://django-rest-framework.org/

  • 我们在应用程序中使用一键式操作电子邮件标记。我们的电子邮件已被列入白名单,我们将发送电子邮件的电子邮件ID(XXX@YYY.com)列入白名单。 当我们尝试验证不记名令牌时,我们得到AppIdentityError:错误的收件人。完整堆栈跟踪: 文件“/app/components/happier_pages/py/lib/oauth2client/util.py”,第142行,位置_wrappe

  • 我目前正在使用Vapor开发Swift后端。我的iOS客户端使用新的iOS 13功能“使用Apple登录”。当用户登录时,我会得到一个身份令牌(访问令牌),这是一个由Apple签名的有效JWT令牌。这将在所有正在进行的通信中发送到服务器,以验证服务器提供的某些路由。 在服务器上,我想通过验证令牌签名来验证发送的令牌是否确实由Apple签名,并且不是由某些恶意用户专门创建的。Apple提供了一个HT