IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

Problème authentification WCF


Sujet :

Services Web

  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut Problème authentification WCF
    Bonjour,

    j'ai un problème avec mon service. Celui ci est hebergé par un serveur IIS 6.0 sur une machine. Lorsque mon client veut se connecter avec la méthode open() celui-ci se voit refuser la connection. Voici la stackTrace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Erreur source:
     
    Ligne 18 :         {
    Ligne 19 :             ServiceReference1.ServiceAffilieClient client = new WebApplication1.ServiceReference1.ServiceAffilieClient();
    Ligne 20 :             client.Open();
    Ligne 21 :             client.Connection("toto", "tata");
    Ligne 22 :             client.Close();
     
     
    Fichier source : C:\Documents and Settings\Administrateur.UC200512002\Mes documents\Visual Studio 2008\Projects\WebApplication1\WebApplication1\Default.aspx.cs    Ligne : 20
     
    Trace de la pile:
     
    [FaultException: The request for security token could not be satisfied because authentication failed.]
       System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault(Message message, EndpointAddress target) +11289905
       System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody(Message incomingMessage, SspiNegotiationTokenProviderState sspiState) +49
     
    [SecurityNegotiationException: L’appelant n’a pas été authentifié par le service.]
       System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +7596735
       System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +275
       System.ServiceModel.ICommunicationObject.Open(TimeSpan timeout) +0
       System.ServiceModel.ClientBase`1.System.ServiceModel.ICommunicationObject.Open(TimeSpan timeout) +117
       System.ServiceModel.ClientBase`1.Open() +38
       WebApplication1._Default.Button1_Click(Object sender, EventArgs e) in C:\Documents and Settings\Administrateur.UC200512002\Mes documents\Visual Studio 2008\Projects\WebApplication1\WebApplication1\Default.aspx.cs:20
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
    Je vous mets aussi une partie du Web.Config coté client qui concerne le service :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <system.serviceModel>
    		<bindings>
       <wsHttpBinding>
        <binding name="WSHttpBinding_IServiceAffilie" closeTimeout="00:01:00"
         openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
         bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
         maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
         textEncoding="utf-8" useDefaultWebProxy="true" allowCookies="false">
         <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
         <reliableSession ordered="true" inactivityTimeout="00:10:00"
          enabled="false" />
         <security mode="Message">
          <transport clientCredentialType="Windows" proxyCredentialType="None"
           realm="" />
          <message clientCredentialType="Windows" negotiateServiceCredential="true"
           algorithmSuite="Default" establishSecurityContext="true" />
         </security>
        </binding>
       </wsHttpBinding>
      </bindings>
    		<client>
       <endpoint address="http://jupiter.intranet.mielmut.fr/WSAffilie/MIELService.ServiceAffilie.svc"
        binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IServiceAffilie"
        contract="ServiceReference1.IServiceAffilie" name="WSHttpBinding_IServiceAffilie">
        <identity>
         <userPrincipalName value="jupiter\IUSR_JUPITER" />
        </identity>
       </endpoint>
      </client>
    	</system.serviceModel>
    Voici le Web.Config coté serveur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <section name="MIELService.Settings1" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
          <section name="MIELService.ConfBase" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
      </configSections>
      <system.web>
        <compilation debug="true" />
        <anonymousIdentification enabled="true" />
      </system.web>
      <!-- Lors du déploiement du projet de bibliothèque du service, le contenu du fichier de configuration doit être ajouté au fichier app.config  
      de l'hôte. System.Configuration ne prend pas en charge les fichiers de configuration pour les bibliothèques. -->
      <system.serviceModel>
        <services>
          <service name="MIELService.ServiceAffilie" behaviorConfiguration="MIELService.Service1Behavior">
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:8731/Design_Time_Addresses/MIELService/Service1/" />
              </baseAddresses>
            </host>
            <!-- Service Endpoints -->
            <!-- Sauf si elle est qualifiée complète, l'adresse est relative à l'adresse de base indiquée plus haut -->
            <endpoint address="" binding="wsHttpBinding" contract="MIELService.IServiceAffilie">
              <!-- 
                  Lors du déploiement, l'élément d'identité suivant doit être supprimé ou remplacé pour refléter 
                  l'identité sous laquelle le service déployé s'exécute.  En cas de suppression, WCF déduira automatiquement une identité 
                  appropriée.
              -->
              <identity>
                <dns value="" />
                <userPrincipalName value="jupiter\IUSR_JUPITER" />
                <servicePrincipalName value="MIEL\jupiter"/>
              </identity>
            </endpoint>
            <!-- Metadata Endpoints -->
            <!-- Le point de terminaison de l'échange de métadonnées est utilisé par le service pour se décrire aux clients. -->
            <!-- Ce point de terminaison n'utilise pas de liaison sécurisée et doit être sécurisé ou supprimé avant le déploiement -->
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            <!--<endpoint address="mex" binding="mexHttpBinding " bindingConfiguration="Conf" contract="IMetadataExchange" />-->
          </service>
        </services>
        <!--<bindings>
          <wsHttpBinding>
            <binding name="Conf" closeTimeout="00:01:00"
                        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                        bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                        maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                        messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                        allowCookies="false" />
          </wsHttpBinding>
        </bindings>-->
        <behaviors>
          <serviceBehaviors>
            <behavior name="MIELService.Service1Behavior">
              <serviceAuthorization impersonateCallerForAllOperations="true" />
              <!-- Pour éviter la divulgation des informations sur les métadonnées, 
              définissez la valeur ci-dessous sur false et supprimez le point de terminaison des métadonnées ci-dessus avant le déploiement -->
              <serviceMetadata httpGetEnabled="True" />
              <!-- Pour recevoir les détails d'exception des erreurs à des fins de débogage, 
              définissez la valeur ci-dessous sur true.  Définissez-la sur false avant le déploiement 
              pour éviter la divulgation des informations d'exception -->
              <serviceDebug includeExceptionDetailInFaults="True" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
      <userSettings>
        <MIELService.Settings1>
          <setting name="EasyMutConnection" serializeAs="String">
            <value>server=10.0.122.202;user id=login;Password=pass;persist security info=True;database=EASYESSAI2</value>
          </setting>
          <setting name="GEDConnection" serializeAs="String">
            <value>null</value>
          </setting>
        </MIELService.Settings1>
      </userSettings>
      <connectionStrings>
        <add name="DefaultConnection" connectionString="Data Source = |SQL/CE|" />
      </connectionStrings>
      <applicationSettings>
        <MIELService.ConfBase>
          <setting name="EasyMutConnection" serializeAs="String">
            <value>10.0.122.202;login;pass;EASYESSAI2</value>
          </setting>
          <setting name="GEDConnection" serializeAs="String">
            <value>null</value>
          </setting>
        </MIELService.ConfBase>
      </applicationSettings>
    </configuration>
    J'aimerai que mon client puisse se connecter en anonyme. Mon IIS accepte les connexion anonyme et utilise l'utilisateur IUSR_JUPITER.

    Cela fait 2jours que je regarde et je ne comprends pas pourquoi le service me refoule.

    PS : En consultant les fichier d'evenement j'ai remarqué que lors de mes tentatives de connections le serveur recevait comme identifiant, les identifiant de la machine appelante et ne passe pas par l'anonyme.


    Merci pour votre aide

    Cordialement,

    --
    Sylvain

  2. #2
    Membre averti
    Inscrit en
    Février 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 11
    Par défaut
    Salut,

    je ne suis pas sûr de moi, mais je pense qu'il te manque quelquechose dans behavior/clientCredentials. Je dirais un truc du genre:
    <behavior name="MIELService.Service1Behavior">
    <clientCredentials>
    <windows />
    </clientCredentials>
    ...
    </behavior>

    J'espère que ca t'aide un peu.

    Micky

  3. #3
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Pourquoi déclares-tu à la fois un UPN et un SPN ? si tu déclares le SPN, normalement tu n'as pas à déclarer l'UPN.

Discussions similaires

  1. Problème authentification avec couplage Apache/Tomcat
    Par arN34 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 28/05/2007, 10h26
  2. Problème authentification Tomcat
    Par fabou3377 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 09/04/2007, 09h53
  3. [Système] Problème authentification site
    Par bilowlex dans le forum Langage
    Réponses: 3
    Dernier message: 17/02/2007, 08h52
  4. Problème authentification basic
    Par Ben42 dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2006, 11h21
  5. Problème authentification utilisateurs.
    Par Mevil dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 02/06/2006, 09h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo