3

次のコード:

using System.IdentityModel.Tokens;

JwtSecurityToken jwtSecurityToken = new JwtSecurityToken(rawToken);

次の例外を生成します。

Jwt10113: Unable to decode the 'header'
The value "0" is not of type "System.String" and cannot be used in this generic collection. Parameter name: value

rawToken の「ヘッダー」セクションが次の場合:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6MH0

次のようにデコードできます。

{"alg":"HS256","typ":"JWT","kid":0}

フォルト トークンのソースは ですAzure Mobile Services

「ヘッダー」セクションが次の場合に同じコード行を呼び出すと、例外は発生しないことに注意してください。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjAifQ

次のようにデコードできます。

{"alg":"HS256","typ":"JWT","kid":"0"}

この問題を克服し、そのようなトークンを適切に検証するにはどうすればよいですか?

4

1 に答える 1

1

これは、JWT 仕様への準拠に関する Azure Mobile Services のバグでした。このバグはその後修正されたため、モバイル サービスによって生成された JWT のヘッダーの「kid」フィールドに正しい文字列値が含まれるようになりました。

于 2013-09-25T16:42:51.013 に答える