AspNet核心401-添加令牌时没有SecurityTokenValidator

时间:2019-12-03 08:06:10

标签: asp.net-core-2.2 bearer-token jwt-auth

对于Jwt令牌:

HttpResponseMessage responseMsg
var token = responseMsg.Content?
           .ReadAsStringAsync()
           .GetAwaiter()
           .GetResult();

用于授权发布请求,如下所示:

client.BaseAddress = new Uri("https://...");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token}");

我收到此错误:

  

承载者未通过身份验证。失败消息:否   可用于令牌的SecurityTokenValidator:“ eyJ ...”

仔细查看邮递员中的请求后,我发现问题出在标题上的令牌中添加了“”:

Postman

这就是为什么我这样添加令牌的原因:

client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.Replace("\"", "")}");

有效,但对我来说似乎“肮脏”。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您应该反序列化响应对象,以便可以将其用作字符串:

HttpResponseMessage responseMsg
var response = responseMsg.Content?
           .ReadAsStringAsync()
           .GetAwaiter()
           .GetResult();
var token = JsonConvert.DeserializeObject<string>(response);
return token;

现在该字符串已准备好作为承载令牌包含在标头中。