IdentityServer4 bietet standardmäßig zwei Zertifikatverschlüsselungskonfigurationen:
services.AddIdentityServer() .AddDeveloperSigningCredential() .AddTemporarySigningCredential();
Diese beiden Zertifikatverschlüsselungsmethoden sind temporär und müssen bei jedem Neustart neu gestartet werden , wird ein neues Zertifikat neu generiert, was zu einem Problem führt. Das vor dem Neustart generierte access_token
ist nach dem Neustart nicht mehr anwendbar, da sich das Zertifikat geändert hat und sich auch die entsprechende Verschlüsselungsmethode geändert hat, sodass das folgende Problem auftritt :
Fehlermeldung:
Www-Authenticate:Bearer error="invalid_token", error_description="Der Signaturschlüssel wurde nicht gefunden"
Die Lösung besteht darin, immer ein Zertifikat zu verwenden. Konfigurieren wir es zunächst wie folgt:
services.AddIdentityServer() .AddDeveloperSigningCredential();
Sie können es überprüfenAddDeveloperSigningCredential
Implementieren Sie die Quelle Code und startet das Projekt. IdentityServer4 generiert eine tempkey.rsa
-Zertifikatdatei im Projektverzeichnis: Wenn der Code in
{ "KeyId": "4e1765de45ef639261115198826dfea7", "Parameters": { "D": "FnB7kIinBgoZDaRqIrRQHEF45FBF9amOrTn8oFdmsxPqJbh11bHeCw11AtCCC4p1mm750onDXeP+yoBHymr/wNn40VmGdhR4hnObHhhw5pyQKECIS41DFDatCZif9uhDgHsOvYHMRVNSapDFoDUvbTE6t7rv4prn2fDt5mzRD9AqdT2HyTcwa/H1haaZNwmy3UevYYy8ya4kKXvjRo6+O7BMBh+yBvHgezQ57Ye/NfZfDMITs4djbqELrYVXCTMltNsWWhQtS62cqvKboxoiXfSm67u/li5Fdusc5Z2zsyt5rE/V8h/ffBvS9N9v0VoDTdFqLYkuul0DvTZ/pqXtMQ==", "DP": "XQDf46csbwu/xX+jwo5VQQ8sKVlVBLuxSNTAbNS6O/aCg9eEjZ58EJ712JgqqORcDMg5JRejN3Zxxoij4roJogyvvw6QSws/H+UTmtuuudgT59OB1TyNGihMVSTLXaw4Kgdj8D8IK8v0okdFEpYugzIIFe1yl0lSzR7fkF+NKC0=", "DQ": "4TvT9ujJ38sTluz0dUSIUD3NCWJOMDKOB/cL3RaDyMf/MTSxNFfWDuuW55F2P8mncHhqLuANcg2l3h8xom+1ucn+ve45JNoWja4fpWQ16rmijPc5yKRe0uAGEaXJiTAEvIxXG18zvNA8Fab+L2X1h+1r35ZLZFYj+EyhkqQ7u5k=", "Exponent": "AQAB", "InverseQ": "nTAEt8v+DlAn6h7Z1Ey1x4Z56OfOmCvY01nte4f3OuSmBXoEaTSoGsXScweAMoSGb0aOG1qpvErtY+JykREeLJxvm4P3DAHL5lJWvDKPvCWJOD9jfzhBUyIhCoqQ8EIHjFxBNKyNefAsVuKdH6R+ApuhpF8XVhR59zLawUQWLEg=", "Modulus": "43j4tvNZy7IxuiDwZzWv9KiS5kSYIeBqEvQ7zkQmRT3IEsseiTv698iQx8qn+de8FeGFEa8O6igFU2VXqFyWJilTuPmeBPJxIMCqfxdxF+96giVSpN4rOFaH/V+IPNTQoYCLFwcUR2saFywUeKWpsRFhQCymsFIk3AlWu7jcqgKHrELsJpn5KVmedb6JZcVKMIfTrcY6hWQz2JNEhTOEI10ZVZ7ueEp2Q2+1/udvp47wPMhzriXJTFP7Y4ozU2THbuwIqCXM5DNBGUpEug0vlCAhwn6nvAo8e9fT0lpUzTd2T8wWzwuHkAgyjB0XTzSYR1fMJIKH1zDs25RqmlepgQ==", "P": "9lGtQw9yXz4nbepESFDxAMfDlmiI9Gj3Q3FecKIgGVVi9WVr19lzBcszhsVybA8n1OyPXHdOyuSWOiVp69ibo5OOXLL4iWzY1VOouXeZrYimxNPvVKlRf8AsVcv3n/0/FEhwY9gnQm4PZYUGwQ96WZ5Z/CWJ9xTORg54Wh79hk0=", "Q": "7Gmr/h33bM+9W4Ygh+tNh3/etECuT/RQ1LMS5uBXxXdvUl6wSm2+ec/CBRobxVHG2pDXdr0pegn0Yz4MprsLtS5KvFg6yopI3Y3TptTGNZPtbd1O7P4i6b+RNOYCq0Y99mkGofqAlAMnDG+SA2EJN2ugPjLelC7GWtfzNG5NMgU=" } }
AddDeveloperSigningCredential
ausgeführt wird, wird zunächst ermittelt, ob die tempkey.rsa
-Zertifikatdatei vorhanden ist Wenn es nicht existiert, erstellen Sie eine neue tempkey.rsa
-Zertifikatsdatei und verwenden Sie diese Zertifikatsdatei, falls vorhanden.
Wenn wir also konfigurieren, übergeben Sie einfach einen tempkey.rsa
Namen der Zertifikatsdatei:
services.AddIdentityServer() .AddDeveloperSigningCredential("tempkey.rsa");
Natürlich können Sie das auch Benennen Sie die Zertifikatsdatei tempkey.rsa
um.
Referenz:
Der Signaturschlüssel wurde nicht gefunden
IdentityServer4 Dienste konfigurieren
IdentityServer4-Kryptographie, Schlüssel und HTTPS
ASP.NET Core implementiert die ResourceOwnerPassword- und ClientCredentials-Modi von OAuth2.0
IdentityServerBuilderExtensionsCrypto.cs
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung des Beispiels IdentityServer4 SigningCredential (RSA-Zertifikatverschlüsselung).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!