我的问题是JWT的实施是合理的,而且更多的是关于你之后使用有效负载做的事情。
我正在发行JWT令牌,然后验证每个令牌以确认用户的身份。但是,一旦验证了令牌,是否还需要验证字段?
例如,这是一个示例令牌有效负载:
{
“iss”: “example.com”,
“exp”: 1426420800,
“company”: “example”,
“userid”: 123456789,
"name": "Bob"
}
我是否需要验证'userid'是否为整数?验证'name'是一个特定长度的字符串?
答案 0 :(得分:2)
我是否需要验证
userid
是否为整数?验证name
是一个特定长度的字符串吗?
假设你的JWT实现 sound 正如你在问题和中提到的那样,假设你信任发出令牌的服务器,那么在没有必要这样的验证级别之后检查签名。
在接受令牌之前,您必须确保令牌有效。以下是您必须考虑的一些验证:
大多数声音 JWT实现都支持这些验证。
如Lutz Horn的answer所述,您应该仅依靠JWT进行身份验证(来电者)。对于授权(调用者可以执行的操作),从持久存储中查找调用者角色/权限以获取最新信息。
答案 1 :(得分:1)
这取决于您的服务器。如果它使用JWT声明做任何事情,例如存储一些数据,它应该验证执行用户是否存在并且授权来执行此操作。
JWT只处理身份验证:证明用户是他是谁,并且他提供了必要的信息(密码)来证明这一点。 JWT 不处理授权:检查经过身份验证的用户可以执行的操作。