2011-01-26 7 views
1

J'ai un service WCF de workflow (ServiceDMZ) qui est installé sur un serveur à travers le pare-feu. Ce service s'exécute sous un compte Windows sur ce serveur. Nom du compte: DMZDomain \ DMZUserName.Communication WCF entre domaines

J'ai un autre service WCF de workflow qui s'exécute sur ma machine de développement (ServiceDev). C'est un service auto-hébergé fonctionnant sous mon compte Windows: DevDomain \ DevUserName.

ServiceDev communique avec ServiceDMZ à l'aide de wsHttpContextBinding et de la corrélation de contexte dans les activités Envoyer et Recevoir. ServiceDMZ utilise une adresse de rappel pour communiquer avec ServiceDev lorsqu'il a terminé une tâche.

Je reçois cette erreur dans l'activité Envoyer des ServiceDev:

System.ServiceModel.Security.SecurityNegotiationException: L'appelant n'a pas été authentifié par le service. ---> System.ServiceModel.FaultException: La demande de jeton de sécurité n'a pas pu être satisfaite car l'authentification a échoué. à System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault (message de message, cible EndpointAddress) à System.ServiceModel.Security.IssuanceTokenProviderBase`1.ThrowIfFault (message de message, cible EndpointAddress) à System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody (Message incomingMessage, SspiNegotiationTokenProviderState sspiState) --- Fin de la trace de la pile d'exception interne --- à System.ServiceModel.Activities.InternalSendMessage.OnSendFailure (contexte NativeActivityFaultContext, Exception propagéeException, ActivityInstance propagéFrom) à System.Activities.Runtime.FaultCallbackWrapper.Invoke (NativeActivityFaultContext faultContext, Exception propagatedException, ActivityInstance propelledFrom) à System.Activities.Runtime.FaultCallbackWrapper.FaultWorkItem.Execute (exécuteur ActivityExecutor, BookmarkManager bookmarkManager)

Quels devraient être les paramètres dans le fichier app.config pour ServiceDev et ServiceDMZ?

Merci!

Bonjour, merci pour les commentaires. Voici les fichiers de configuration.

ServiceDev

<system.serviceModel> 
<services> 
    <service name="ServiceDev" behaviorConfiguration="ServiceDevBehavior"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://10.204.78.16:9101/"/> 
     </baseAddresses>   
    </host> 
    <endpoint address="http://10.204.78.16:9101/ServiceDev" binding="wsHttpBinding" contract="IServiceDev" bindingConfiguration="ServiceDevBinding"></endpoint> 
    <endpoint address="http://10.204.78.16:9101/ServiceDev/mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint> 
    <endpoint address="http://10.204.78.16:9101/ServiceDevCallback" binding="wsHttpContextBinding" contract="IServiceDevCallback" bindingConfiguration="ClientServiceDMZBinding"></endpoint>   
    </service> 
</services> 
<client> 
    <endpoint address="http://10.169.24.14:9100/ServiceDMZ" binding="wsHttpContextBinding" contract="IServiceDMZ" name="ClientServiceDMZ" bindingConfiguration="ClientServiceDMZBinding"> 
    <identity> 
     <userPrincipalName value="[email protected]"/> 
    </identity> 
    </endpoint> 
</client> 
<bindings> 
    <wsHttpBinding> 
    <binding name="ServiceDevBinding" maxReceivedMessageSize="8388608"> 
     <security> 
     <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/> 
     <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="TripleDesRsa15" establishSecurityContext="true"/> 
     </security> 
    </binding> 
    </wsHttpBinding> 
    <wsHttpContextBinding> 
    <binding name="ClientServiceDMZBinding" clientCallbackAddress="http://10.204.78.16:9101/ServiceDevCallback"> 
     <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" /> 
     <security> 
     <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default"/> 
     <transport clientCredentialType="Windows" proxyCredentialType="None" realm=""/> 
     </security> 
    </binding> 
    </wsHttpContextBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceDevBehavior"> 
     <serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="true"/> 
     <serviceMetadata httpGetEnabled="true"/> 
     <sqlWorkflowInstanceStore connectionStringName="MySite.Deployment.Data.Providers.WorkflowInstanceStoreProvider" instanceCompletionAction="DeleteNothing" instanceLockedExceptionAction="BasicRetry" instanceEncodingOption="GZip" hostLockRenewalPeriod="00:01:00"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<standardEndpoints> 
    <dynamicEndpoint> 
    <standardEndpoint name="ClientServiceDMZDynamicEndpointConfiguration"> 
     <discoveryClientSettings> 
     <endpoint kind="udpDiscoveryEndpoint" endpointConfiguration="ServiceDMZUDPDiscoveryEndpoint"></endpoint> 
     </discoveryClientSettings> 
    </standardEndpoint> 
    </dynamicEndpoint> 
    <udpDiscoveryEndpoint> 
    <standardEndpoint name="ServiceDMZUDPDiscoveryEndpoint" discoveryVersion="WSDiscovery11"> 
    </standardEndpoint> 
    </udpDiscoveryEndpoint> 
</standardEndpoints> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 
<diagnostics performanceCounters="All"> 
    <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="30000" maxSizeOfMessageToLog="2000000"> 
    </messageLogging> 
</diagnostics> 

ServiceDMZ

<system.serviceModel> 
<services> 
    <service name="ServiceDMZ" behaviorConfiguration="ServiceDMZBehavior"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://10.169.24.14:9100/"/> 
     </baseAddresses> 
    </host> 
    <endpoint address="http://10.169.24.14:9100/ServiceDMZ" binding="wsHttpContextBinding" contract="IServiceDMZ" bindingConfiguration="ServiceDMZBinding" behaviorConfiguration="ServiceDMZEndpointBehavior" /> 
    <endpoint address="http://10.169.24.14:9100/ServiceDMZ/mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint> 
    <endpoint name="udpDiscovery" kind="udpDiscoveryEndpoint" /> 
    </service> 
</services> 
<bindings> 
    <wsHttpContextBinding> 
    <binding name="ServiceDMZBinding" clientCallbackAddress="http://10.204.78.16:9101/ServiceDevCallback"> 
     <security> 
     <message clientCredentialType="Windows" negotiateServiceCredential="true" algorithmSuite="Default"/> 
     <transport clientCredentialType="Windows" realm="" proxyCredentialType="None"/> 
     </security> 
    </binding> 
    </wsHttpContextBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceDMZBehavior"> 
     <serviceDebug includeExceptionDetailInFaults="true" httpHelpPageEnabled="true"/> 
     <serviceMetadata httpGetEnabled="true"/> 
     <serviceDiscovery> 
     <announcementEndpoints> 
      <endpoint kind="udpAnnouncementEndpoint" /> 
     </announcementEndpoints> 
     </serviceDiscovery> 
    </behavior> 
    </serviceBehaviors> 

    <endpointBehaviors> 
    <behavior name="ServiceDMZEndpointBehavior"> 
     <endpointDiscovery> 
     <scopes> 

     </scopes> 
     </endpointDiscovery> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

<standardEndpoints> 
    <udpDiscoveryEndpoint> 
    <standardEndpoint name="ServiceDMZUDPDiscoveryEndpoint" discoveryVersion="WSDiscovery11" maxResponseDelay="00:00:00.600"/> 
    </udpDiscoveryEndpoint> 
</standardEndpoints> 

<diagnostics performanceCounters="All"> 
    <messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="30000" maxSizeOfMessageToLog="2000000">   
    </messageLogging> 
</diagnostics>  

+0

Pouvez-vous poster vos configurations? –

Répondre

0

Cela pourrait être un problème de confiance partielle. La sécurité est que la fonctionnalité WCF requiert une confiance totale pour toutes les fonctionnalités, sans cela elle ne prend en charge qu'un sous-ensemble de fonctionnalités, voir http://msdn.microsoft.com/en-us/library/bb412186.aspx

De même, si vous utilisez l'authentification Windows, la confiance est requise entre les domaines, en supposant que vos machines se trouvent dans des domaines différents . Quel est le schéma d'authentification et les paramètres de sécurité que vous utilisez?