Maison > Article > développement back-end > Explication détaillée de l'exemple IdentityServer4 SigningCredential (cryptage de certificat RSA)
IdentityServer4 fournit deux configurations de cryptage de certificat par défaut :
services.AddIdentityServer() .AddDeveloperSigningCredential() .AddTemporarySigningCredential();
Ces deux méthodes de cryptage de certificat sont temporaires et doivent être redémarrées à chaque redémarrage. , un nouveau certificat sera régénéré, ce qui posera un problème. Le access_token
généré avant le redémarrage ne sera plus applicable après le redémarrage, car le certificat a changé et la méthode de cryptage correspondante a également changé, donc le problème suivant se produira. :
Message d'erreur :
Www-Authenticate:Bearer error="invalid_token", error_description="La clé de signature n'a pas été trouvée"
La solution est de toujours utiliser un seul certificat. Configurons-le d'abord comme ceci :
services.AddIdentityServer() .AddDeveloperSigningCredential();
Vous pouvez le vérifierAddDeveloperSigningCredential
Implémentez la source. code et démarrez le projet. IdentityServer4 générera un fichier de certificat tempkey.rsa
dans le répertoire du projet : Lorsque le code dans
{ "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
est exécuté, il déterminera d'abord si le fichier de certificat tempkey.rsa
existe. S'il n'existe pas, si c'est le cas, créez un nouveau fichier de certificat tempkey.rsa
et utilisez ce fichier de certificat s'il existe.
Donc, lors de la configuration, il suffit de passer un tempkey.rsa
nom de fichier de certificat :
services.AddIdentityServer() .AddDeveloperSigningCredential("tempkey.rsa");
Bien sûr, vous pouvez également renommez le fichier de certificat tempkey.rsa
.
Référence :
La clé de signature n'a pas été trouvée
IdentityServer4 Configuration des services
Cryptage, clés et HTTPS IdentityServer4
ASP.NET Core implémente les modes ResourceOwnerPassword et ClientCredentials d'OAuth2.0
IdentityServerBuilderExtensionsCrypto.cs
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!