我有一個JWT字符串。我可以將它粘貼到任何「解碼JWT」的谷歌搜索結果中,並且它可以正確解碼,而且不需要任何祕密或加密聲明。但是我看到的所有例子,例如Buddy或jwtt,要求我提供他們加密的任何祕密。我怎麼能簡單地解碼原始字符串,就像每個網站那樣容易?在Clojure中解碼JWT/Java
0
A
回答
0
以下答案是豐富和良好的;這裏是Clojure的版本爲我工作:
(ns decode-jwt
(:require [cheshire.core :as json])
(:import [org.apache.commons.codec.binary Base64]))
(-> returned-jwt ;; returned-jwt is your full jwt string
(clojure.string/split #"\.") ;; split into the 3 parts of a jwt, header, body, signature
second ;; get the body
Base64/decodeBase64 ;; read it into a byte array
String. ;; byte array to string
json/decode ;; make it into a sensible clojure map
)
1
對JWT進行解碼非常簡單,但在驗證簽名之前,您絕對不應該相信這些聲明。這就是爲什麼任何體面的智威湯遜圖書館都會要求你提供一個祕密,或者是使用RSA簽署的公鑰。
無論如何,一個JWT的格式是非常簡單的 - 三個部分通過.
分隔:
<header> . <payload> . <signature>
每個部分是base64編碼。所以,如果你只是想看到的索賠,你可以做這樣的事情:
String jwt = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ";
String [] jwtParts = jwt.split("\\.");
if (jwtParts.length == 3) {
String payload = new String(Base64.getDecoder().decode(jwtParts[1]));
System.out.println(payload);
// Now you can use some JSON library to decode payload.
}
1
上https://jwt.io/
Clojure的JWT庫:[funcool/buddy], doc:
http://funcool.github.io/buddy-sign/latest/`
user=> (require '[buddy.sign.jwt :as jwt])
user=> (jwt/sign {:userid 1} "secret")
"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOjF9.5sxiy9q0YcpnXl2jBl-s4--C9iq5-4qC6CrW30NfRS4"
user=> (jwt/unsign "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyaWQiOjF9.5sxiy9q0YcpnXl2jBl-s4--C9iq5-4qC6CrW30NfRS4" "secret")
{:userid 1}
user=>
相關問題
- 1. 瞭解這個Clojure代碼
- 2. 解析Clojure中
- 3. Clojure代碼來分析clojure代碼
- 4. Clojure XML解析
- 5. Clojure中的循環解構
- 6. 解析clojure中的XML
- 7. 麻煩理解:在Clojure中的狀態
- 8. 在Clojure中用行號解析語言
- 9. 在Clojure中部分源代碼澄清
- 10. 瞭解Clojure期貨
- 11. Clojure理解示例
- 12. 使用Clojure將base64編碼文件解碼回原始格式
- 13. Clojure相當於python的base64編碼和解碼
- 14. Clojure新手 - 重寫Java代碼到Clojure
- 15. 可用的補充clojure-xml /解析的Clojure XML解析庫
- 16. Clojure源代碼庫
- 17. clojure動態代碼
- 18. 代碼從Clojure的
- 19. 修改clojure中的Clojure源代碼文件
- 20. 如何理解clojure中的alt core.async
- 21. 解決clojure中「吊起」的問題
- 22. 如何解析Clojure中的URL參數?
- 23. 解構Clojure中 - 嵌入式地圖
- 24. Clojure中的解構意味着什麼?
- 25. 理解clojure中的淺反轉?
- 26. 不能理解的Clojure
- 27. CLojure sax解析器示例
- 28. Clojure Core.Typed註解適用
- 29. 解析.mxl使用Clojure
- 30. Clojure:解析聲明符號