我目前正在研究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) –