3

J'essaie de m'authentifier en utilisant le service d'authentification et mon fournisseur d'appartenance. Idéalement, je veux appeler mon fournisseur d'adhésion, mais je bombarde avant de frapper mon fournisseur. Dit qu'un jeton ne peut pas être validé. En vérifiant mon journal des erreurs, il semble que j'essaie d'authentifier en utilisant Windows auth. Ce n'est pas ce que j'ai l'intention de faire. C'est un web avec un fichier svc. J'utilise svcUtil et génère un client à partir du WSDL. J'ai une page de test dans l'application que j'utilise le client. C'est juste une page de test et ne sera pas déployée. Je vois Intégré Windows Auth est vérifiée dans IIS qui ne semble pas correct, mais si je décoche, Visual Studio ne débogage pas. Quoi qu'il en soit, je regarde dans le journal des événements et obtenir deux erreursAuthentification de service WCF à l'aide de System.Web.ApplicationServices.AuthenticationService, je ne peux pas m'authentifier auprès du fournisseur d'appartenance

Logon Failure: 
Reason:  Unknown user name or bad password 
User Name: sandagtestuser 
Domain:   
Logon Type: 8 
Logon Process: Advapi 
Authentication Package: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 
Workstation Name: SDD-CK 

Logon attempt by: MICROSOFT_AUTHENTICATION_PACKAGE_V1_0 
Logon account: sandagtestuser 
Source Workstation: SDD-CK 
Error Code: 0xC0000064 

Voici les fixations du web.config. Veuillez noter que j'essaie d'utiliser SSL et HTTPS. Ceci est mon premier coup à la sécurité WCF

<system.serviceModel> 
     <client> 
     <endpoint address="https://SDD-CK/ATISServices/Services/AuthService.svc/AuthService" 
       binding="basicHttpBinding" bindingConfiguration="userHttps_AuthenticationService" 
       contract="AuthenticationService" name="userHttps_AuthenticationService" > 
     </endpoint> 
    </client> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    <behaviors> 
<serviceBehaviors> 
       <behavior name="ATISServices.AuthServiceBehavior"> 
       <serviceMetadata httpsGetEnabled="true" /> 
       <serviceDebug includeExceptionDetailInFaults="false" /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <basicHttpBinding> 

      <binding name="userHttps_AuthenticationService" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       allowCookies="true" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
       maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
       messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
       useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="TransportWithMessageCredential"> 
        <transport proxyCredentialType="None" clientCredentialType="None" realm="" /> 
        <message clientCredentialType="UserName" algorithmSuite="Default" />      
       </security> 
      </binding> 
      <binding name="basic_auth_config"> 
       <security mode="TransportWithMessageCredential"> 
        <message clientCredentialType="UserName" /> 
       </security> 
      </binding> 
     </basicHttpBinding> 

    </bindings> 
    <services> 

     <service behaviorConfiguration="ATISServices.AuthServiceBehavior" 
      name="System.Web.ApplicationServices.AuthenticationService"> 

      <endpoint binding="basicHttpBinding" bindingName="userHttps" bindingConfiguration="basic_auth_config" 
       bindingNamespace="http://asp.net/ApplicationServices/v200" 
       contract="System.Web.ApplicationServices.AuthenticationService" 
       address="AuthService"/> 

      <endpoint address="mex" binding="mexHttpsBinding" bindingConfiguration="" 
       contract="IMetadataExchange" /> 

     </service> 
    </services> 
</system.serviceModel> 

Peut-être un gourou WCF là-bas peut m'aider à corriger le problème. Je vois les informations d'identification se lever sur le serveur via le journal des événements, donc je ne dois pas être trop loin. Le message InnerException réel sur l'erreur est At least one security token in the message could not be validated.

Enfin, voici quelques paramètres web.config supplémentaires qui peuvent vous intéresser.

<system.web.extensions> 
    <scripting> 
     <webServices> 
      <authenticationService enabled="true" requireSSL="true"/> 
     </webServices> 

    </scripting> 
</system.web.extensions> 

<authentication mode="Forms" > 
     <forms cookieless="UseCookies" /> 
    </authentication> 

<membership defaultProvider="KCMembershipProvider"> 
     <providers> 
      <clear/> 
      <add 
      name="KCMembershipProvider" 
      applicationName="/" 
      type="zcore.MembershipProvider.KCMembershipProvider, zcore.MembershipProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
     </providers> 
    </membership> 

Une aide ou des conseils à ce stade seraient grandement appréciés. Je me suis battu avec ça pendant deux jours. J'utilise aussi des certificats. Je les ai fait avec l'outil 'makecert'. L'une est une autorité de certification et l'autre est un certificat 'localhost' utilisant ladite autorité. J'ai également utilisé httpcfg et ai mis l'empreinte de pouce de cert au port 9307, cependant quand je mets ": 9307" sur l'adresse de service, j'obtiens la connexion activement refusée. J'apprécie vraiment toute aide ici.

Cheers,
~ ck à San Diego

Répondre

1

Cela fait eu à travailler. Ajout de ceci au comportement du service.

<serviceCredentials> 
     <userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="KCMembershipProvider"/> 
     </serviceCredentials> 
Questions connexes