亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

DefaultJwtParser:如何只解碼 JWT?(沒有密鑰,沒有驗證)

DefaultJwtParser:如何只解碼 JWT?(沒有密鑰,沒有驗證)

慕尼黑8549860 2023-05-24 14:59:07
我不想使用密鑰(我沒有)驗證 JWT,我只想解碼 JWT 并讀取有效負載。這可以使用 jsonwebtoken.io:jjwt 來實現嗎?API 中似乎缺少一種方法。當然,我可以自己對令牌進行拆分和 Base64 解碼,但感覺就像是 JWT 庫所期望的最基本的功能;因此我懷疑我遺漏了什么。
查看完整描述

3 回答

?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

試試下面的代碼:


int i = jws.lastIndexOf('.')

String withoutSignature = jws.substring(0, i+1);

Jwt<Header,Claims> untrusted = Jwts.parser().parseClaimsJwt(withoutSignature);

您可以在最后一個句點字符 ('.') 之后“砍掉”最后一個“部分”,這是 JWS 簽名。然后將該 JWT 讀取為“正?!盝WT(非 JWS)。


您要求的是忽略有效 JWS 上的簽名并讀取 JWT 標頭和正文。這違反了 JWS 規范,因此 JJWT 不支持它。


這是取自這個github issue,我想這和你面臨的是一樣的。



查看完整回答
反對 回復 2023-05-24
?
ITMISS

TA貢獻1871條經驗 獲得超8個贊

也許改用 Auth0 庫?


DecodedJWT jwt = JWT.decode(token);

jwt.getToken();

依賴項:


<dependency>

  <groupId>com.auth0</groupId>

  <artifactId>java-jwt</artifactId>

  <version>3.8.3</version>

</dependency>

<dependency>

  <groupId>com.auth0</groupId>

  <artifactId>jwks-rsa</artifactId>

  <version>0.9.0</version>

</dependency>

示例取自https://medium.com/trabe/validate-jwt-tokens-using-jwks-in-java-214f7014b5cf


查看完整回答
反對 回復 2023-05-24
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

如果您可以使用其他庫,則可以在此處作為可接受的答案完成:How to decode JWT token to get details of Header and Payload using nimbus-jose-jwt?


在這里重復答案:

依賴: com.nimbusds:nimbus-jose-jwt:<version>

用法:

/**

 * accessToken: the JWT string text.

**/

private String parseJWT(String accessToken) {

    try {

        var decodedJWT = SignedJWT  // or PlainJWT or EncryptedJWT

                           .parse(accessToken);

        var header = decodedJWT.getHeader().toString();

        var payload = decodedJWT.getPayload().toString();

    } catch (ParseException e) {

        throw new Exception("Invalid token!");

    }

}


查看完整回答
反對 回復 2023-05-24
  • 3 回答
  • 0 關注
  • 258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號