2011-04-14 11 views
8

estoy tratando de crear nuestro propio proveedor de WIF Identidad y ejecutarlo en Azure, pero estoy luchando al intentar generar automáticamente la Federación de metadatos.¿Cómo puede obtener un certificado de código en Windows Azure

Esta línea no aparece para trabajar en Azure:

CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, signingCertificateName); 

El certificado se carga en Azure, ¿cómo puedo conseguir el asimiento de él?

Gracias

+0

Parece que, como se ilustra a continuación, el código es el mismo para la empresa y en la nube. Estaba revisando el nombre del certificado y sobre el Azure Contenía información extra que es por eso que no pude encontrarlo. – Max

Respuesta

7

Pruebe esta entrada del blog: http://blogs.msdn.com/b/jnak/archive/2010/01/29/installing-certificates-in-windows-azure-vms.aspx

Sugiere un código como:

X509Certificate2Collection selectedCerts = new X509Certificate2Collection(); 

X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser); 
store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly); 
foreach (X509Certificate2 cert in store.Certificates) 
{ 
    // do stuff with cert 
} 
+0

este código también funciona en máquinas no-azules ... –

+0

Este fragmento me permitió ver que el nombre del certificado en Azure era diferente a lo que estaba esperando y lo solucionaron mi problema :) – Max

9

Como una ligera variación en otras respuestas, si lo que desea es obtener un certificado en lugar de iterar a través de todos ellos se podría hacer algo como esto:

var store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 

store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); 

X509Certificate2Collection matchedCertificates = 
    store.Certificates.Find(X509FindType.FindBySubjectName, signingCertificateName, true); 

if (matchedCertificates.Count > 0) 
{ 
    myCertificate = matchedCertificates[0]; 
} 

(que tampoco es específico de Azure)

+0

excelente, a pesar de que he marcado la otra repsonse como respuesta porque resaltó mi problema. He refactorizado mi código para que se vea así. ¡Gracias! 1 – Max

+0

¿Cuál es la respuesta actual, StoreLocation.LocalMachine o StoreLocation.CurrentUser? Entendí que para las aplicaciones web no hay acceso a los certificados de localizador así que debe ser una máquina local, ¿estoy equivocado? –

+1

he utilizado solamente nunca LocalMachine en Azure como encuentre el concepto de un usuario de un bit o un concepto extraño en esa situación. – knightpfhor

Cuestiones relacionadas