Maison  >  Article  >  développement back-end  >  Explication détaillée de l'exemple IdentityServer4 SigningCredential (cryptage de certificat RSA)

Explication détaillée de l'exemple IdentityServer4 SigningCredential (cryptage de certificat RSA)

零下一度
零下一度original
2018-05-22 16:08:073071parcourir

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. :

Explication détaillée de l'exemple IdentityServer4 SigningCredential (cryptage de certificat RSA)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn