REST 安全性,使用基本身份验证加上 jwt 令牌验证是一种不好的做法吗?
REST security, is a bad practice to use basic auth plus jwt token verification?
我正在制作一个安全的休息服务,我已经使用基本身份验证加上之前获得的 jwt 令牌对其进行了保护,我是否使安全性太强了或者这是必须遵循的必要途径?
同时使用 HTTP Basic 身份验证和 JWT 令牌不会使应用程序更安全,它实际上会降低安全性和处理起来更复杂。
HTTP Basic 身份验证由用户代理(通常是浏览器)完成。它会将 Authorization: Basic <payload>
header 永久添加到每个请求中。您无法注销。除非您关闭代理,否则它将在那里。唯一的好处是可以使此身份验证无效。而且我们通常不对人类使用这种身份验证,但仅用于微服务,因为浏览器处理不当(忘记关闭选项卡并注销,如果有人物理访问您的计算机,您就完了)。
JWT 好一点。它可能会过期。但不能失效(至少不设置额外的基础设施)。
现在你得到的是两个世界中最糟糕的一个。您无法注销。如果您的 JWT 令牌过期,它将被重新生成,因为您仍然拥有 Basic Auth。如果您使基本身份验证无效,您可能(也许 - 需要检查它以确保 100% 确定)仍然使用 JWT 令牌访问应用程序,直到它过期。
不要相信我的话。只需检查 JWT 令牌过期后,您是否仍然可以访问该应用程序以及 JWT 令牌会发生什么情况。
我曾经使用 JSESSIONID 进行基本身份验证和普通身份验证。混音也不行。
我正在制作一个安全的休息服务,我已经使用基本身份验证加上之前获得的 jwt 令牌对其进行了保护,我是否使安全性太强了或者这是必须遵循的必要途径?
同时使用 HTTP Basic 身份验证和 JWT 令牌不会使应用程序更安全,它实际上会降低安全性和处理起来更复杂。
HTTP Basic 身份验证由用户代理(通常是浏览器)完成。它会将 Authorization: Basic <payload>
header 永久添加到每个请求中。您无法注销。除非您关闭代理,否则它将在那里。唯一的好处是可以使此身份验证无效。而且我们通常不对人类使用这种身份验证,但仅用于微服务,因为浏览器处理不当(忘记关闭选项卡并注销,如果有人物理访问您的计算机,您就完了)。
JWT 好一点。它可能会过期。但不能失效(至少不设置额外的基础设施)。
现在你得到的是两个世界中最糟糕的一个。您无法注销。如果您的 JWT 令牌过期,它将被重新生成,因为您仍然拥有 Basic Auth。如果您使基本身份验证无效,您可能(也许 - 需要检查它以确保 100% 确定)仍然使用 JWT 令牌访问应用程序,直到它过期。
不要相信我的话。只需检查 JWT 令牌过期后,您是否仍然可以访问该应用程序以及 JWT 令牌会发生什么情况。
我曾经使用 JSESSIONID 进行基本身份验证和普通身份验证。混音也不行。