現在、Golangアプリケーションで作業しています。クライアント側からJWTトークンを受け取り、Goでトークンをデコードして情報を取得する必要があります。 JWTトークンを扱うライブラリがあり、私はthisになってしまったが、私が必要とするものを簡単に作る方法は分からない。 私はトークンを持っており、情報をマップまたは少なくともjsonにデコードする必要があります。どのようにそれを行うためのガイドを見つけることができますか? ありがとうございました!ゴランのJWTトークンをデコードする
0
A
答えて
1
機能jwt.ParseWithClaims
jwt.Claims
のインターフェイスを2番目の引数として受け入れます。構造体ベースのカスタムクレームの他に、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
go laabaryを使用してください。以下のようにして、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ファイルから公開鍵を取得する)
私に知らせてhappen.Pleaseすべての問題。私はあなたに助けを与えることができます。
関連する問題
- 1. JWTトークンのデコード方法は?
- 2. ゴランのGithub Oauthトークン
- 3. System.IdentityModel.Tokens.Jwtを使用してJWTトークンのデコードと検証
- 4. Clojure/JavaのJWTデコード
- 5. デコードOpenIDのid_token - JWT
- 6. Javaで生成されたNode.jsのjwtトークンをデコードする方法は?
- 7. JSON Webトークン(JWT)
- 8. JWTトークンSSO
- 9. JWTトークン解析
- 10. JWTトークンの共有
- 11. PHP-JWTがデコードしない
- 12. JWTトークン - 秘密鍵
- 13. JWTトークンで承認
- 14. 角度リフレッシュjwtトークン
- 15. JWTのトークンの前のベアラー
- 16. JWTと1回のトークン?私自身のJWTトークン認証を「ローリング」の過程で
- 17. はJWTトークンがユニークです
- 18. WCF用のJWTトークンをSAMLトークンに変換する方法
- 19. 期限切れのJWTトークン - トークンをリフレッシュする方法
- 20. JWTトークンからHttpContext.Current.Userを設定する
- 21. slim-jwt-authでトークンを生成する
- 22. DRF-jwtトークンを取得する
- 23. keycloakでスプリングブートサービスを保護する - JWTトークン
- 24. django JWTトークンを削除するには?
- 25. Angular2フレームワークがJWTトークンを取得する
- 26. jwtトークンの確認[rsa]
- 27. JSON Webトークン(JWT)のセキュリティ
- 28. オブジェクトとしてのJWTトークン
- 29. AWS Cognito JWTトークンの検証
- 30. 新しいJWTトークンのトークンが古いトークンと同じです
https://github.com/dgrijalva/jwt-go/blob/master/example_test.go – zerkms
@zerkms私はすでにそれを見ましたが、その例では、私が行っているデータの構造体を持つべきですこのケースではMyCustomClaimsを受け取るが、それは相手側から簡単に変更することができ、何かが追加または削除されたときにいつでも再構築することは望ましくない。 –
[Go Language and Verify JWT]の可能な複製(https:// stackoverflow .com/questions/41077953/go-language-and-verify-jwt) –