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 :
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 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: Lappelant na 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) +1565Voici 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 <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>
J'aimerai que mon client puisse se connecter en anonyme. Mon IIS accepte les connexion anonyme et utilise l'utilisateur IUSR_JUPITER.
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>
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
Partager