解码Azure移动服务JWT令牌时出现JwtSecurityToken异常

时间:2013-08-16 12:51:50

标签: c# azure azure-mobile-services federated-identity jwt

以下代码:

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"}

如何克服此问题,并正确验证此类令牌?

1 个答案:

答案 0 :(得分:1)

这是Azure移动服务中与JWT规范一致的错误。这个bug已被修复,因此移动服务生成的JWT现在应该在" kid"它的标题字段。