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 的 'header' 部分是:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6MH0

可以解码为:

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

错误令牌的来源是Azure Mobile Services

请注意,当“标题”部分为:调用同一行代码时不会发生异常:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IjAifQ

可以解码为:

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

我怎样才能克服这个问题,并正确验证这样的令牌?

4

1 回答 1

1

这是 Azure 移动服务中与 JWT 规范的一致性方面的一个错误。该错误已得到修复,因此移动服务生成的 JWT 现在应该在其标头的“kid”字段中具有正确的字符串值。

于 2013-09-25T16:42:51.013 回答