Azure应用服务“无法识别客户端证书凭据”

时间:2019-04-03 18:26:59

标签: azure wcf soap certificate channelfactory

当我在本地运行ASP dotnet core API(处于发布模式)时,它将使用WCF和客户端证书(X509Certificate2)进行外部调用,并正确返回数据。但是,当将此API部署为Azure App Service时,它会指出“无法识别客户端证书凭据”。 X509Certificate2已从文件系统正确加载(从远程调试中可以看到)。

我尝试使用普通的HttpClient进行呼叫并添加证书,但这给了我相同的结果。 我们还尝试了使用CertificateStore取得相同的结果。

private async Task ProcessRequestAsync(string endpoint, X509Certificate2 certificate, Func<SsoSoapType, Task> action)
        {
            BasicHttpsBinding binding = new BasicHttpsBinding();
            EndpointAddress endpointAddress = new EndpointAddress(new Uri(endpoint));
            ChannelFactory<SsoSoapType> factory = new ChannelFactory<SsoSoapType>(binding, endpointAddress);
            factory.Credentials.ClientCertificate.Certificate = certificate;
            binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate;

            await action(factory.CreateChannel());

            if (factory != null)
            {
                if (factory.State == CommunicationState.Faulted)
                    factory.Abort();
                else
                    factory.Close();
            }
        }

我希望部署的版本的行为与本地版本相同。但显然并非如此。

有人可以解释这出了什么问题吗? 还是由需要相应设置的Azure门户中的某些设置引起的?

亲切的问候, 雅科

1 个答案:

答案 0 :(得分:0)

好的,经过一番深入的研究,我发现我的Azure App Service已设置为托管计划“ D1”。这意味着该计算机在不同的应用程序服务之间共享,因此无法利用证书存储(因为您将能够看到其他人的证书)。升级到托管计划“ B1”后,此问题已解决。