【问题标题】:Is checking JWT expiration enough to authorize a user?检查 JWT 过期是否足以授权用户?
【发布时间】:2018-03-06 22:30:36
【问题描述】:

我正在学习 Angular,并通过检查令牌是否过期看到了很多用户授权示例。例如,如果用户有一个令牌并且它没有过期,让他访问受保护的根。我不明白,这是作为一个简化的例子显示还是真的是通常的做法。从技术上讲,如果我的令牌没有过期但签名无效,我仍然会通过初始授权阶段并“更接近”受保护的资源。我误解了什么吗?

然后,如果我在后端也使用 Django REST JWT,它允许在服务器端使用 verify token。这意味着应该在每个操作上将请求发送到服务器。这不是一种适当的授权方式还是有其他目的?

一般来说,授权用户或用户行为的正确方法是什么?

【问题讨论】:

    标签: angular django-rest-framework jwt django-rest-framework-jwt


    【解决方案1】:

    您的客户端应用程序(Angular App)确实无法验证 JWT,也不应该能够解码 JWT 并检查过期时间。

    你的 Angular 应用应该:

    • 向 API 发送登录请求
    • 如果请求成功,则接收带有 JWT 令牌的响应
    • 将 JWT 与对 API 的每个请求一起发送。通常这是通过设置Authorization: Bearer xxxxxxxxxxxxxxx 标头来完成的。
    • 服务器/API 必须是对用户进行身份验证的服务器/API,当它收到请求时,它应该检查令牌的有效性。
    • 然后,Angular App 应该检查响应是否有异常,特别是我认为值得一提的是正确处理 401 响应。

    类似于 403 Forbidden,但专门用于需要身份验证但已失败或尚未提供身份验证时使用

    401 响应可能会返回响应消息,指示身份验证失败的方式和原因,即

    • 令牌已过期
    • 签名验证失败
    • 段数无效

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-19
      • 2011-08-05
      • 2012-08-20
      • 1970-01-01
      相关资源
      最近更新 更多