【问题标题】:AspNet core 401 - No SecurityTokenValidator when adding the tokenAspNet core 401 - 添加令牌时没有 SecurityTokenValidator
【发布时间】:2020-03-27 20:56:06
【问题描述】:

对于 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...”

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

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

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

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

【问题讨论】:

  • 您能否分享更多关于创建令牌的信息,您似乎正在将其检索到共享代码的范围之外
  • @Juanito 信息已添加

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-17
    • 2019-10-18
    • 2022-10-18
    • 2020-07-02
    • 2019-11-19
    • 1970-01-01
    • 2020-11-16
    • 2018-07-21
    相关资源
    最近更新 更多