我目前正在研究Golang應用程序。我從客戶端接收JWT令牌,並在Go中需要解碼該令牌並獲取信息:用戶,名稱等。可用於處理JWT令牌的庫,我下降到this之一,但我不知道如何簡單地做出我需要的東西。 我有令牌,我需要解碼信息到地圖或至少一個JSON。我在哪裏可以找到如何操作的指南? 謝謝!解碼Golang中的JWT令牌
0
A
回答
1
功能jwt.ParseWithClaims
接受作爲第二個參數的接口jwt.Claims
。除基於結構的定製聲明外,該程序包還提供基於map
的聲明,即jwt.MapClaims
。因此,您可以簡單地將令牌解碼爲MapClaims
,例如,
tokenString := "<YOUR TOKEN STRING>"
claims := jwt.MapClaims{}
token, err := jwt.ParseWithClaims(tokenString, claims, func(token *jwt.Token) (interface{}, error) {
return []byte("<YOUR VERIFICATION KEY>"), nil
})
// ... error handling
// do something with decoded claims
for key, val := range claims {
fmt.Printf("Key: %v, value: %v\n", key, val)
}
1
使用github.com/dgrijalva/jwt-go
去實現。我們可以按照以下方式從api請求中提取JWT令牌信息。
從使用發佈請求發佈JWT令牌時。您必須在路由部分提取JWT信息。
func RequireTokenAuthentication(inner http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
token, err := jwt.ParseFromRequest(
r,
func(token *jwt.Token) (interface{}, error) {
return VERIFICATION.PublicKey, nil
})
if err != nil || !token.Valid) {
log.Debug("Authentication failed " + err.Error())
w.WriteHeader(http.StatusForbidden)
return
} else {
r.Header.Set("username", token.Claims["username"].(string))
r.Header.Set("userid", strconv.FormatFloat((token.Claims["userid"]).(float64), 'f', 0, 64))
}
inner.ServeHTTP(w, r)
})
}
VERIFICATION.PublicKey:用於驗證的密鑰(得到public.key文件系統中的公鑰)
的任何問題發生那樣的情況讓我知道。我可以給你幫助。
相關問題
- 1. 從JWT令牌
- 2. Symfony2中的JWT令牌
- 3. 如何解碼Swift中的JWT(Java web工具包)令牌?
- 4. 瞭解JWT令牌谷歌的OAuth2
- 5. Express JS和JWT - 令牌類型未在解碼頭中顯示
- 6. Json Web令牌JWT
- 7. JWT令牌共享
- 8. JWT令牌SSO流
- 9. IDX10659錯誤解密JWT令牌
- 10. 解碼JavaScript Web令牌(JWT)的失效日期?
- 11. 如何使用PEM格式的RSA公鑰解碼JWT令牌?
- 12. JWT令牌 - 密碼爲私鑰
- 13. 用碼頭羣轉發JWT令牌?
- 14. Firebase php-jwt令牌刷新
- 15. JWT令牌無效簽名
- 16. JWT令牌與jQuery Ajax
- 17. 角度 - 刷新jwt令牌
- 18. JWT令牌和Owin認證
- 19. jwt令牌多租戶
- 20. 護照JWT令牌到期
- 21. WSO2IS JWT訪問令牌
- 22. Spring Oauth JWT - 刷新令牌
- 23. 如何從JWT令牌
- 24. JWT刷新令牌[Laravel 5.2]
- 25. 通過JWT令牌授權
- 26. NodeJS JWT令牌驗證
- 27. JSON Web令牌(JWT)安全
- 28. 驗證jwt令牌[rsa]
- 29. JWT令牌無法在
- 30. JWT令牌如何工作?
https://github.com/dgrijalva/jwt-go/blob/master/example_test.go – zerkms
@zerkms我已經看到了它,但在那個例子中,我應該有我將要去的數據結構接收,在這種情況下,MyCustomClaims,但可以很容易地從另一側改變,我不想重新構造任何時候添加或刪除的東西 –
可能重複[Go語言和驗證JWT](https:// stackoverflow .com/questions/41077953/go-language-and-verify-jwt) –