我的目标是使用jsonwebtoken verify方法验证JSON Web Token(JWT)格式的id_token,该方法需要一个公钥作为第二个参数。
根据Ping ID's documentation,我应该使用指数(e)和模数(n)来生成RSA公钥。下面是一个适用于我的id_token的示例:
{
"kty": "RSA",
"kid": "IlOPtWXUcpiPttmr-K7DmehzeRM",
"use": "enc",
"n": "qv2XCvfUfW0bG547B1xieE0-GN8xLuCdzGcIWsYMP-fn1vR2ptR7XOp_kW-etlxSDT2MVyzdXbG9eQCgeBk-Ajgbyn4AaFScJt9ibGyE-5hUvkSJRTP-jlJjlPniYsKcjEY3C-QzyRcEIHoOHOEuevIFwVvKNRgEVYyx3CmkmIXcfw35R1tORNjCec_NA6dawx_LPpS0endjNz2m_iijLquKenrsKSKVnBprfVtBh_myuNQD5CfhBnzZRmAUfr0PoVMDBb0r_rWaV1Q64zQWSeCql7CSWq4U8RNhogd0eCZOOv45plIUwoxkdNg0Rzkp-OEtKRLaHonJ_OZ_sxa8-w",
"e": "AQAB"
},
问题是,我如何使用这些值生成公钥?有没有一个节点js库可以做到这一点?
我是密码学的新手,所以请原谅我的初学者问题。
2条答案
按热度按时间6l7fqoea1#
您可以使用节点的Crypto模块轻松地将jwk转换为公钥(pem),而无需使用外部依赖项。
然后可以使用它来验证jwt。
deyfvvtc2#
如果你想使用
jsonwebtoken
的verify
方法,那么你可以通过将jwk
转换为pem字符串来实现,例如,使用jwt-to-pem
。使用package's website上的例子,它是这样的:首先安装
然后你转换并使用
我在
node
的crypto
文档中看到,你应该能够在没有外部依赖的情况下完成它,但是我没有管理它!