jsonwebtoken.verify 方法从 keycloak 令牌中给出错误

Posted

技术标签:

【中文标题】jsonwebtoken.verify 方法从 keycloak 令牌中给出错误【英文标题】:jsonwebtoken.verify method giving error from keycloak token 【发布时间】:2022-01-10 04:47:04 【问题描述】:

我使用 /auth/realms//protocol/openid-connect/certs 端点并对从此端点返回的 x5c 公钥进行硬编码,以尝试使该代码正常工作(包装在 BEGIN RSA/END RSA 标记中),如下所示:

let x5c = "MIICnTCCAYUCBgF9TkI2ijANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDDAdldmlkZW5zMB4XDTIxMTEyMzE5MjMyMVoXDTMxMTEyMzE5MjUwMVowEjEQMA4GA1UEAwwHZXZpZGVuczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALgx8kfUyhUz6146LcXJHykE5d/kfkJGHZ1+AH4wfk0Z1rGeNqRUH7bllutre2xrq/EfuKGkuUul8uf7WH3GTyOFJyr1MECnzilYdN8onobpVHXr3SwANCACMsh6tFc6oiQT0XEt1ovzTzB6vxA6qmmsdLPG9giJ9eNqJNHHQiIJosF3yBBoNFDiQDonRNdWNQz5JVxbsdIOhFrdD+mDU0ry9FIs6qMAvD84QVBOzJr/IOCdSy3bfWYyAUsLHqoJbytAzl5EgjVSU2UT+HLs7M2wfZoRGITztmvkcPjqd7PnSOuuAimonwP7uKHtvG+edRabyHaBDSemEA1LUs7+FGkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAIh4QCe6Y3fJtDV6nBi/E3CGo/SIjDCmNnOV413QtmwODZSWFqo6pxs2fJoDb8jIkTf+l8/bI+mKEesXK1CptBpXXyo7Il0jhk5M0c1VT7EkLa/jkVFNr0CoB3UmH56/29Qp8+Xr8TaejGjgS8HoxAMpSFrtjPlKElCcy8dVQgRMxFonry5Iipd4vutc8Afe/GLzJew0IJ5Az1VUum3bJD0IfeecB8F+YOMmaET0oJIQyfdUxVI985Ui30q4K8/p34+WqwvNy2x4vuulvDVRBsHG64PStzhqZQfsfi59lOps4WvYlQ1JEHTu3acZMyTzij6wrVTAFoh1C3FptZ0wPoQ==";
let pemEncoded = `-----BEGIN RSA PUBLIC KEY-----\n$x5c\n-----END RSA PUBLIC KEY-----\n`;
const payload = verify(token, pemEncoded,  "algorithms": ["RS256"] ));

但我认为我没有正确的 PEM,我整天都在努力寻找如何设置此证书以进行验证。错误显示“错误:0D0680A8:asn1 编码例程:asn1_check_tlen:wrong tag”。令牌是有效的,但它不喜欢我的证书。知道我在这里做错了什么吗?

在这种情况下,将此证书传递给 jsonwebtoken.verify 方法的正确方法是什么?谢谢!

【问题讨论】:

【参考方案1】:

那是证书,所以:

let pemEncoded = `-----BEGIN CERTIFICATE-----\n$x5c\n-----END CERTIFICATE-----\n`;

【讨论】:

以上是关于jsonwebtoken.verify 方法从 keycloak 令牌中给出错误的主要内容,如果未能解决你的问题,请参考以下文章

PySpark - sortByKey() 方法以原始顺序从 k,v 对返回值

k折交叉验证模型选择方法

从候选列表中找到最佳 k-means

nth_element 使用方法

从元素具有权重的列表中选择 k 个随机元素

通过 SVD 从基本矩阵中提取翻译的正确方法