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