Я новичок в аутентификации 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 для извлечения данных из контроллера - все работает, как и ожидалось.
Моя проблема в том, что когда я вхожу в систему с помощью C# HttpClient
через приложение Xamarin, а затем использую токен, который отправляется обратно, я получаю ошибку 401 при доступе к контроллеру либо через 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
через Почтальона (и HttpClient
), оба возвращают ошибку 401.
Может кто-нибудь подсказать, что я делаю не так?