在验证之后验证JWT有效负载是否是最佳实践?

在验证之后验证JWT有效负载是否是最佳实践?,jwt,Jwt,我的问题是假设JWT的实现是可靠的,更多的是关于使用有效负载之后要做什么。 我正在发布JWT令牌,然后验证每个令牌以确认用户的身份。但是,一旦令牌被验证,是否仍需要验证字段 例如,下面是一个令牌负载示例: { “iss”: “example.com”, “exp”: 1426420800, “company”: “example”, “userid”: 123456789, "name": "Bob" } 我是否需要验证“userid”是否为整数?验证“name”是否为特定

我的问题是假设JWT的实现是可靠的,更多的是关于使用有效负载之后要做什么。

我正在发布JWT令牌,然后验证每个令牌以确认用户的身份。但是,一旦令牌被验证,是否仍需要验证字段

例如,下面是一个令牌负载示例:

{
  “iss”: “example.com”,
  “exp”: 1426420800,
  “company”: “example”,
  “userid”: 123456789,
  "name": "Bob"
}

我是否需要验证“userid”是否为整数?验证“name”是否为特定长度的字符串?

这取决于您的服务器。如果它将使用JWT声明执行任何操作,例如存储一些数据,那么它应该验证执行用户是否存在并且是否有权执行此操作


JWT只处理身份验证:证明用户是谁,并且他提供了必要的信息(密码)来证明这一点。JWT不处理授权:检查授权用户可以做什么。

这取决于您的服务器。如果它将使用JWT声明执行任何操作,例如存储一些数据,那么它应该验证执行用户是否存在并且是否有权执行此操作

JWT只处理身份验证:证明用户是谁,并且他提供了必要的信息(密码)来证明这一点。JWT不处理授权:检查授权用户可以做什么

我是否需要验证
userid
是否为整数?验证
name
是否是具有特定长度的字符串

假设您的JWT实现如您在问题中所提到的那样可靠,并且假设您信任发出令牌的服务器,那么在检查签名之后,不需要进行这种级别的验证


在接受令牌之前,必须确保令牌有效。以下是您必须考虑的一些验证:

  • 验证签名以确保令牌未被篡改
  • 通过检查声明,确保令牌未过期
  • 如果使用声明,请确保现在接受令牌还为时过早
  • 验证其他声明,如需要
大多数可靠的JWT实现都支持这些验证


正如Lutz Horn所提到的,您应该只依赖JWT进行身份验证(调用方是谁)。对于授权(调用者可以做什么),请从持久性存储中查找调用者角色/权限,以获取最新信息

我是否需要验证
userid
是否为整数?验证
name
是否是具有特定长度的字符串

假设您的JWT实现如您在问题中所提到的那样可靠,并且假设您信任发出令牌的服务器,那么在检查签名之后,不需要进行这种级别的验证


在接受令牌之前,必须确保令牌有效。以下是您必须考虑的一些验证:

  • 验证签名以确保令牌未被篡改
  • 通过检查声明,确保令牌未过期
  • 如果使用声明,请确保现在接受令牌还为时过早
  • 验证其他声明,如需要
大多数可靠的JWT实现都支持这些验证



正如Lutz Horn所提到的,您应该只依赖JWT进行身份验证(调用方是谁)。要获得授权(调用方可以执行的操作),请从持久存储中查找调用方角色/权限,以获取最新信息。

这很好。谢谢你的评论!这太棒了。谢谢你的评论!谢谢@lutz horn,非常有帮助!谢谢@lutz horn,非常有帮助!