我有一个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代码来分析clojure代码
- 2. Clojure XML解析
- 3. Clojure中的循环解构
- 4. 麻烦理解:在Clojure中的状态
- 5. 在Clojure中部分源代码澄清
- 6. Clojure理解示例
- 7. Clojure相当于python的base64编码和解码
- 8. 使用Clojure将base64编码文件解码回原始格式
- 9. clojure动态代码
- 10. Clojure源代码库
- 11. 修改clojure中的Clojure源代码文件
- 12. 解决clojure中“吊起”的问题
- 13. 解构Clojure中 - 嵌入式地图
- 14. CLojure sax解析器示例
- 15. 不能理解的Clojure
- 16. Clojure:解析声明符号
- 17. 在Clojure中包装
- 18. 在Clojure中拼接
- 19. 在Python中解码
- 20. 解码在Java中
- 21. 元数Clojure中的源代码超载
- 22. 如何使用Clojure的Apache Commons编解码器库?
- 23. clojure引号和宏代码
- 24. Clojure代码,修补:主
- 25. 好的Clojure代码示例?
- 26. Clojure中
- 27. Clojure中
- 28. Clojure中
- 29. Clojure中
- 30. Clojure中