2017-07-07 1 views
0

J'ai téléchargé un certificat pfx en tant que secret sur mon portail Azure et je souhaite maintenant l'utiliser pour signer les informations d'identification dans IdentityServer4.Utilisez le certificat dans Azure Key Vault pour signer IdentityServer4

J'ai référence à la voûte de la mise en service de l'api en utilisant:

builder.AddAzureKeyVault(
     $"https://{config["Vault"]}.vault.azure.net/", 
     config["ClientId"], 
     config["ClientSecret"]); 

Mais pas trop sûr comment obtenir le certificat sur pour passer à:

services.AddIdentityServer() 
      .AddSigningCredential(...) 

Est-il peut-être pour pouvoir référencer le certificat directement à partir du coffre-fort, ou dois-je déployer le certificat sur l'application Web sur laquelle l'API fonctionne?

Merci

Répondre

2

Vous êtes déjà construire l'objet IConfiguration, de sorte que vous pouvez faire référence à la clé .pfx comme vous le feriez référence tout autre objet de la configuration. Si la clé est dans la keyvault vous pouvez référencer quelque chose comme:

// Name of your pfx in the keyvault. 
var key = _configuration["pfx"]; 
var pfxBytes = Convert.FromBase64String(key); 

// Create the certificate. 
var cert = new X509Certificate2(pfxBytes); 
services.AddIdentityServer() 
    .AddSigningCredential(cert); 

Je recommanderais d'utiliser le keyvault pour cela, mais vous pouvez décider de télécharger le PFX au magasin de certificats de l'application Web. Vous pouvez le faire dans Azure en accédant à votre application Web -> Certificats SSL -> Télécharger le certificat et entrer le mot de passe. Accédez aux paramètres de l'application et ajoutez le paramètre de l'application WEBSITE_LOAD_CERTIFICATES : <thumbprint>. La dernière chose que vous feriez est de récupérer le certificat du magasin et l'ajouter à nouveau comme AddSigningCredential(cert);.

+0

Merci, je ne savais pas que c'était si simple! Quel est l'avantage d'ajouter le pfx à l'application web? Juste en pensant que si je devais créer un nouvel environnement de cette application, je devrais déployer le CERT en plus de simplement référencer le CERT unique dans le coffre-fort. – ADringer

+0

Juste une autre question à ajouter à cela. Lors de l'hébergement dans Azure, il semble se bloquer à la ligne 'var cert = new X509Certificate2 (pfxBytes);' avec rien écrit dans les journaux. Aurais-je besoin de fournir le mot de passe du certificat? – ADringer