C# 为什么在尝试验证令牌时获取401

C# 为什么在尝试验证令牌时获取401,c#,.net,authentication,jwt,token,C#,.net,Authentication,Jwt,Token,我有一个承载令牌,需要根据api和validateToken端点对其进行验证。端点包含一个json,如下所示: { "jwtToken": "my token" } 我大摇大摆地尝试使用url成功地实现这个端点 但我需要从代码中进行验证,然后得到401“未经授权” HttpClient client = new HttpClient { BaseAddress = new Uri("http://10.212.226.31:5022/") }; client.DefaultReq

我有一个承载令牌,需要根据api和validateToken端点对其进行验证。端点包含一个json,如下所示:

{
  "jwtToken": "my token"
}
我大摇大摆地尝试使用url成功地实现这个端点

但我需要从代码中进行验证,然后得到401“未经授权”

HttpClient client = new HttpClient
{
    BaseAddress = new Uri("http://10.212.226.31:5022/")
};
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
    new MediaTypeWithQualityHeaderValue("application/json"));

string token = accessToken.Replace("Bearer ", "");
HttpResponseMessage response = await client.PostAsJsonAsync(
    "api/v1/validateToken", token);
在响应对象处,我得到401

怎么了?关于json的一些事情? 如何将正确的内容移交给端点


补充:

我在客户的虚拟机上远程工作,他不允许安装软件。Fiddler和co不可用

我也试过这个,但不起作用:

ValidateTokenRequest tokenJson = new ValidateTokenRequest
{
    jwtToken = token
};
HttpResponseMessage response = await client.PostAsJsonAsync(
    "api/v1/validateToken", tokenJson);

我需要在端点对自己进行身份验证,以便将令牌添加到头中

client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

现在它起作用了。谢谢大家

调用PostAsJsonAsync时,尝试将令牌作为json或某个对象而不是字符串传递。使用wireshark或fiddler之类的嗅探器,并使用swagger捕获第一个请求。然后使用C#app与第一个请求进行比较。您需要修改c#客户端中的头。我怀疑它可能是指示要使用的默认浏览的内容类型。您的“api/v1/validateToken”端点是否希望令牌以编码或未编码的形式发布到它?我相信,最有可能是在执行
string-token=accessToken.Replace(“Bearer”,“Bearer”)之后
您的
令牌
变量包含如下内容:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyjzwioiixmj0nty3odkwiiwibmftzsi6ikpvag4grg9liiwiawf0ijoxntejm2mdiyfq.sflkxwrjxmekf2qt4fpmejf36pok6yjv\adQssw5c
并且如果“api/v1/validateToken”希望看到像这样未编码的JSON,
{“jwtToken”:“我的令牌”}
它根本无法处理发布的数据。…@Xiaosu我尝试使用对象以及对象作为字符串,但不起作用。@jdweng我在客户的虚拟机上远程工作,他不允许安装软件。Fiddler和co不可用。