Служба приложений Azure «Учетные данные сертификата клиента не были распознаны» - PullRequest
0 голосов
/ 03 апреля 2019

Когда я запускаю свой API-интерфейс ядра ASP dotnet локально (в режиме выпуска), он выполняет внешний вызов, используя WCF и сертификат клиента (X509Certificate2), возвращая данные правильно.Но когда этот API развернут как служба приложений Azure, он сообщает: «Учетные данные сертификата клиента не были распознаны».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, которые необходимо настроить соответствующим образом?

С уважением, Jacco

1 Ответ

0 голосов
/ 05 апреля 2019

Хорошо, после тщательного исследования я обнаружил, что моя служба приложений Azure настроена на хостинг-план "D1".Это означает, что машина совместно используется различными службами приложения и, следовательно, не может использовать хранилище сертификатов (как вы могли бы видеть сертификаты других людей).После перехода на хостинг-план «B1» проблема была решена.

...