以编程方式访问 SAML2 证书

Accessing Certificate Programatically for SAML2

设置:

我有一个 .Net Framework WebForms 应用程序,只是使用 Sustainsys.Saml2 在 Azure 上设置 SAML2。我还使用 Git 进行版本控制 (VC) 并使用 Azure Key Vault 进行应用程序设置和连接字符串。

问题:

我可以通过哪些其他方式存储和访问 SAML2 证书,即使我可以以编程方式访问它(我目前 accessing/setting 以编程方式访问证书)?

我想防止将证书添加到我们的 VC 以及手动将其添加到 Azure 目录。

我尝试查看 Key Vault 证书,但不确定是否可以使用它。

您可以将您的证书上传到您的Azure App Service --> TSLSSL setting --> Private Key Certificates (.pfx)

上传到那里后,您可以通过 C# 以编程方式检索它,方法如下:

public static X509Certificate2 GetX509Certificate2(string certThumbprint, bool validOnly = true, StoreName storeName = StoreName.My, StoreLocation storeLocation = StoreLocation.CurrentUser) {
    using (var certStore = new X509Store(storeName, storeLocation)) {
        var certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, certThumbprint, validOnly);
        // Get the first cert with the thumbprint
        var cert = (X509Certificate2) certCollection.OfType<X509Certificate>().FirstOrDefault();
        certStore.Close();
        return cert;
    }
}

通过以下方式调用:

var cert = GetX509Certificate2(certificateThumbprint, false, storeLocation: StoreLocation.LocalMachine);

就个人而言,为了它可以在本地、部署和我们任何开发人员的计算机上工作,我使用以下代码以便它可以搜索可能存储它的不同位置:

var cert = GetX509Certificate2(certificateThumbprint, false, storeLocation: StoreLocation.CurrentUser);

if (cert == null) {
    cert = GetX509Certificate2(certificateThumbprint, false, storeLocation: StoreLocation.LocalMachine);
}