首页 > 解决方案 > ASP.NET Core JWT 令牌无法通过 HttpClient 工作

问题描述

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

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

我已将[Authorize]属性添加到控制器,并且使用 Postman 我可以登录并获取令牌,并通过 Postman 使用令牌从控制器检索数据 - 一切都按预期工作。

我的问题是,当我HttpClient通过 Xamarin 应用程序使用 C# 登录,然后使用发回的令牌时,通过 Postman 或HttpClient.

我正在使用的代码如下:

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");

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

谁能建议我做错了什么?

标签: c#asp.net-corexamarin.forms

解决方案


谢谢大家的帮助

最后,我决定使用运行良好的 Identity Server 4 实现更容易


推荐阅读