【发布时间】:2021-11-12 06:13:27
【问题描述】:
我尝试检查服务器中间件区域中的 JWT 访问令牌
如果 JWT 令牌已过期且资源仅供授权用户使用,则返回 401 代码
但是如果用户使用 JWT 令牌请求公共资源(授予匿名用户),我应该在令牌过期时返回 401 代码吗?
我如何通知用户他们的令牌无效?
【问题讨论】:
-
请提供足够的代码,以便其他人更好地理解或重现问题。
我尝试检查服务器中间件区域中的 JWT 访问令牌
如果 JWT 令牌已过期且资源仅供授权用户使用,则返回 401 代码
但是如果用户使用 JWT 令牌请求公共资源(授予匿名用户),我应该在令牌过期时返回 401 代码吗?
我如何通知用户他们的令牌无效?
【问题讨论】:
公共资源不需要保护,因此您应该确保您的服务器中间件不会针对这些请求运行,并且无论是否发送了有效的 JWT,您都会返回带有 200 状态码的资源。
这通常通过采用如下路径约定来完成。如果资源是公开的,您将不会在意黑客是否访问它们。
/public/docs
/public/news
我见过人们以基本的方式保护公共资源,例如通过固定的 API 密钥来限制拒绝服务的风险,尽管我通常不建议这样做。值得一提的是,在这种情况下,这些路径将使用不同的服务器中间件。
对于安全端点,正确验证 JWT 并遵循Best Practices:
【讨论】: