验证前使用JWT有效载荷
我正在将JWT集成到我的服务中,移动客户端将使用它。其思想是在有效负载中包含用户id,并在客户端上使用用户的私钥登录。然后,在服务端,提取用户id并使用公钥验证签名。似乎有相当多的人这样做,这是基于在验证之前如何提取JWT负载的问题。但另一方面,通常会说“在信任JWT中的任何信息之前,始终要验证签名”验证前使用JWT有效载荷,jwt,Jwt,我正在将JWT集成到我的服务中,移动客户端将使用它。其思想是在有效负载中包含用户id,并在客户端上使用用户的私钥登录。然后,在服务端,提取用户id并使用公钥验证签名。似乎有相当多的人这样做,这是基于在验证之前如何提取JWT负载的问题。但另一方面,通常会说“在信任JWT中的任何信息之前,始终要验证签名” 正确的方法是什么?我是否应该将用户id和签名包含到有效负载中,然后使用客户端私钥对其进行签名?JWT身份验证通常在两阶段身份验证逻辑中使用。 首先,通过SSL在基本身份验证请求中提供用户id和密码
正确的方法是什么?我是否应该将用户id和签名包含到有效负载中,然后使用客户端私钥对其进行签名?JWT身份验证通常在两阶段身份验证逻辑中使用。 首先,通过SSL在基本身份验证请求中提供用户id和密码。 如果由服务验证,服务将创建一个JWT访问令牌并将其发送回客户端。 其次,客户机可以使用此JWT进行身份验证(通过SSL),直到其生命周期结束。 实际上不需要使用非对称方法对有效负载进行签名。您可以更快地使用对称密钥,因为您不必在客户端对其进行解密
您可以在网站上找到更多详细信息。您的身份验证过程绝对有效。需要从有效负载中提取userid声明来定位匹配的公钥。只有在验证签名后,您才能“信任”发行人
在通常的网站身份验证方案(例如使用用户名/pwd登录)中,令牌由服务器使用唯一的密钥颁发,因此服务器不需要检查有效负载来选择验证密钥。但是,当私钥由客户端拥有时,在移动设备的情况下,每个jwt都有不同的签名密钥,因此您的验证过程与通常的验证过程不同,使用非对称的RSA私钥/公钥算法,您应该在访问负载之前验证您的令牌。使用pub密钥,您可以验证令牌并解码有效负载:
HMAC
进行单密钥验证(默认算法),您可以在客户端解码base64中的有效负载,而无需在客户端验证令牌:
JWT secret
为JWT令牌签名,以创建令牌并将用户id添加到有效负载李>