当前位置: 首页 > 知识库问答 >
问题:

主要使用JWT的无状态身份验证真的安全吗?

宇文念
2023-03-14

我一直有一个问题,即JWT是否真的安全?因为在对声明和有效载荷进行编码时,我们可以很容易地对令牌进行解码,并且在那里的网站上也很好地给出了这种解码。所以我的观点是,任何人都可以简单地使用burpsuite之类的工具更改auth头,并提供一些其他有效的令牌,对假用户进行身份验证。按照许多人的建议,将令牌存储在本地存储中也可能不太安全。所以我的问题是,与加密的cookie或会话相比,它真的是安全的吗?无状态身份验证的好处是什么。?我读了很多文章,说JWT适合单页应用程序。这是真的吗?

共有1个答案

龚寂弦
2023-03-14

访问令牌通常在调用者出示其硬凭据(如用户名和密码)后颁发。要访问受保护的资源,调用方需要向服务器发送访问令牌,以便对每个请求执行身份验证。

在Web应用程序中,访问令牌不应由JavaScript访问,也不应存储在本地存储中。相反,访问令牌应通过HTTPS连接发送并存储在设置了SecureHttpOnly标志的cookie中:

4.1.2.5. 安全属性

安全属性将cookie的范围限制为“安全”通道(其中“安全”由用户代理定义)。当cookie具有安全属性时,仅当请求通过安全通道传输时(通常是HTTP over Transport Layer Security(TLS)),用户代理才会在HTTP请求中包含cookie。[...]

4.1.2.6. HttpOnly属性

HttpOnly属性将cookie的范围限制为HTTP请求。特别是,该属性指示用户代理在通过“非HTTP”API(例如将cookie公开给脚本的Web浏览器API)提供对cookie的访问时省略cookie。[...]

在JWT中,有效负载是编码为Base64的JSON字符串。因此它不适合存储敏感详细信息,例如密码。

签名令牌允许服务器执行无状态身份验证,也就是说,只需检查访问令牌内容就可以知道用户是谁。服务器将不依赖外部服务对用户进行身份验证。

JWT令牌应该使用强加密密钥(必须在服务器上保持安全)签名,并且在信任令牌之前必须检查签名。

 类似资料:
  • 我已经实现了一个无状态服务器,它使用JWT让用户访问api。我关心的是安全问题。之前也有同样的问题,但没有得到很好的回答:JWT、无状态身份验证和安全性 问题:使用一些因素,如JWE(加密令牌)或使用强秘密来签署令牌 如果秘密钥匙被盗怎么办?然后,无论我们使用了多少安全层,黑客都可以使用密钥生成有效令牌并访问所有API。是否有任何解决方案使其更安全?

  • 我试图理解为什么JWT认证是无状态的。在有状态认证中,会有一个会话id。这里有一张JWT的代币,上面有签名。所以身份验证服务器发布JWT令牌,但是我可以说后续请求中JWT令牌的验证是由endpoint服务器(应用服务器)而不是身份验证服务器来完成的吗?我相信这是可能的,因为JWT是用截止日期(还有一些其他信息)签名的,并且认证服务器的公共证书对所有endpoint服务器都是可用的。 因此,认证服务

  • 我正在使用SpringBoot开发具有微服务架构的Rest Backend。为了保护endpoint,我使用了JWT令牌机制。我正在使用Zuul API网关。 如果请求需要权限(来自JWT的角色),它将被转发到正确的微服务。Zuul api网关的“WebSecurityConfigrerAdapter”如下。 这样,我必须在这个类中编写每个请求授权部分。因此,我希望使用方法级安全性,即“Enabl

  • 我正在开发一个具有自己的身份验证和授权机制的REST应用程序。我想使用JSON Web Tokens进行身份验证。以下是有效且安全的实现吗? < li >将开发一个REST API来接受用户名和密码并进行认证。要使用的HTTP方法是POST,因此没有缓存。此外,在传输时还会有安全SSL < li >在认证时,将创建两个JWTs访问令牌和刷新令牌。刷新令牌将具有更长的有效期。这两个令牌都将写入coo

  • 我引用的是另一篇讨论在JWT中使用刷新令牌的SO帖子。 JWT(JSON Web令牌)自动延长到期时间 我有一个应用程序,它具有一个非常通用的体系结构,在这个体系结构中,我的客户机(web和移动)与一个REST API对话,然后再与一个服务层和数据层对话。 令牌每小时由客户端刷新一次。 如果用户令牌未被刷新(用户处于非活动状态且应用程序未打开)并且过期,则无论何时他们想要恢复,都需要登录。 我看到

  • 我正在使用Spring Boot的最新版本,并且正在尝试设置StatelessAuthenticaion。到目前为止,我一直在读的教程非常模糊,我不确定我做错了什么。我使用的教程是... http://technicalrex.com/2015/02/20/Stateless-Authentication-with-spring-security-and-jwt/ code>TokenAuthen