保护您的网站是每个开发人员的目标。截至目前,有许多可能的方法来处理网站安全。使用HTTP协议,因为它是无状态的,所以有点挑战性。
什么是无国籍?
当发件人向服务器发送请求时,服务器会处理该请求并将响应发送回发件人。然后,循环结束,状态关闭。即使来自同一发件人,下一个请求也被视为新请求或新状态。简而言之,每个请求对服务器来说都是新的。
在这种情况下,如果发件人请求安全资源,则必须对发件人进行身份验证并验证其真实性,并且他们应具有访问资源的真正权限。这是通过凭证进行身份验证来完成的。
现在,因为每个请求都是无状态的,所以我们需要每次都发送用户名/密码。是的,这很可能,但根本不可行。为了解决这个问题,可以使用许多机制,其中之一是基于令牌的身份验证。
什么是基于令牌的身份验证?
在此机制中,当服务器首次收到带有用户名和密码的请求时,它会使用存储在其数据库中的值(通过注册收集)对其进行验证,并允许请求访问受保护资源,但此外,在响应中,服务器发送身份验证令牌,此令牌也存储在数据库中。当后续请求由同一用户发送时,不是发送用户名和密码,而是在请求包中发送该认证令牌。该令牌针对存储在数据库中的令牌的有效性和真实性进行验证,并且基于此,允许用户访问。
有许多基于令牌的身份验证,JSON Web令牌(JWT)就是其中之一。OAuth也是另一个众所周知的机制。JWT遵循一种不同的技术,因为它是签名的,因此更安全。这有助于检测任何修改。
什么是JWT令牌?
JSON Web令牌(JWT)是一种开放标准(RFC 7519),它是一种紧凑且独立的方式,用于在系统之间作为JSON对象安全地传输信息。此信息可以通过数字签名进行验证和信任。JWT可以使用秘密(使用HMAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。
我们为什么要使用JWT令牌?
安全
JWT对内容进行数字签名,由于只有服务器知道解密信息的秘密,因此它更加安全。如果在传输之间发生任何变化,则系统可以检测到它并提供无效的签名错误。
紧凑
JWT只是一个JSON对象,它在系统之间传输,其所有信息都是用算法编码的。由于这个大小,它可以通过URL,POST参数或内部HTTP标头发送。
快点
由于这是紧凑的,并且仅仅是一个物体,传输速度非常低。此外,它包含许多必需的信息,这些信息消除了DB调用以获取信息,从而减少了开销时间。
自包含
由于JSON令牌包含有关用户的足够信息,因此不需要多次查询数据库。
简单
由于JSON比XML简洁,因此它紧凑且尺寸更小。我们有很好的调试工具可以查看JWT的信息。(注意:虽然这是一个很好的功能,但我们必须保密信息不被泄露或公开 - 所以,不要将安全数据放在令牌中。)
JWT令牌如何工作?
1.用户首次提供用户名和密码登录。
2.服务器根据用户提供的用户名和密码对信息进行身份验证,并从数据库中检索用户信息。
3.调用JWT库以使用此信息创建JSON Web令牌(JWT),以及访问权限和权限级别。请记住,由于令牌可以被解码,因此不应在令牌中发送敏感信息。在发送令牌之前,令牌存储在与用户相关联的数据库中。
4.随后对服务器的调用,用户将JWT作为标头发送到服务器。
5.然后,服务器在授予用户访问服务器中的安全数据之前对信息进行编码并验证信息。
6.用户注销后,JWT令牌将被清除。
结论
现在,大多数Web应用程序正在使用基于JWT令牌的身份验证替换旧的基于令牌的身份验证技术。这是一种非常紧凑和轻量级的机制来保护资源。与其他基于令牌的方法相比,它非常适合且易于实施和维护。
感谢您阅读本文,我希望这能让您了解基于JWT令牌的Web身份验证。这是一种广泛采用的方法,有许多库可用于帮助实现任何技术堆栈的JWT。
领取专属 10元无门槛券
私享最新 技术干货