公共资源的 JWT 认证

马克西姆

我尝试检查服务器中间件区域中的 JWT 访问令牌

如果 JWT 令牌已过期并且资源仅供授权用户使用,则返回 401 代码

但是,如果用户使用 JWT 令牌请求公共资源(授予匿名用户),我是否应该在令牌过期时返回 401 代码?

如何通知用户他们的令牌无效?

加里·阿彻

公共资源不需要保护,因此您应该确保您的服务器中间件不会针对这些请求运行,并且无论是否发送了有效的 JWT,您都将返回带有 200 状态码的资源。

这通常通过采用如下所示的路径约定来完成。如果资源是公开的,您就不会在意黑客是否访问它们。

/public/docs
/public/news

我见过人们以一种基本的方式保护公共资源,例如通过固定的 API 密钥,以限制拒绝服务风险,尽管我通常不会推荐这样做。值得一提的是,在这种情况下,这些路径将使用不同的服务器中间件。

对于安全端点,请正确验证 JWT 并遵循最佳实践

  • 使用库来验证签名、到期、发行人和受众
  • 如果其中任何一个失败,则返回 401 状态
  • 然后使用范围和声明进行业务授权检查 - 例如检查允许用户访问请求的实际数据
  • 如果业务授权失败,返回 403(或 404 - not found for user)状态

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章