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 サイトの他の関連記事を参照してください。