Mon 1er service WCF :"L'appelant n'a pas été authentifié par le service."
-
mardi 6 décembre 2011 14:34
Bonjour,
J'ai dépveloppé mon 1er service WCF. Dèja pour l'installer j'ai galéré. Mais maintenant, il reste à l'exploiter . J'ai des soucis d'authentification quand mon client essaie de lancer l'open.
Côté serveur, voici le web.config :
<system.serviceModel>
<services>
<service name="CatWebWcf.CatWebWCF" behaviorConfiguration="CatWebWcf.CatWebWCFBehavior">
<!-- Service Endpoints -->
<endpoint address="" binding="wsHttpBinding" contract="CatWebWcf.ICatWebWCF">
<!--
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="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="CatWebWcf.CatWebWCFBehavior">
<!-- 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="false"/>
<serviceCredentials>
<windowsAuthentication allowAnonymousLogons="true"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>Coté client Voici l'appel :
Dim wcf As New CatWebWCF.CatWebWCFClient
wcf.Open()
wcf.Restaurer()wcf.Close()
- Modifié FrançoisBOSSANT jeudi 8 décembre 2011 19:18
Toutes les réponses
-
mardi 6 décembre 2011 19:53
Pour préciser l'utilisation de ce service, il est hébergé sur un serveur windows 2008 server avec IIS7 sur internet.
Il a une base de données SQL SERVER 2008. Le but est d'accéder ou déclencher des choses de l'extérieur.
Le serveur semble avoir les pré-requis :
Services Internet IIS
IIS > Services WWW > Développement d’application > ASP.Net
Service d’activation des processus Windows
Microsoft .Net Framework 3.0 > WCF http Activation
Microsoft .Net Framework 3.0 > WCF Non-http activationLe service est installé au niveau IIS et j'arrive à le configurer (à distance dans mon environnement visual studio 2008).
Le journal du serveur m'indique :
Nom du journal :System
Source : Microsoft-Windows-WAS
Date : 06/12/2011 20:50:40
ID de l'événement :5186
Catégorie de la tâche :Aucun
Niveau : Information
Mots clés : Classique
Utilisateur : N/A
Ordinateur : XXXXXXXXXXX
Description :
Un processus de travail avec l'identificateur de processus '6048' desservant le pool d'applications 'CatWebWCF' a été fermé pour cause d'inactivité. Le délai d'attente du pool d'applications était défini sur 20 minutes. En cas de besoin, un nouveau processus de travail sera démarré.
XML de l’événement :A priori, Je n'arrive pas à passer l'authentification. Et j'avoue que les parties client et serveur du Web.Config me paraissent TRES COMPLIQUEES.
Puis je avoir des détails à ce sujet?
Merci
FB
- Modifié FrançoisBOSSANT jeudi 8 décembre 2011 19:20
-
mercredi 7 décembre 2011 09:36
reBonjour,
Toujours pas réussi... Donc rappel du context.Phase 1
Dans visual studio 2008, je créé mon service plutôt facilement je dois dire ^^
Dans l'environnement de développement, tout va, je vois les méthodes que j'ai implémentées, elles s'exécutent ...Phase 2
Paramétrage du serveur : La j'ai galéré un moment.
Installer Services Internet IIS
IIS > Services WWW > Développement d’application > ASP.Net
Service d’activation des processus Windows
Microsoft .Net Framework 3.0 > WCF http Activation
Microsoft .Net Framework 3.0 > WCF Non-http activation
Puis création du pool (en networking) et site avec une autorisation anonyme.La j'y croyais vu que depuis mon projet, je pouvais référencer mon Service WCF et voir mes méthodes.Au début, je n'ai pas touché aux Web.Config (client et serveur) : j'avoue que de toute façon ça ressemblait à de l'hébreu pour moi.Mais au moment de l'exécution patatra, les problème on commencé. J'ai eu des problème d'authentification.
Message>>> L’appelant n’a pas été authentifié par le service.Coté client voici le config :<system.web> <membership defaultProvider="ClientAuthenticationMembershipProvider"> <providers> <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" /> </providers> </membership> <roleManager defaultProvider="ClientRoleProvider" enabled="true"> <providers> <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" /> </providers> </roleManager> </system.web> <system.serviceModel> <bindings> <wsHttpBinding> <binding name="WSHttpBinding_ICatWebWCF" 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://...../CatWebWCF.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_ICatWebWCF" contract="CatWebWCF.ICatWebWCF" name="WSHttpBinding_ICatWebWCF"> <identity> <dns value="localhost" /> </identity> </endpoint> </client> </system.serviceModel>Config côté serveur:<system.web> <compilation debug="false" strict="false" explicit="true"> <assemblies> <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </assemblies> </compilation> <pages> <namespaces> <clear /> <add namespace="System" /> <add namespace="System.Collections" /> <add namespace="System.Collections.Specialized" /> <add namespace="System.Configuration" /> <add namespace="System.Text" /> <add namespace="System.Text.RegularExpressions" /> <add namespace="System.Linq" /> <add namespace="System.Web" /> <add namespace="System.Web.Caching" /> <add namespace="System.Web.SessionState" /> <add namespace="System.Web.Security" /> <add namespace="System.Web.Profile" /> <add namespace="System.Web.UI" /> <add namespace="System.Web.UI.WebControls" /> <add namespace="System.Web.UI.WebControls.WebParts" /> <add namespace="System.Web.UI.HtmlControls" /> </namespaces> <controls> <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </controls> </pages> <authentication mode="Windows" /> <httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/> </httpHandlers> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpModules> </system.web> <system.codedom> <compilers> <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <providerOption name="CompilerVersion" value="v3.5"/> <providerOption name="OptionInfer" value="true"/> <providerOption name="WarnAsError" value="false"/> </compiler> </compilers> </system.codedom> <system.web.extensions> <scripting> <webServices> </webServices> <!-- <scriptResourceHandler enableCompression="true" enableCaching="true" /> --> </scripting> </system.web.extensions> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </modules> <handlers> <remove name="WebServiceHandlerFactory-Integrated"/> <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </handlers> </system.webServer> <system.serviceModel> <services> <service name="CatWebWcf.CatWebWCF" behaviorConfiguration="CatWebWcf.CatWebWCFBehavior"> <!-- Service Endpoints --> <endpoint address="" binding="wsHttpBinding" contract="CatWebWcf.ICatWebWCF"> <identity> <dns value="localhost"/> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <behaviors> <serviceBehaviors> <behavior name="CatWebWcf.CatWebWCFBehavior"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> <serviceCredentials> <windowsAuthentication allowAnonymousLogons="true"/> </serviceCredentials> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel>De l'aide SVP !!!!
FB
- Modifié FrançoisBOSSANT jeudi 8 décembre 2011 19:22
-
jeudi 8 décembre 2011 23:32
Si je comprends bien, tout vient du fait que mon client et mon serveur (proxy) ne sont pas sur le même domaine... Pourtant c'est tout l'intéret des services WCF!!! Microsoft pourrait mieux documenter cette technique!!!
J'ai tenté autre chose à partir de ce qui est dit sur ce site : http://nirajrules.wordpress.com/2009/05/22/username-over-https-custombinding-with-wcf%E2%80%99s-channelfactory-interface/
Normalement, ça me permet de m'authentifier .
Mais, je n'ai pas compris la fin de ce post et du coup justement, ça m'impose une uri en HTTPS
Le message d'erreur est :
"Le modle dURI http fourni est non valide; le modle https tait attendu. Nom du paramtre: via"
Comment puis je avoir une solution SANS qu'on m'impose HTTPS???
FB
- Modifié FrançoisBOSSANT vendredi 9 décembre 2011 09:33
- Marqué comme réponse FrançoisBOSSANT lundi 19 décembre 2011 08:39
- Non marqué comme réponse FrançoisBOSSANT mercredi 8 février 2012 23:28
-
mercredi 14 décembre 2011 07:14J'ai résolu le soucis mais je n'ai AUCUNE sécurité...
FB -
mercredi 8 février 2012 23:28
Voici la solution (j'ai eu plusieurs demande par message privé.
Côté Projet Client :
<system.serviceModel> <client> <endpoint address="http://.../....svc" binding="basicHttpBinding" bindingConfiguration="HttpBinding_" contract="CatWCF.ICatWebWCF" name="HttpBinding_ICatWebWCF" /> </client> <bindings> <basicHttpBinding> <binding name="HttpBinding_ICatWebWCF"> <security mode="None"> <transport realm="" /> </security> </binding> </basicHttpBinding> </bindings> </system.serviceModel>Côté Service WCF :
<system.serviceModel> <services> <service name="CatWebWcf.CatWebWCF" behaviorConfiguration="CatWebWcf.CatWebWCFBehavior"> <endpoint address="" binding="basicHttpBinding" contract="CatWebWcf.ICatWebWCF"> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <behaviors> <serviceBehaviors> <behavior name="CatWebWcf.CatWebWCFBehavior"> <serviceMetadata httpGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel>FB
- Marqué comme réponse FrançoisBOSSANT mercredi 8 février 2012 23:29

