c# - 将 Azure 网站连接到 Xero 合作伙伴应用程序

标签 c# azure x509 http-status-code-403 xero-api

我正在将我的应用程序与 Xero 集成,这需要两个证书。我在 this 的帮助下将它们上传到 Azure文章,但我仍然无法连接到 Xero API 。我希望有人有将 Xero 合作伙伴应用程序与 Azure Web 应用程序集成的经验。

我上传了两个 pfx 文件;一种是自签名证书,另一种是Xero颁发的合作伙伴证书。后一个 pfx 文件包含两个证书;我的应用程序的 Entrust Commercial Private Sub CA1(无论何种方式)和唯一的 Entrust Id 证书。

我使用以下代码通过其唯一的指纹加载证书:

    static X509Certificate2 GetCertificateFromStore(string thumbprint)
    {
        var store = new X509Store(StoreLocation.CurrentUser);

        try
        {
            thumbprint = Regex.Replace(thumbprint, @"[^\da-zA-z]", string.Empty).ToUpper();
            store.Open(OpenFlags.ReadOnly);

            var certCollection = store.Certificates;
            var currentCerts = certCollection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
            var signingCert = currentCerts.Find(X509FindType.FindByThumbprint, thumbprint, false);

            if (signingCert.Count == 0)
            {
                throw new Exception($"Could not find Xero SSL certificate. cert_name={thumbprint}");
            }

            return signingCert[0];
        }
        finally
        {
            store.Close();
        }
    }

这在本地工作正常,但在我的 azure 网站上我收到 403.7 错误:

The page you are attempting to access requires your browser to have a Secure Sockets Layer (SSL) client certificate that the Web server recognizes.

我还查看了以下引用资料来尝试解决该问题:

我还没有尝试过:

  • 将我的网络应用程序转换为云服务;试图避免这样做,但我不确定涉及哪些步骤。
  • 使用虚拟机;我还没有找到任何关于如何执行此操作的详细步骤,但似乎是比上面更好的选择。

错误截图: Error

最佳答案

403 错误意味着我们在连接中没有看到 Xero Entrust 证书。 有关它的更多详细信息,请点击此处 - http://blog.xero.com/developer/api-overview/http-response-codes/#403

基本上,它在您的本地 IIS 实例上运行,因为它是一个“单租户”计算机,您的应用程序不需要与其他应用程序隔离。

当您的应用程序被用于隔离网站的安全模型阻止时。

总而言之,您必须执行以下操作才能使您的证书在 Azure 上运行:

1) 将证书、私钥和所有中间证书导出到 PFX 文件中。

2) 使用 Azure 门户将证书上传到您正在运行的云服务(它应显示为多个条目)。

3)通过代码中的机器存储访问证书。

基于以下数据: https://community.xero.com/developer/discussion/626401

https://social.msdn.microsoft.com/Forums/azure/en-US/29b30f25-eea9-4e8e-8292-5ac8085fd42e/access-to-certificates-in-azure-web-sites

希望它能解决您的问题。

关于c# - 将 Azure 网站连接到 Xero 合作伙伴应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34519068/

相关文章:

c# - WPF找不到命名空间

windows - Azure AD : 50155 Device authentication failed

azure - Microsoft Azure - 允许特定IP访问特定页面

openssl - 如何使用 openssl 库将 ASN1_object 转换为可读格式。?

openssl - 请告诉我如何在 x.509 中打印扩展名的值

security - 是否有可能将服务器证书复制到攻击者的服务器上以进行滥用?

c# - 如何在 c# .net core 应用程序中运行 python 神经网络 keras 脚本

c# - 如何在 VSPackage 中找到解决方案使用的版本控制系统

azure - 路易斯列出实体和同义词

c# - 如何防止 .NET 的 XmlDocument 输出中的空白 xmlns 属性?