Une erreur s'est produite lors de la vérification de la sécurité du message

Lorsque j'essaie d'appeler un service WCF, je reçois le message suivant "une erreur s'est produite lors de la vérification de la sécurité du message."

Lorsque je supprime l'authentification personnalisée, le service ne fonctionne pas de problème. Je ne peux pas comprendre ce que j'ai mal configuré dans mon web.config. Toute idée serait appréciée.

  <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>
22
demandé sur Matt Klepeis 2010-09-22 03:26:14

7 réponses

Je recevais ce même message d'erreur et il s'est avéré être dû à une différence de temps entre ma machine de poste de travail et le serveur hébergeant le service WCF. Le serveur était à environ 10 minutes derrière ma machine et la sécurité WCF ne semble pas beaucoup aimer cela.

Pour trouver le problème racine, j'ai activé serviceSecurityAuditing dans le fichier de configuration du serveur. Ajoutez ce qui suit à la configuration/système.serviceModel / comportements / serviceBehaviors / section comportement pour votre service:

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

Le site suivant a été utile pour comprendre cela:

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

30
répondu Sam 2013-03-07 23:10:27

Une autre cause de ce message est lorsque certaines de vos machines ne sont pas synchronisées dans le temps. WCF, par défaut, permet un écart de cinq minutes; au-delà de cela, il génère une erreur si les choses sont désynchronisées.

, La solution est de synchroniser toutes vos machines. time.windows.com est notoire pour ne pas fonctionner, donc je suggère d'utiliser autre chose. (Si vous êtes dans un environnement d'entreprise, un contrôleur de domaine local peut être le bon choix ici.)

16
répondu ashes999 2014-01-31 16:30:52

Cela a fini par être un problème du côté consommateur, pas avec le service lui-même. WebMethods 8 de Software AG consommait ce serveur mais aucun gestionnaire de sécurité n'était ajouté au service, de sorte que les informations d'identification n'étaient pas ajoutées à l'en-tête, ce qui entraînait l'erreur susmentionnée.

7
répondu Matt Klepeis 2010-10-08 16:24:58

Je recevais la même erreur sur mon serveur IIS 7.5. J'ai oublié d'ajouter l'autorisation de lecture sur la clé privée du certificat au compte virtuel app pool (par exemple IIS AppPool\ASP.NET v4. 0).

Pour info, tout en testant diverses combinaisons de comptes et d'autorisations, j'ai remarqué que le pool d'applications devait être recyclé pour perdre l'accès à la clé, une fois qu'il avait été récupéré une fois.

(0x80131501 - une erreur s'est produite lors de la vérification de la sécurité du message.)

0
répondu ssg31415926 2013-04-08 05:57:30

Je recevais la même erreur et aucune de l'aide ci-dessus pour moi.

Je l'ai finalement suivi jusqu'à connectionStrings dans un web parent.config (mon service a été déployé sur une application enfant sur un site d'administration).

Oui semble ridicule, mais dès que j'ai enveloppé les chaînes de connexion dans le web parent.config avec un élément de localisation tout a commencé à fonctionner.

Pour plus de clarté, dans le web parent.config, j'ai changé cela

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

À ce

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

Notez également cette erreur cela a donné lieu à ce message de journal serviceSecurityAudit très inutile:

L'authentification du Message a échoué.
Service: ...
Action: http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT
ClientIdentity:
ActivityId:
ArgumentNullException: la valeur ne peut pas être nulle.
Nom du paramètre: gestionnaire

0
répondu Dan 2016-09-06 12:30:15

Je recevais la même erreur. J'ai oublié d'ajouter l'autorisation de lecture sur la base de données d'adhésion aspnetdb à la (IIS APPPOOL \ DefaultAppPool).

Échec de L'authentification du Message. Service:....

Action: http://schemas.xmlsoap.org/ws/2005/02/trust/RST/SCT

ClientIdentity:

ActivityId:

SqlException: impossible D'Ouvrir La base de données "aspnetdb" demandée par la connexion. La connexion a échoué.

Échec de la connexion pour l'utilisateur 'IIS APPPOOL\DefaultAppPool'.

0
répondu Yasser Mohammed 2016-12-19 07:24:54

Le nom d'utilisateur et le mot de passe sont le serveur que vous connectez , pas votre système login nom d'utilisateur et mot de passe.

-4
répondu MapleStory 2015-12-23 09:05:04