Beim Verwenden der JWT-Bearer-Authentifizierung mit Keycloak in ASP.NET Core 8 wird der Fehler „Der Signaturschlüssel wuC#

Ein Treffpunkt für C#-Programmierer
Guest
 Beim Verwenden der JWT-Bearer-Authentifizierung mit Keycloak in ASP.NET Core 8 wird der Fehler „Der Signaturschlüssel wu

Post by Guest »

Beim Versuch, die JWT-Bearer-Authentifizierung in meiner ASP.NET Core 8-Web-API mit Keycloak zu verwenden, tritt ein Fehler auf. Wenn ich eine Anfrage an die API sende, erhalte ich die folgende Antwort:

www-authenticate: Bearer error="invalid_token",error_description="Der Signaturschlüssel wurde nicht gefunden"

Ich habe Keycloak und meine API mit der folgenden Konfiguration eingerichtet:
  • Keycloak läuft in einem Docker-Container (konfiguriert mit start-dev)
  • Ich habe einen Client für meine API in Keycloak konfiguriert und die entsprechenden Anmeldeinformationen festgelegt
  • Die AuthorizationUrl und TokenUrl< /code> sind auf Keycloak-Endpunkte eingestellt
API-Setup
Im Programm. cs, ich habe die JWT-Bearer-Authentifizierung wie folgt konfiguriert:

Code: Select all

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.Audience = Environment.GetEnvironmentVariable("AuthticationAudience");
options.MetadataAddress = Environment.GetEnvironmentVariable("AuthticationMetadataAddress")!;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = Environment.GetEnvironmentVariable("AuthenticationValidIssuer")
};
});
Ich habe auch die Swagger-Benutzeroberfläche mit dem OAuth2-Flow von Keycloak konfiguriert:

Code: Select all

options.AddSecurityDefinition("Keycloak", new OpenApiSecurityScheme
{
Type = SecuritySchemeType.OAuth2,
Flows = new OpenApiOAuthFlows
{
Implicit = new OpenApiOAuthFlow
{
AuthorizationUrl = new Uri("http://localhost:8090/realms/primas/protocol/openid-connect/auth"),
Scopes = new Dictionary
{
{ "openid", "openid" },
{ "profile", "profile" }
}
}
}
});
Docker-Setup
Meine Docker Compose-Datei enthält die folgenden Dienste:
  • Keycloak-Dienst (mit Keycloak)
  • Primasapi-Dienst (mit meiner ASP.NET Core-API)
  • Mariadb, MySQL , Redis-Dienste für Datenbankabhängigkeiten
Fehlerdetails
Trotz der Konfiguration erhalte ich beim Versuch, mich mit einem JWT-Token zu authentifizieren, diese Fehlermeldung in der Antwort:

www-authenticate: Bearer error="invalid_token", error_description="Der Signaturschlüssel wurde nicht gefunden"
Ich habe überprüft, ob der Keycloak-Server vorhanden ist läuft und das Token wird korrekt generiert. Es scheint jedoch, dass die API das Token nicht validieren kann, da sie den Signaturschlüssel nicht finden kann.
Was ich versucht habe
  • Ich habe sichergestellt, dass die Token-URL und der Aussteller in den TokenValidationParameters korrekt sind
  • Ich habe die öffentlichen Schlüssel von überprüft Keycloak, aber die API kann das Token immer noch nicht validieren. Weiß jemand, was den Fehler „Signaturschlüssel nicht gefunden“ verursachen könnte und wie ich ihn beheben kann?
Vielen Dank im Voraus für jede Hilfe!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post