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
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")
};
});
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" }
}
}
}
});
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
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?