Ich benutze Identity Server 4, um meine APIs (Impliziter Datenflussmodus) zu schützen, auf die Angular Application zugreift. Alles funktioniert gut, aber in bestimmten Zeiträumen wurde das Access Token bereits vor seinem Ablauf ungültig.Bearer wurde nicht authentifiziert: Signaturvalidierung fehlgeschlagen
Konfiguration:
Hier ist die Identity Server Startup-Datei:
var identityBuilder = services.AddIdentityServer().AddInMemoryStores().SetTemporarySigningCredential();
identityBuilder.AddInMemoryScopes(identitySrvConfig.GetScopes());
identityBuilder.AddInMemoryClients(identitySrvConfig.GetClients());
die APIs Schutz:
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = identityOptions.Authority,
ScopeName = "userProfile_api",
RequireHttpsMetadata = false
});
Investigation:
Die Frage war der Träger nicht
Nach einigen UntersuchungenBearer was not authenticated. Failure message: IDX10501: Signature validation failed. Unable to match 'kid': 'e4f3534e5afd70ba74c245fe2e39c724', token
authentifiziert wurde, scheint es, dass Identitätsserver einen neuen Schlüssel generiert, die die Signaturprüfung verursacht wurde zum Scheitern verurteilt.
Im Protokoll kann ich sehen, wenn die beiden Warnereignisse am Ende passieren, dann sehe ich „Repository enthält keinen tragfähige Standardschlüssel“ und „ein neuer Schlüssel soll den Ring hinzugefügt werden“
Fragen
Warum sollte es keine ein Schlüssel zu jeder Zeit sein, wenn der Schlüssel Lebensdauer fast 3 Monate ist sogar vorübergehende Unterzeichnung (SetTemporarySigningCredential) ich verwende und ich bin neu zu starten den Server nicht?
Creating key {a2fffa4a-345b-4f3b-bae7-454d567a1aee} with creation date 2017-03-03 19:15:28Z, activation date 2017-03-03 19:15:28Z, and expiration date 2017-06-01 19:15:28Z.
Wie kann ich dieses Problem lösen?
Holen Sie sich ein echtes Signaturzertifikat anstelle des temporären - und testen Sie es erneut. – leastprivilege
starten Sie auch das API-Projekt neu? Ich denke, dass diese Middleware das Entdeckungsdokument zwischenspeichert. Ich kann mich irren. – Lutando