public 资源的 JWT 身份验证
JWT authentication for public resources
我尝试检查服务器中间件区域中的 JWT 访问令牌
如果 JWT 令牌已过期并且资源仅供授权用户使用,那么我 return 401 代码
但是如果用户使用 JWT 令牌请求 public 资源(为匿名用户授予),我是否应该 return 在令牌过期时显示 401 代码?
如何通知用户他们的令牌无效?
Public 资源不需要保护,因此您应该确保您的服务器中间件不会 运行 这些请求,并且无论是否发送了有效的 JWT,您都将 return 状态码为 200 的资源。
这通常是通过采用如下所示的路径约定来完成的。如果资源是 public,您将不会在意是否有黑客访问它们。
/public/docs
/public/news
我见过人们以基本方式保护 public 资源,例如通过固定 API 密钥,以限制拒绝服务风险,但我通常不推荐这样做。值得一提的是,在那种情况下,这些路径将使用不同的服务器中间件。
对于安全端点,正确验证 JWT 并遵循 Best Practices:
- 使用库来验证签名、过期时间、发行者和受众
- Return 如果其中任何一个失败,则返回 401 状态
- 然后使用范围和声明进行业务授权检查 - 例如检查用户是否允许访问所请求的实际数据
- 如果业务授权失败,return 403(或 404 - 未找到用户)状态
我尝试检查服务器中间件区域中的 JWT 访问令牌
如果 JWT 令牌已过期并且资源仅供授权用户使用,那么我 return 401 代码
但是如果用户使用 JWT 令牌请求 public 资源(为匿名用户授予),我是否应该 return 在令牌过期时显示 401 代码?
如何通知用户他们的令牌无效?
Public 资源不需要保护,因此您应该确保您的服务器中间件不会 运行 这些请求,并且无论是否发送了有效的 JWT,您都将 return 状态码为 200 的资源。
这通常是通过采用如下所示的路径约定来完成的。如果资源是 public,您将不会在意是否有黑客访问它们。
/public/docs
/public/news
我见过人们以基本方式保护 public 资源,例如通过固定 API 密钥,以限制拒绝服务风险,但我通常不推荐这样做。值得一提的是,在那种情况下,这些路径将使用不同的服务器中间件。
对于安全端点,正确验证 JWT 并遵循 Best Practices:
- 使用库来验证签名、过期时间、发行者和受众
- Return 如果其中任何一个失败,则返回 401 状态
- 然后使用范围和声明进行业务授权检查 - 例如检查用户是否允许访问所请求的实际数据
- 如果业务授权失败,return 403(或 404 - 未找到用户)状态