【发布时间】:2018-02-17 02:47:59
【问题描述】:
我使用 jsonwebtoken 模块实现了 jwt 身份验证。但是在生成和验证 jwt 令牌时,我是否需要为每个用户创建和管理任意密钥?为每个用户单独管理密钥与使用一个密钥生成和验证 jwt 令牌之间有区别吗?
【问题讨论】:
我使用 jsonwebtoken 模块实现了 jwt 身份验证。但是在生成和验证 jwt 令牌时,我是否需要为每个用户创建和管理任意密钥?为每个用户单独管理密钥与使用一个密钥生成和验证 jwt 令牌之间有区别吗?
【问题讨论】:
不,您使用单个密钥来签署您的令牌。这是因为当令牌在请求中返回给您时,您需要能够解码令牌,此时您不知道是否是真正的用户发送您的令牌,因为您还没有验证它.
使用单一密钥来签署和验证您的令牌,并记得妥善保管。
【讨论】:
为每个用户单独管理密钥与使用一个密钥生成和验证 jwt 令牌之间有区别吗?
简短的回答是否定的,就 JWT 而言,密钥就是密钥。
长答案是视情况而定。 JWT secret 的目的是确保消息的完整性,通常这是您在颁发者(服务器)级别执行的操作,作为验证消息来源的一种方式。通俗地说,如果服务器可以验证签名,那么它就可以信任内容。
用户级别的机密将信任降低了一个级别,因为您不关心哪个服务器生成了消息,而是关心哪个 用户 生成了消息。在典型的身份验证令牌场景中,您确实需要更多的服务器信任。
【讨论】: