Проверка того, что BaseAddressAuthorizationMessageHandler прикрепляет токены доступа. ⇐ C#

Место общения программистов C#
Anonymous
Проверка того, что BaseAddressAuthorizationMessageHandler прикрепляет токены доступа.

Сообщение Anonymous »

В моем приложении Blazor WASM я получаю код состояния 401 -Unauthorized, когда вызываю внутренний API, используя следующий код. Как мне проверить, что к моим вызовам API прикреплен действительный access_token?
Вот код Program.cs:

Код: Выделить всё

builder.Services.AddHttpClient("MyApiClient",
client => client.BaseAddress = new Uri("https://api.test.com"))
.AddHttpMessageHandler();

builder.Services.AddScoped(sp => sp.GetRequiredService()
.CreateClient("MyApiClient"));
И в своем сервисе я делаю вызов API с помощью этого кода:

Код: Выделить всё

public async Task GetUser()
{
// Set URL
var url = "/account/info";
var user = await GetAsync(url);
return user;
}

private async Task GetAsync(string url)
{
if (string.IsNullOrWhiteSpace(url))
return default;

using (var client = _httpClientFactory.CreateClient("MyApiClient"))
{
var result = await client.GetAsync(url);
if (!result.IsSuccessStatusCode)
throw new Exception("My API GET call failed. URL: " + url);

var json = await result.Content.ReadAsStringAsync();
return JsonSerializer.Deserialize(json);
}
}
Вы видите что-нибудь, что здесь выглядит не так? Если нет, то как я могу убедиться, что к моим вызовам API прикреплен действительный access_token?
P.S. Я вижу, что HttpClient создан правильно, а BaseAddress верен в полученном сообщении об ошибке. Сообщение об ошибке представляет собой стандартную ошибку несанкционированного доступа. Я не вижу никаких дополнительных данных в сообщении об ошибке, кроме URL-адреса. определенно правильный.
Я также хочу упомянуть, что я обрабатываю управление идентификацией и токены доступа через Azure AD B2C. Эта настройка кажется правильной, поскольку пользователь может нормально войти в систему, и идентификатор пользователя также верен.
ОБНОВЛЕНИЕ:
Простая проверка HttpClient в методе GetAsync() показывает, что access_token НЕ прикрепляется к вызову - как вы можете видеть на следующем изображении, DefaultRequestHeaders имеет значение null. У него должна быть авторизация со значением Bearer {access_token_value – см. ниже.
На данный момент я почти уверен, что это проблема конфигурации. . Также обратите внимание, что «автономные» приложения Blazor WASM НЕ получают access_token автоматически, и для их включения в процесс входа необходимы дополнительные области. Я еще не выяснил, какая конфигурация правильная, и когда это сделаю, опубликую ее здесь.
[img]https://i .sstatic.net/82QfDEZT.png[/img]


Подробнее здесь: https://stackoverflow.com/questions/791 ... ess-tokens

Вернуться в «C#»