使用JWT发送用户名,密码进行身份验证

时间:2017-02-12 14:29:33

标签: javascript jwt

刚开始查看JWT,我首先看到的示例要求用户使用包含纯文本用户名和密码的请求正文进行POST请求。 在对此请求进行身份验证之后,将发送一个JWT,然后使用它作为进一步的请求。

显然,我在这里遗漏了一些东西,但是我是否只是在第一次请求时发送了不安全的数据?这是我需要HTTPS的地方吗?

2 个答案:

答案 0 :(得分:3)

JWT并没有提供开箱即用的安全性,它的主要目的是确保令牌不被不受信任的权限更改。它只是验证内部数据是否正确。

然而,JWT本身,它的数据块是任何人都可读的,你可以在客户端上解析它,如果你愿意,也可以从中读取userName / email /,这样攻击者也可以读取它,如果数据块本身未加密。

HTTPS会加密客户端< - >之间传递的所有数据。服务器。它与身份验证无关,它只是一个协议,你应该使用它,无论是否使用JWT。

答案 1 :(得分:2)

JWT用于验证之前已经向服务器验证过自己的用户,并且在无状态环境中非常有用,而不是在有状态的环境中。

JWT的目的是在用户上存储足够的数据,以便接收它的服务器可以使用它来决定用户是否合法以及他能做些什么。它们在分布式环境中非常有用,因为您可以将JWT从一个服务器传递到另一个服务器,只要它们都持有签名密钥,它们就能够仅根据令牌对用户进行身份验证。

只有第一个请求中的服务器才需要用户名和密码,因此服务器可以根据用户数据库对用户进行身份验证,然后,之后的每个请求都将使用该令牌,使服务器能够验证用户,而不是在每次请求时再往返数据库。

就HTTPS而言,我会说 - 将它用于一切。在今天的无线网络中,您的数据比以前更加暴露。