Подтвердить что ты не робот

При проверке безопасности для сообщения произошла ошибка

Когда я пытаюсь вызвать службу WCF, я получаю следующее сообщение "Произошла ошибка при проверке безопасности для сообщения".

Когда я удаляю настраиваемое аутентификацию, служба не работает. Я не могу понять, что я неправильно сконфигурировал в своем web.config. Любое понимание было бы оценено.

  <system.serviceModel>
     <services>
        <service behaviorConfiguration="NAThriveExtensions.nableAPIBehavior"
          name="NAThriveExtensions.nableAPI">
           <endpoint 
             address="" 
             binding="basicHttpBinding" 
             bindingConfiguration="basicHttpBinding_Secure"
             contract="NAThriveExtensions.InableAPI">
           </endpoint>
           <endpoint 
             address="mex" 
             binding="mexHttpsBinding" 
             contract="IMetadataExchange" />
        </service>
     </services>
     <behaviors>
        <serviceBehaviors>
          <behavior name="NAThriveExtensions.nableAPIBehavior">
            <serviceMetadata httpsGetEnabled="true" />
            <serviceDebug includeExceptionDetailInFaults="false" />
            <serviceCredentials>
              <userNameAuthentication 
                userNamePasswordValidationMode="Custom" 
              customUserNamePasswordValidatorType= "NAThriveExtensions.Authentication, NAThriveExtensions" />
            </serviceCredentials>
          </behavior>
        </serviceBehaviors>
     </behaviors>
     <bindings>
       <basicHttpBinding>
         <binding name="basicHttpBinding_Secure">
           <security mode="TransportWithMessageCredential">
             <message clientCredentialType="UserName"/>
           </security>
         </binding>
       </basicHttpBinding>
     </bindings>
  </system.serviceModel>
4b9b3361

Ответ 1

Это оказалось проблемой на стороне потребления, а не самой службой. Программное обеспечение AG webMethods 8 потребляло этот сервер, но не было обработчика безопасности, добавленного в службу, поэтому учетные данные не добавлялись в заголовок, в результате чего в вышеупомянутой ошибке.

Ответ 2

Я получал это же сообщение об ошибке, и оказалось, что это связано с разницей времени между моей машиной рабочей станции и сервером, на котором размещена служба WCF. Сервер был около 10 минут за моей машиной, и безопасность WCF, похоже, не очень нравится.

Чтобы найти проблему с корнем, я включил serviceSecurityAuditing в конфигурационном файле сервера. Добавьте следующую команду в раздел configuration/system.serviceModel/behaviors/serviceBehaviors/behavior для вашей службы:

<serviceSecurityAudit 
    auditLogLocation="Application" 
    serviceAuthorizationAuditLevel="Failure" 
    messageAuthenticationAuditLevel="Failure" 
    suppressAuditFailure="true"/>

Следующий сайт был полезен для выяснения этого:

http://blogs.microsoft.co.il/blogs/urig/archive/2011/01/23/wcf-quot-an-error-occurred-when-verifying-security-for-the-message-quot-and-service-security-audit.aspx

Ответ 3

Другая причина этого сообщения заключается в том, что некоторые из ваших компьютеров не синхронизируются по времени. WCF, по умолчанию, допускает пятиминутный пробел; кроме этого, он выдает ошибку, если ситуация не синхронизирована.

Решение состоит в том, чтобы синхронизировать все ваши машины. time.windows.com известен тем, что не работает, поэтому я предлагаю использовать что-то еще. (Если вы находитесь в корпоративной среде, локальный контроллер домена может быть правильным выбором здесь.)

Ответ 4

Я получал ту же ошибку на моем сервере IIS 7.5. Я забыл добавить разрешение Read на секретный ключ сертификата в виртуальную учетную запись пула приложений (например, IIS AppPool\ASP.NET v4.0).

Для информации, проверяя различные комбинации учетных записей и разрешений, я заметил, что пул приложений необходимо переработать, чтобы потерять доступ к ключу, как только он был извлечен один раз.

(0x80131501 - Ошибка при проверке безопасности для сообщения.)

Ответ 5

Я получал ту же ошибку, и ни одна из приведенных выше не помогла мне.

Я, наконец, отследил его до connectionStrings в родительском web.config(моя служба была развернута на дочернее приложение на сайт администратора).

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

Для ясности в родительском web.config я изменил этот

<connectionStrings>
    <add name="..." />
</connectionStrings>

к этому

<location path="." inheritInChildApplications="false">
    <connectionStrings>
        <add name="..." />
    </connectionStrings>
</location>

Обратите внимание, что эта ошибка также привела к этому очень бесполезному сообщению serviceSecurityAudit:

Ошибка аутентификации сообщений.
 Сервис:...
 Действие: http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
 Клиент:
 ActivityId:
 ArgumentNullException: значение не может быть нулевым.
Имя параметра: менеджер

Ответ 6

Я получал ту же ошибку. Я забыл добавить разрешение чтения в базе данных aspnetdb для членства (IIS APPPOOL\DefaultAppPool).

Ошибка аутентификации сообщений. Сервис:....

Действие: http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT

ClientIdentity:

ActivityId:

SqlException: не удается открыть базу данных "aspnetdb", запрошенную логином. Ошибка входа в систему.

Ошибка входа для пользователя "IIS AppPool\DefaultAppPool".

Ответ 7

Имя пользователя и пароль сервер, на котором вы подключаетесь, а не ваш имя пользователя и пароль для входа в систему.