HTTP-запрос не авторизован при использовании схемы аутентификации клиента «Аноним» при использовании идентификационных данных - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь подключиться к службе SOAP с помощью инструмента генератора клиента WCF в Visual Studio 2017. Однако, когда я делаю запрос, я получаю эту ошибку:

"Запрос httpне авторизован клиентской схемой аутентификации «Аноним».

Я пытаюсь использовать проверку подлинности сертификата.Это мой App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
    <system.serviceModel>
        <diagnostics performanceCounters="Default" />
        <behaviors>
            <endpointBehaviors>
                <behavior name="NewBehavior0">
                    <clientCredentials useIdentityConfiguration="true">
                        <clientCertificate findValue="portalservicos.jucemg.mg.gov.br"
                            storeLocation="LocalMachine" storeName="TrustedPeople" x509FindType="FindByIssuerName" />
                        <serviceCertificate>
                            <authentication certificateValidationMode="PeerOrChainTrust"
                                trustedStoreLocation="LocalMachine" />
                        </serviceCertificate>
                    </clientCredentials>
                </behavior>
            </endpointBehaviors>
        </behaviors>
        <bindings>
            <basicHttpBinding>
                <binding name="NewBinding2">
                    <security mode="Transport">
                        <transport clientCredentialType="Certificate" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://newsrm.jucemg.mg.gov.br:443/empreendimento/service/ViabilidadePrefeituraWS"
                behaviorConfiguration="NewBehavior0" binding="basicHttpBinding"
                bindingConfiguration="NewBinding2" contract="ViabilidadePrefeituraWS.ViabilidadePrefeituraWS"
                name="ViabilidadePrefeituraWSPort">
            </endpoint>
        </client>
    </system.serviceModel>
</configuration>

Это мой код:

class Program
{
    static void Main(string[] args)
    {
        var ws = new ViabilidadePrefeituraWSClient();
        ws.callService("");
    }
}

Когда я устанавливаю точку останова, я вижу, что сертификат действительно загружается (ws.ClientCredentials.ClientCertificateпоказывает правильный сертификат).Однако почему-то кажется, что сертификат не отправляется или конфигурация каким-то образом не используется, поскольку в ошибке упоминается схема аутентификации «Анонимный».

Я видел этот вопрос ( WCFTestClient HTTP-запрос не авторизован со схемой аутентификации клиента 'Anonymous' ) и другие подобные вопросы, однако ни один из них не касался использования сертификатов для аутентификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...