2016-07-27 214 views
1

我试图更好地理解JWT以及如何正确使用它。JWT中的公钥和私钥治理

在常见的JWT用例(如基于JWT的认证或oauth中的JWT访问令牌)中,验证JWT令牌客户端是否有意义?特别是,我要求这样更好地理解JWT签名和加密中涉及的公钥和私钥的需求。如果客户端不需要验证JWT签名,则服务器不需要提供公钥。如果这是真的,我甚至不需要全面的X.509证书:裸露的公钥/私钥对或自签名证书就足够了,对吧?

所以,这一切都归结为一个问题:处理智能手机中使用的非对称密钥的正确方法是什么?我需要一个公钥基础设施还是一个简单的私钥/公钥?

据我所知,JWT规范没有涵盖这一点:但我很想知道真正的JWT使用中的常见做法。

当然,这个问题与https所涉及的证书无关:我只是谈论JWT签名和加密中使用的密钥。

回答

1

验证JWT令牌客户端是否有意义?

如果您使用令牌有效载荷数据在客户端执行操作,并且您需要信任该令牌,那么这很有意义。如果您在服务器中使用令牌进行身份验证,请让服务器验证签名。

如果这是真的,我甚至不需要完整的X.509证书:裸露的公钥/私钥对或自签名证书就足够了,对吧?

我需要一个公钥基础结构还是一个简单的私钥/公钥?

您可以使用可信证书,自签名证书或简单的RSA密钥对。通常使用自动生成的密钥对。但是,如果您不打算验证客户端上的签名,则可以使用HMAC对称密钥(而不是非对称密钥