将Azure网站连接到Xero合作伙伴应用程序
我正在将我的应用程序与需要两个证书的Xero集成。 在本文的帮助下,我将它们上传到了Azure,但我仍无法连接到Xero API。 我希望有人将Xero合作伙伴应用程序与Azure Web App集成在一起。
我已经上传了两个pfx文件; 一个是自签名证书,另一个是Xero颁发的合作伙伴证书。 后者的pfx文件包含两个证书; 一个Entrust商业私人小组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();
}
}
这适用于本地,但在我的天蓝色网站上,我得到了一个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.
我也看过以下参考资料来尝试解决问题:
我还没有尝试过的东西:
错误的屏幕截图:
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
我希望它解决了你的问题。
最后得到了这个工作,我将发布我的解决方案,希望在与Xero连接时,可以为开发人员节省大量时间和挫败感。
Xero合作伙伴应用程序不适用于Azure应用程序服务 (网站)。 您必须上传两个附加证书以及您的自签名和Xero合作伙伴证书。 这些可以在本地计算机上找到,并可以以cer格式导出(下面的这些证书的详细信息)。 无法将这些证书上传到Azure应用服务确实是一个拐杖。 他们还必须上传到特定的商店(Root / CA),这是您无法通过应用服务完成的。 这些是我用来连接Xero的步骤。
将我的网站转换为Azure云服务:由于我们已经有一个在线站点,因此我对改变环境感到厌倦。 事实证明,云服务与应用服务基本相同; 你仍然在某个地方部署到虚拟机。 但是,您可以对后端进行更多控制,并且可以使用远程桌面。请阅读此处。 以下链接用于创建我的网站并将其转换为云服务:
使用Azure门户将4个证书上载到我的云计划。 您需要上传以下内容:
将这些证书添加到云项目中的Web角色。 您必须右键单击Web角色的属性,然后转到证书选项卡。 使用缩略图将所有4个证书添加到您的Web角色中,然后您将它们上传到门户中。 记下两个委托证书的商店名称 :
你必须采取很多的耐心,因为我必须通过第一步。 你必须弄清楚新的部署过程,如何在本地调试你的项目,以及可能还有很多其他令人沮丧的小技巧!
**这是使用certmgr.msc可以获得的正确的Entrust Root证书:
确保你添加了引用文章的第2步中的应用程序设置。
添加一个名为WEBSITE_LOAD_CERTIFICATES的应用程序设置,将其值设置为证书的指纹将使您的Web应用程序可访问该设置。 您可以有多个以逗号分隔的指纹值,或者可以将此值设置为“*”(不含引号),在这种情况下,所有证书都将加载到您的Web应用程序个人证书存储区。
我也会更具体地指定证书存储区,即使用:
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
这就是我们如何在所有Azure Web应用程序中加载证书的方式。
链接地址: http://www.djcxy.com/p/89535.html上一篇: Connect Azure Website to Xero Partner Application
下一篇: How to mock MotionEvent and SensorEvent for Unit Testing in android?