以下代码:
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"}
如何克服此问题,并正确验证此类令牌?
答案 0 :(得分:1)
这是Azure移动服务中与JWT规范一致的错误。这个bug已被修复,因此移动服务生成的JWT现在应该在" kid"它的标题字段。