Authentication 使用JWT-以用户的电子邮件为主题对用户进行身份验证可以吗?

Authentication 使用JWT-以用户的电子邮件为主题对用户进行身份验证可以吗?,authentication,jwt,Authentication,Jwt,我不熟悉身份验证,只是在一个小型express应用程序上尝试JWT身份验证 我已经使用JWTs设置了一个用户身份验证,并且我正在使用主题作为用户的电子邮件 这是一种好的做法吗 如果我在JWT.io上解码JWT,我会看到: { "sub": "test_user_3@test.com", "iat": 1489963760, "exp": 1490568560 } 这就是它的工作原理吗 子索赔必须是唯一的。由于电子邮件地址是唯一的,因此它是索赔的合理选择 看 4.1.2。“子”(主题

我不熟悉身份验证,只是在一个小型express应用程序上尝试JWT身份验证

我已经使用JWTs设置了一个用户身份验证,并且我正在使用主题作为用户的电子邮件

这是一种好的做法吗

如果我在JWT.io上解码JWT,我会看到:

{
  "sub": "test_user_3@test.com",
  "iat": 1489963760,
  "exp": 1490568560
}

这就是它的工作原理吗

子索赔必须是唯一的。由于电子邮件地址是唯一的,因此它是索赔的合理选择

4.1.2。“子”(主题)索赔

“sub”(subject)声明标识了 JWT的主题。JWT中的声明通常是声明 关于这个话题主题值的范围必须为 在发行人的背景下是本地唯一的,或者是全球唯一的。 本索赔的处理通常是针对具体应用的


确保两个用户不使用相同的电子邮件地址注册自己,例如使用像
info@test.com

谢谢。但是这样好吗?如果有人获得了JWT,他们可以找到用户的电子邮件。如果有人获得了JWT,那么您就有问题了,因为他/她可以在您的API中模拟用户。您必须保护它:使用https和安全存储。在JWT中包含索赔并不意味着每个人都可以访问它。关于您的问题,您需要考虑在您的系统上下文中,电子邮件或其他声明是否可以被视为敏感数据。在这种情况下,请小心使用它们,或者不要将它们包含在令牌中。例如,您可以使用随机用户ID而不是EmailThank。这很有帮助。我不想打扰您太多,但是您是否介意提供更多关于保护API部分的信息,或者您是否知道任何好文章。现在我有了一个新的担忧,那就是有人会得到JWT并开始摆弄我的API,就好像他们是用户/客户机一样!例如,有人可以打开邮递员拦截器,开始摆弄。感谢您仅使用SSL/TLS(https)屏蔽您的API端点。客户端和服务器之间的通信通道将被加密,因此嗅探网络的任何人都看不到内容。对于一个“正常”网站,是的-查看维基百科上“主体”的定义有助于我理解这一点。你必须记住,这些令牌可以被其他人使用,而不是通过电子邮件<代码>主体可以是个人、计算机、服务、计算实体,如进程和线程,或者任何一组这样的东西。因此,在您的系统上下文中,最有意义的是保持唯一性。请注意,如果您允许用户更改其电子邮件地址,您会同时给他们一个新令牌,或者他们会立即被锁定:)