ASP.NET核心JWT令牌无法通过HttpClient工作



我是JWT身份验证的新手,我已经使用以下教程为令牌身份验证配置了我的ASP.NET Core 3 API:

https://chrissainty.com/securing-your-blazor-apps-authentication-with-clientside-blazor-using-webapi-aspnet-core-identity/

我已经将[Authorize]属性添加到控制器中,使用Postman我可以登录并获取令牌,并通过Postman使用令牌从控制器中检索数据——所有操作都如预期的那样。

我的问题是,当我通过Xamarin应用程序使用C#HttpClient登录,然后使用发送回来的令牌时,我通过Postman或HttpClient访问控制器时出现401错误。

我使用的代码如下:

var client = new HttpClient();
var model = new JwtLoginModel()
{
Email = email,
Password = password,
RememberMe = false
};
var json = JsonConvert.SerializeObject(model);
HttpContent httpContent = new StringContent(json);
var response = await client.PostAsync(Constants.BaseApiAddress + "api/Login", new StringContent(json, Encoding.UTF8, "application/json"));
var content = await response.Content.ReadAsStringAsync();
JObject jwtDynamic = JsonConvert.DeserializeObject<dynamic>(content);
var accessToken = jwtDynamic.Value<string>("token");

使用通过Postman返回的accessToken(和HttpClient(,两者都返回401错误。

有人能指出我做错了什么吗?

感谢的帮助

最后,我决定使用Identity Server 4实现更容易,它可以完美地运行

最新更新