Настройка HttpClient в Blazor с индивидуальной идентификациейC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Настройка HttpClient в Blazor с индивидуальной идентификацией

Сообщение Anonymous »

В моем веб-приложении .NET 8 Blazor я использую «индивидуальную учетную запись» для аутентификации пользователей (поэтому я использую Microsoft Identity). У меня есть сервер и клиентский проект. У меня есть несколько конечных точек, которые я хочу защитить: конечные точки — это минимальные API в серверном проекте в папке Controllers. Например,

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

public static void MapClientEndpoints (this IEndpointRouteBuilder routes)
{
var group = routes.MapGroup("/api/Client").WithTags(nameof(Client));

group.MapGet("/", async (HypnoContext db) =>
{
return await db.Client.ToListAsync();
})
.RequireAuthorization()
.WithName("GetAllClients")
.WithOpenApi();
}
В Program.cs я добавил этот код для HttpClient:

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

builder.Services.AddScoped();

builder.Services.AddHttpClient("ServerAPI", client => {
client.BaseAddress = new Uri(builder.Configuration["FrontendUrl"]);
})
.AddHttpMessageHandler();

builder.Services.AddTransient(sp =>
sp.GetRequiredService().CreateClient("ServerAPI"));
CustomAuthorizationMessageHandler выглядит следующим образом

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

public class CustomAuthorizationMessageHandler : AuthorizationMessageHandler
{
public CustomAuthorizationMessageHandler(IAccessTokenProvider provider,
NavigationManager navigationManager)
: base(provider, navigationManager)
{
ConfigureHandler(
authorizedUrls: new[] { "https://localhost:7241" });
}
}
Я делаю это, потому что хочу выполнять вызовы API, представленные в серверном проекте, защищенном индивидуальной учетной записью. Итак, на странице

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

@inject HttpClient httpClient

HttpRequestMessage request = new HttpRequestMessage(
HttpMethod.Get, "/api/Client");
await httpClient.SendAsync(request);
При запуске приложения я сразу получаю сообщение об ошибке:

System.AggregateException: «Некоторые службы не может быть
создан (Ошибка при проверке дескриптора службы
'ServiceType: MyApp.CustomAuthorizationMessageHandler
Lifetime: Scoped ImplementationType:
MyApp.CustomAuthorizationMessageHandler': невозможно разрешить
службу для типа
'Microsoft.AspNetCore.Components.WebAssembly.Authentication.IAccessTokenProvider'
при попытке активировать
'MyApp.CustomAuthorizationMessageHandler '.)'

Изображение

Итак, я попробовал добавьте следующий код

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

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = builder.Configuration["JwtIssuer"],
ValidAudience = builder.Configuration["JwtAudience"],
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(
builder.Configuration["JwtSecurityKey"]))
};
});
но это не помогло. Что я пропустил?

Подробнее здесь: https://stackoverflow.com/questions/792 ... l-identity
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Настройка HttpClient в Blazor с индивидуальной идентификацией
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Настройка HttpClient в Blazor с индивидуальной идентификацией
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Откуда httpcontext cascadingparameter httpcontext в приложении Blazor Server с идентификацией?
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Почему настройка dotnets HttpClient.DefaultRequestVersion не применяется к методу HttpClient.SendAsync
    Anonymous » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Минимальные API в Blazor с RequireAuthorization() с использованием индивидуальной учетной записи
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous

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