System.ServiceModel: сбой вызова SSPI, имя целевого принципа неверно

Я пытаюсь попасть в конечную точку службы WCF. Тем не менее, я продолжаю получать вышеупомянутое исключение на сервере (когда я проверяю журналы) всякий раз, когда я пытаюсь попасть в службу.
Сервис в основном имеет взаимное поведение сертификата. В нем перечислены клиентский сертификат и сервисный сертификат. Кроме того, он указывает userPrincipleName в разделе endpoint \ identity своего web.conf... Пример файла конфигурации с похожей конфигурацией показан ниже...

        <endpoint address="<nicelyAddressEndpoint>"
            binding="netTcpBinding" bindingConfiguration="customTcpBinding"
            contract="<service>" name="<smartSoundingCamelCasedServiceName>">
            <identity>
                <userPrincipalName value="<example>@yourMother.net" />
            </identity>
        </endpoint>

будет конечной точкой, которую я описал.

  <service name="<NiceServiceName>" behaviorConfiguration="MutualCertificateBehavior">
    <endpoint address="" binding="customBinding" bindingConfiguration="CustomMCBinding" contract="IServiceContractThatIsntWrittenPoorley"/>
  </service>

    <behavior name="MutualCertificateBehavior">
      <serviceDebug includeExceptionDetailInFaults="true"/>
      <serviceMetadata httpGetEnabled="true" />
      <serviceCredentials>
        <clientCertificate>
          <authentication certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck" includeWindowsGroups="false"/>
          <certificate findValue="<CertName>" storeLocation="LocalMachine" storeName="Root" x509FindType="FindBySubjectName" />
        </clientCertificate>
        <serviceCertificate findValue="<ServiceCert>" storeLocation="LocalMachine" storeName="Root" x509FindType="FindBySubjectName" />
      </serviceCredentials>
    </behavior>

И это будет обслуживание и поведение.

Я делаю все возможное, чтобы попытаться получить данные из этой вещи. Я сталкиваюсь с одним камнем преткновения, и я не уверен, так ли это, потому что я поступаю неправильно, или я близок, и мне просто нужно преодолеть небольшую проблему. В моем клиенте web.config я настроил поведение конечной точки аналогично...

      <behavior name="ClientCertificateBehvior">
        <clientCredentials>              
          <clientCertificate findValue="<XXX>"
                             storeLocation="LocalMachine"
                             storeName="My"
                             x509FindType="FindBySubjectName"/>
          <serviceCertificate>
            <authentication certificateValidationMode="PeerOrChainTrust" revocationMode="NoCheck" />
            <defaultCertificate findValue="<XXX>" storeLocation="LocalMachine" storeName="Root" x509FindType="FindBySubjectName" />
          </serviceCertificate>
        </clientCredentials>
      </behavior>

И это моя конечная точка...

        <endpoint address="xxx.xxx.xxx"
            behaviorConfiguration="ClientCertificateBehvior" binding="customBinding"
            bindingConfiguration="CustomBinding_IVPOService" contract="VPOServiceEndPoint.IVPOService"
            name="CustomBinding_IVPOService">
            <identity>
                <dns value="xxx" />
                <userPrincipalName value="yyy@xxx.net" />
            </identity>
        </endpoint>

Теперь я получаю это исключение всякий раз, когда пытаюсь воспользоваться этой услугой...

The identity check failed for the outgoing message. The expected identity is 'identity(http://schemas.xmlsoap.org/ws/2005/05/identity/right/possessproperty: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn)' for the 'xxxxxx' target endpoint.

Я отмечу, что у меня есть сертификат в соответствующем хранилище, указанном на моем локальном компьютере, и я предоставил соответствующие записи в этот сертификат. Я дошел до того, что понял, что здесь я создаю больше проблем для себя, и я пытаюсь выяснить, что нужно делать, вместо того, чтобы бросать предметы в стену и видеть, что прилипает. Какой шаг я пропускаю? Каков наилучший способ получения данных из защищенной службы MutualCertificate? Как я могу лучше всего получить правильное userPrinciplename? Я думал, что это будет то, что указано в серве web.config? Я иду об этом в правильном направлении? Я подхожу ближе или просто создаю себе еще большую путаницу?

0 ответов

Другие вопросы по тегам