web-dev-qa-db-fra.com

Qu'est-ce que les informations d'identification de signature dans IdentityServer4?

Nous sommes en train d'implémenter Identity Server 4 avec notre application Web .NET Core.

J'ai parcouru la documentation d'Identity Server. Lors de la configuration du serveur d'identité (à l'aide de DI), il y a la ligne:

.AddTemporarySigningCredential

J'essaie de comprendre ce que sont ces informations de signature, mais je n'ai pas pu comprendre. Par conséquent, je ne sais pas s'il est correct d'utiliser le temporaire intégré ou si je dois en fournir un autre.

Ma question est, qu'est-ce qu'un identifiant de signature et comment dois-je l'utiliser?

Dans la documentation du serveur d'identité, voici la définition:

Ajoute un service de clé de signature qui fournit le matériel de clé spécifié aux différents services de création/validation de jeton. Vous pouvez transmettre un X509Certificate2, un SigningCredential ou une référence à un certificat à partir du magasin de certificats.

Donc ça semble important :)

14
Shaul Zuarets

Le serveur d'autorisation signera les jetons avec une clé. Le ou les serveurs de ressources doivent vérifier l'intégrité du jeton avec une clé. Ensemble, ils forment une paire de clés asymétrique (par exemple publique/privée). Par défaut, IdentityServer publiera la clé publique pour vérifier les jetons sur le point de terminaison /.well-known/openid-configuration.

Pour les scénarios de développement, vous voulez généralement ignorer la gestion correcte des secrets comme lesdites clés (ce qui est vraiment important de faire correctement en production!). Pour ces scénarios de développement, vous avez la possibilité d'utiliser des solutions adhoc comme AddTemporarySigningCredential, qui a été utilisé pour . NET Core 1.x .

Avec . NET Core 2.x cela changer et vous aurez besoin de la méthode d'extension AddDeveloperSigningCredential().

Cela répond à la question de ce que c'est. Comment l'utiliser: vous appelez simplement la méthode dont vous avez besoin en fonction de votre version de .NET Core dans la méthode ConfigureServices(...) de la classe Startup de votre application.

En dehors de cela, vous n'avez rien à faire de spécial, sauf bien sûr, veillez à utiliser une paire de clés appropriée dans la production.

Voir également la documentation sur Cryptographie, clés et HTTPS et le bit sur la configuration des services pour les clés . Dans ce dernier document, voici une alternative pertinente pour les cas de production:

  • AddSigningCredential

    Ajoute un service de clé de signature qui fournit le matériel de clé spécifié aux différents services de création/validation de jeton. Vous pouvez transmettre un X509Certificate2, Un SigningCredential ou une référence à un certificat à partir du magasin de certificats.

25
Jeroen