我需要从 JWT 中提取声明。
看来这应该是理所当然的事情。
它已签名,从我得到的标题中:
{
"alg": "RS256",
"typ": "JWT"
}
Run Code Online (Sandbox Code Playgroud)
智威汤逊:
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX25hbWUiOiJtYXJrLnN0YW5nQGRoaWdyb3VwaW5jLmNvbSIsInNjb3BlIjpbIm9wZW5pZCJdLCJyb2xlcyI6WyJKT0JTRUVLRVIi XSwiam9ic2Vla2VySWQiOiJ3TDFkTWdQckZWOUl5dEZZIiwiZXhwIjoxNDg4Mzk1ODE5LCJhdXRob3JpdGllcyI6WyJKT0JTRUVLRVIiXSwianRpIjoiNWRiYjNkYzQtNGI3NC00MDYyLTgzMmQtYjE1MTgw YWZhZjllIiwiY2xpZW50X2lkIjoiZWZjIn0.NxiF4x39na3KdDUFz2zxqy1zSfJkj4FdKHflpgJUxzMgBq8bbJIFVkmwAUYA6_YXm6kGFcyTMgdiRIJpqc5buDPdV1vkzh4QKFTxMz9MF4i3vtIQ21V m5W12KikWdWGGUXMD4udJwu7rmuIBtNIa-ciZOPADNrrXfuw7iML1xxAA-C0f4OTbiKqiXr3QEUZwcqZB17qfh_dVRRxgO-_uHUg84JDcpXEDQPzPWX68u1EHH4J6IcpMKn1VY9k3RcZU6pq-ndzQgBlKd VM2owA6i-UM9p1zSz7ZX_2wx0czEEcNF1rMdeIv5yxP9YEpWb14-GUG4qgpn_rAIQBJ7eu7xw
它在 jwt.io 网站上解码得很好,但由于我没有“秘密”密钥,所以它显示为“无效签名”。这很好,我不想验证它。
我想要的只是声明,但是当我使用 Java 库对其进行解码时,除了错误之外什么也没有得到。
如果我手动解码它(即 split/base64 解码),那就没问题了。
那么,我对 Java 库做错了什么?
一旦问题被标记为jose4j,我知道您正在使用jose4j来解析 JWT 令牌。
在这种情况下,您可以setSkipSignatureVerification()
从JwtConsumerBuilder
. 它允许您在不验证签名的情况下解析声明:
JwtConsumer jwtConsumer = new JwtConsumerBuilder()
.setSkipSignatureVerification()
.build();
JwtClaims jwtClaims = jwtConsumer.processToClaims(jwt);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17725 次 |
最近记录: |