php エディター Banana は、この記事で JWT (JSON Web Token) の重要な概念であるトークン署名を紹介します。 JWT は、Web アプリケーション間で情報を受け渡すためのセキュリティ標準です。 JWT では、トークン署名はトークンの整合性と信頼性を保護するメカニズムです。トークンが署名されると、トークンの改ざんや偽造は直ちに検出されます。ただし、特定の状況では、JWT クレームの署名を保存しない必要がある場合があります。この記事では、この要件を達成する方法について詳しく説明します。
次のコードがあります。カスタム クレームを使用して json Web トークンを作成しています (golang-jwt を使用)。問題は、キー (メソッド = hs256) を使用してトークンに署名し、トークンを解析すると、クレームが変化することです。何という間違いを犯したのだろう。
コード:
リーリー ###出力###package main import ( "fmt" "time" "github.com/golang-jwt/jwt/v4" ) type mycustomclaims struct { userid int jwt.registeredclaims } func (app *config) generatejwt(userid int) { //code to generate jwt jt := jwt.newwithclaims(jwt.signingmethodhs256, mycustomclaims{ userid, jwt.registeredclaims{ expiresat: jwt.newnumericdate(time.now().add(3 * time.hour)), issuedat: jwt.newnumericdate(time.now()), }, }) fmt.println("what was put", jt.claims.(mycustomclaims).userid) token, _ := jt.signedstring(app.secret) //code to check whether claims are retained parsed_token, _ := jwt.parsewithclaims(token, &mycustomclaims{}, func(t *jwt.token) (interface{}, error) { return app.secret, nil }) fmt.println("what was parsed", parsed_token.claims.(*mycustomclaims).userid) }
以上がトークン署名後に JWT クレームが保持されないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。