2009-03-04 5 views
0

J'ai écrit un service WCF très simple (hébergé dans IIS) et une application web qui lui parle. S'ils sont tous les deux dans le même domaine, cela fonctionne bien. Mais quand je les mets dans différents domaines (de différents côtés d'un pare-feu), les applications Web disent:WCF et pare-feu

La demande de jeton de sécurité n'a pas pu être satisfaite car l'authentification a échoué. Description: Une exception non gérée s'est produite lors de l'exécution de la requête Web en cours. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code. Détails de l'exception: System.ServiceModel.FaultException: La demande de jeton de sécurité n'a pas pu être satisfaite car l'authentification a échoué. Erreur de source: Une exception non gérée a été générée pendant l'exécution de la requête Web en cours. Les informations concernant l'origine et l'emplacement de l'exception peuvent être identifiées à l'aide de la trace de la pile d'exceptions ci-dessous.

La partie revelant du web.config de service est:

<system.serviceModel> 
<services> 
    <service behaviorConfiguration="MigrationHelperBehavior" 
    name="MigrationHelper"> 
    <endpoint address="" binding="wsHttpBinding" contract="IMigrationHelper"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />  <endpoint binding="httpBinding" contract="IMigrationHelper" />  </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="MigrationHelperBehavior"> 
     <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
     <serviceMetadata httpGetEnabled="true"/> 
     <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="false"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
</system.serviceModel> 

Le appliation web (client) web.config dit:

<system.serviceModel> 
<bindings> 
<wsHttpBinding> 
<binding name="WSHttpBinding_IMigrationHelper" 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://mydomain.com/MigrationHelper.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMigrationHelper" contract="MyNewServiceReference.IMigrationHelper" name="WSHttpBinding_IMigrationHelper"> 
<identity> 
    <dns value="localhost"/> 
</identity> 
</endpoint> 
</client> 
</system.serviceModel> 

Je crois que ces deux ne sont que le défaut VS 2008 créé pour moi. Donc, ma question est: comment peut-on configurer le service et le client quand ils ne sont pas dans le même domaine?

Merci .Jim Biddison

Répondre

0

Voir la réponse à my question pour savoir comment mettre en place le suivi de WCF. Comment la sécurité est-elle configurée pour l'application Web du service?

1

Il semble que vous souhaitiez/utilisez l'authentification Windows, qui en situation de domaine croisé, les informations d'identification de l'utilisateur sont normalement différentes. Cela ne semble pas être un problème de pare-feu.

Pour résoudre l'authentification par défaut des fenêtres, utilisez le certificat ou n'utilisez rien.