Heim >Backend-Entwicklung >C#.Net-Tutorial >Ausführliche Erläuterung des Beispiels IdentityServer4 SigningCredential (RSA-Zertifikatverschlüsselung).

Ausführliche Erläuterung des Beispiels IdentityServer4 SigningCredential (RSA-Zertifikatverschlüsselung).

零下一度
零下一度Original
2018-05-22 16:08:073136Durchsuche

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 :

Ausführliche Erläuterung des Beispiels IdentityServer4 SigningCredential (RSA-Zertifikatverschlüsselung).

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üfenAddDeveloperSigningCredentialImplementieren 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn