I'm trying to create our own WIF Identity Provider and run it on Azure but I'm struggling when trying to automatically generate the Federation Metadata.
This line does not appear to work on Azure:
CertificateUtil.GetCertificate(StoreName.My, StoreLocation.LocalMachine, signingCertificateName);
The certificate is uploaded to Azure, how can I get hold of it?
Thanks
Try this blog post:
http://blogs.msdn.com/b/jnak/archive/2010/01/29/installing-certificates-in-windows-azure-vms.aspx
It suggests code like:
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
}
As a slight variation on other answers, if you just want to get one certificate rather than iterate through all of them you could do something like this:
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];
}
(which also is not Azure specific)