ホームページ >バックエンド開発 >C++ >JwtSecurityTokenHandler を使用して JWT トークンをデコードし、「文字列はコンパクトな JSON 形式である必要があります」エラーを解決する方法

JwtSecurityTokenHandler を使用して JWT トークンをデコードし、「文字列はコンパクトな JSON 形式である必要があります」エラーを解決する方法

Barbara Streisand
Barbara Streisandオリジナル
2025-01-06 21:46:40511ブラウズ

How to Decode JWT Tokens using JwtSecurityTokenHandler and Resolve

JwtSecurityTokenHandler を使用した JWT トークンのデコード

JWT トークンのデコードは、JwtSecurityTokenHandler クラスを使用する簡単なタスクです。ただし、「文字列はコンパクトな JSON 形式である必要があります」エラーのような問題が発生した場合は、それを解決する方法を次に示します。

質問で述べたように、JwtSecurityTokenHandler では文字列が特定の形式である必要があります。 Base64UrlEncodedHeader.Base64UrlEndcodedPayload.OPTIONAL,Base64UrlEncodedSignature.

この問題を解決するには、ReadToken の結果をキャストするか、代わりに ReadJwtToken メソッドを使用します。その仕組みは次のとおりです:

キャスト メソッドの使用:

var stream = "[encoded jwt]";
var handler = new JwtSecurityTokenHandler();
var jsonToken = handler.ReadToken(stream);
var tokenS = jsonToken as JwtSecurityToken;

tokenS 変数の型は JwtSecurityToken になり、tokenS.Claims を使用してクレームにアクセスできるようになります。

ReadJwtToken の使用メソッド:

var token = "[encoded jwt]";
var handler = new JwtSecurityTokenHandler();
var jwtSecurityToken = handler.ReadJwtToken(token);

または、ReadJwtToken メソッドを使用してトークンを直接読み取ることもできます。このメソッドは、JwtSecurityToken オブジェクトも返します。

トークンが正しくデコードされたら、以下を使用してクレームを取得できます。

var jti = tokenS.Claims.First(claim => claim.Type == "jti").Value;

これにより、トークンから jti クレーム値が取得されます。

JWT トークンをデコードするときは、正しい形式を使用することが重要であることに注意してください。エラーを回避し、クレームへの適切なアクセスを確保するための JwtSecurityTokenHandler。

以上がJwtSecurityTokenHandler を使用して JWT トークンをデコードし、「文字列はコンパクトな JSON 形式である必要があります」エラーを解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。