邮递员生成有效令牌,来自Newtonsoft JToken的C#Web客户端令牌无效

邮递员生成有效令牌,来自Newtonsoft JToken的C#Web客户端令牌无效,c#,asp.net-core,asp.net-core-2.1,C#,Asp.net Core,Asp.net Core 2.1,我正在尝试从OAuth2.0服务器获取令牌,然后通过Authorization头传递给RESTAPI。 它从服务器获取令牌,并在API调用时表示令牌无效 使用从Postman生成的令牌,并通过该令牌从Postman调用RESTAPI,效果很好。即使我尝试将C#Client生成的令牌粘贴到Postman中,Postman Rest API通知令牌也是无效的 我正在使用.NETCore2.1并生成这样的令牌 var values = new Dictionary<string, string&

我正在尝试从OAuth2.0服务器获取令牌,然后通过
Authorization
头传递给RESTAPI。 它从服务器获取令牌,并在API调用时表示令牌无效

使用从Postman生成的令牌,并通过该令牌从Postman调用RESTAPI,效果很好。即使我尝试将C#Client生成的令牌粘贴到Postman中,Postman Rest API通知令牌也是无效的

我正在使用.NETCore2.1并生成这样的令牌

var values = new Dictionary<string, string> { 
    { "resource", baseUrl.Value.Replace("/commerce", "").Trim() },
    { "client_id", Startup.Configuration["clientId"] },
    { "grant_type", "client_credentials" },
    { "client_secret", Startup.Configuration["clientSecret"] }
};

var content = new FormUrlEncodedContent(values);
HttpClient client = new HttpClient();
var responseString = await client.PostAsync(tenantUrl.Value + "/oauth2/token", content);
string responseBody = await responseString.Content.ReadAsStringAsync();
JObject resJson = JObject.Parse(responseBody);
string token = resJson["access_token"].ToString();
邮差代币(工作):


埃克希克瓦乔德鲁佐夫ZZHc2HPB251cDYYZBKOTZMCMV0LMNSB3VKYZHLZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZZiI6MTYNTYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNZYNJJJJJJJJJJJJJJJJJJJJJZYNZYNZYNZYNZYNZYNZYNZYNZY2.这一研究的目的是在一个新的研究的基础上提出一种新的研究方法,它是一种新的研究方法,它是一种新的研究方法,它是一种新的研究方法,它是一种新的研究方法。它是一种新的研究方法。它是一种新的研究方法。它是一种新的研究方法。它是一种新的研究发现,一种新的新的研究发现,它是一种新的新的研究发现,它是一种新的研究的研究,它是一种新的新的新的新的研究,新的新的研究,新的新的研究发现,新的研究发现,新的新的新的新的新的研究发现,新的新的研究发现,新的新的新的新的研究发现,新的新的新的新的新的新的新的新的新的研究发现,新的新的新的新的研究,新的新的新的新的新的研究发现,新的新的研究将在zkxzal4kQTCFSForjxuzxx1PgD5Praakx1EANC1JIJ4KQA6KVNSDL0PyGGMMQE36RRMKH5BClH3SMlO3WilgVLMP3EkKDJ51P2EMW9DHDX2BbBlowPCCLGE3Q6PIKUZRYOKX44WQJKAS6QOVJJJJ9XAZDZBIG

来自C#Web客户端的令牌(不工作)


EYJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJZZZH2Hc2Hc2Hc2Hc2Hc2Hb251Cd4Y0OtzBkotZmV0LmNs3V0LmWnSb3VKyZKyZKyZKyZZGyZGyZGyZGyZZZYZYZYZYZYZYZYZYZZYZYZYZYZYZYZYZYZYZYZYZYZYZYZYZMJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 YWZ2.2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 TMOkdP1qsgSdcRmqVWwmjYTp7HSPS997poC54md_BDX7HFRWEA7WNMDCLSLZ44IZGFHB3OU47R3AGXPRERRYDBO6VI6OFRSP4ZASVYDSOFRM6LIOWWSSKBQILYOTKJUQPA7U41IWY6FJGV1WBEROYUBCWW8W3VS4CMHXA

已修复:

  • 已从以下Url接收令牌:
    www.xyz.com
  • URL已注册为
    www.xyz.com/
  • 需要调用
    www.xyz.com/
    以获取有效令牌并传递给其他API方法

  • 在OAuth注册中,
    www.xyz.com/
    www.xyz.com
    之间存在差异。

    您是否使用?如果是这样的话,试着比较一下您在请求/响应中得到的差异。您是否与Postman使用相同的OAuth授权?另外,您可以从您的代码和postman中添加示例令牌吗?您可以创建一个示例项目并将其上载到GitHub吗?@MarkG是的我使用Fiddler,Fiddler记录了postman请求,但没有记录来自此应用程序的请求(使用IIS express)-有没有办法记录该请求also@MarcLaFleur我已经编辑了帖子并发布了工作和非工作令牌-因为它们每次生成都是不同的。
    client = new HttpClient();
    var tt = new StringContent(requestBody, Encoding.UTF8, "application/json");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    var ounHeader = request.Headers.Where(m => m.Key == "OUN").FirstOrDefault();
    client.DefaultRequestHeaders.Add(ounHeader.Key, ounHeader.Value.First());
    
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
    
    var rsActionResponse = await client.PostAsync(oDataRequest, tt);
    responseBody = await rsActionResponse.Content.ReadAsStringAsync();
    JObject rsActionResponseJSON = JObject.Parse(responseBody);