.NET 9 Blazor-APIs mit Authentifizierung: HttpClient ist ohne Authentifizierung
Posted: 27 Jan 2025, 07:56
Ich erstelle ein einfaches Projekt mit .NET 9 und Blazor, um zu zeigen, wie APIs mithilfe einzelner Konten geschützt werden. Ich habe den Code auf GitHub veröffentlicht.
Ich habe im Server- und Client-Programm Program.cs den Code für die IHttpClientFactory wie folgt hinzugefügt:
Ich habe 2 Endpunkte zum Testen hinzugefügt: ClientEndpoint und ClientAddressEndpoint. Dann habe ich allen RequireAuthorization hinzugefügt. Mit Swagger und nach der Authentifizierung funktionieren die APIs.
Jetzt habe ich eine Seite erstellt, um die Liste der Clients anzuzeigen. Im Client-Projekt liest die Seite ClientList die Liste aus den APIs.
Obwohl der Benutzer authentifiziert ist, leitet die Anwendung die Anfrage immer an die Anmeldeseite weiter, wie Sie in diesem Screenshot sehen können.

Ich glaube, ich habe alle Konfigurationen richtig überprüft, kann sie aber nicht finden ausstellen.
Ich habe im Server- und Client-Programm Program.cs den Code für die IHttpClientFactory wie folgt hinzugefügt:
Code: Select all
builder.Services
.AddScoped(sp => sp
.GetRequiredService()
.CreateClient("ServerAPI"))
.AddHttpClient("ServerAPI", (provider, client) =>
{
client.BaseAddress = new Uri("https://localhost:7130");
});
Jetzt habe ich eine Seite erstellt, um die Liste der Clients anzuzeigen. Im Client-Projekt liest die Seite ClientList die Liste aus den APIs.
Code: Select all
@attribute [Authorize]
@inject HttpClient httpClient
public async Task GetClients()
{
if (string.IsNullOrEmpty(user))
{
Clients = null;
return;
}
HttpRequestMessage request =
new HttpRequestMessage(HttpMethod.Get, $"/api/Client");
HttpResponseMessage responseMessage = await httpClient.SendAsync(request);
responseMessage.EnsureSuccessStatusCode();
Clients =
await responseMessage.Content.ReadFromJsonAsync();
}

Ich glaube, ich habe alle Konfigurationen richtig überprüft, kann sie aber nicht finden ausstellen.