我试图做一些看似简单的事情但最终难以做到,因为我缺乏专业知识。
我部署了一个没有自定义安全性的APIM(不用担心,它不是生产!)。所以它只有 carbon.jks 。
我使用SAML2针对IDS对应用程序中的用户进行身份验证,然后使用带有应用程序密钥的APIM来获取从SAML2令牌生成的用户令牌。我从APIM获得了一个OAuth令牌,我用它来调用APIM中的API。 (请注意,我设法解决了这个问题,感谢前一段时间的另一篇文章:-))
实现API的后端会收到JWT,包括标题,用户信息和应用信息以及签名。 对于我的第一次测试,我写了自己的"你好世界"后端,记录JWT。
我使用http://jwt.io设法读取我的JWT没有任何问题。但它告诉我签名无效。 为了使签名有效,我需要一个有效的公钥。
我不知道在哪里可以找到该密钥。
我运行了RSA Public Key of WSO2carbon中描述的命令行并生成了 .cert 文件。我已经检查了 portecle (http://portecle.sourceforge.net/)中的 .cert 文件,但没有发现任何兴趣,但是在Windows中打开它给了我一个字段&# 34;公钥" ,看起来像" 30 81 89 02 81 81 00 94 a [...]" ,相当长,显然是十六进制
我在http://jwt.io尝试了这个,以及它的base64编码表示,但没有成功。
因为我想知道我的公钥在哪里,所以我也读过: How to validate a JWT from WSO2 API Manager (以及引用的链接https://asankad.org/2013/12/05/obtaining-certificate-used-to-sign-a-jwt/) 但是,提供的代码有点独立,甚至没有提到语言。我假设它是node.js,但没有关于libs或任何东西的信息。
以下是一些更精确的问题:
感谢您的任何提示! (也许我需要的只是默认公钥,因为我正在使用默认密钥库!)
答案 0 :(得分:0)
Answering myself in case anyone has the same issue.
Two things helped me out:
openssl x509 -inform der -in somekey.cer -out somekey.pem
The resulting pem worked fine with jwt.io using RS256
Hope this helps others!