System.ServiceModel.Security.SecurityAccessDeniedException : Access is denied.
lignes Stack pertinentes (réduit)
Server stack trace:
at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
Environnement
Machine de développement (hôte): Windows V ista, Visual Studio 2008, nUnit
machine de test (invité): Windows 2003, IIS, Windows 2003 Pare-feu (désactivé)
Virtual Machine: Virtual PC
réseau: Adaptateur Microsoft Loopback
Description de
Windows 2003 héberge un inventaire de service WCF, les services sont bien testés.
Lorsqu'un consommateur d'application s'exécute dans Windows 2003, tout fonctionne correctement.
Lorsqu'un consommateur d'application s'exécute sous Windows Vista (sous ce réseau virtuel), des problèmes de sécurité apparaissent. Il était donc nécessaire d'ajuster le service et d'inclure un certificat. La documentation a été suivie mais l'accès a toujours été refusé.
Objet
Aucun arrangement de sécurité sophistiqué est nécessaire - c'est tout simplement un ordinateur portable et la machine virtuelle. J'ai essayé de répliquer ce scénario officiel: http://msdn.microsoft.com/en-us/library/ms733938.aspx
Je veux effectuer des appels aux services hébergés sur Windows 2003 à partir de mon application sous Windows Vista OS à l'aide de l'application Unit Test (nunit). Les services déployés sur Windows 2003 sont bien testés.
CE QUI FONCTIONNE
Tout service à l'aide (ou webservices .asmx passé) fonctionne correctement.
Suspicion
Je crois qu'il doit être avec ce Windows Vista endigué. Le journal des événements Windows 2003 a des entrées d'audit réussies.
REGLAGES DE SERVICE
Le grand public - l'application nunit fonctionnant sous Windows Vista:
<system.serviceModel>
<client>
<endpoint address="http://soa.homolog.com/RemoteService/RemoteService.svc"
binding="wsHttpBinding"
behaviorConfiguration="InternetEndpointBehavior"
bindingConfiguration="AnonymousBindingConfiguration"
contract="RemoteService.IRemoteService"
name="WSHttpBinding_IEmpresaService">
<identity>
<dns value="homologCertificate" />
</identity>
</endpoint>
</client>
<bindings>
<wsHttpBinding>
<binding name="AnonymousBindingConfiguration">
<security mode="Message">
<message clientCredentialType="None" />
</security>
</binding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="InternetEndpointBehavior">
<clientCredentials>
<serviceCertificate>
<authentication certificateValidationMode="None" />
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
Le service hébergé sur IIS/Windows 2003:
<system.serviceModel>
<serviceHostingEnvironment>
<baseAddressPrefixFilters>
<add prefix="http://soa.homolog.com" />
</baseAddressPrefixFilters>
</serviceHostingEnvironment>
<bindings>
<wsHttpBinding>
<binding name="BindingNoSecurity">
<security mode="Message">
<message clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="CompanyCoreBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug
includeExceptionDetailInFaults="true" />
<serviceThrottling
maxConcurrentCalls="500"
maxConcurrentInstances="500"
maxConcurrentSessions="500" />
<serviceTimeouts
transactionTimeout="00:10:00" />
<serviceCredentials>
<serviceCertificate
findValue="homologCertificate"
storeLocation="LocalMachine"
x509FindType="FindBySubjectName"
storeName="My"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
Quel fournisseur de machine virtuelle utilisez-vous? Virtual PC ou VMWare? –
Salut Chuck Haines, Virtual PC .. –
Excellent description du problème! Puis-je vous demander pourquoi vous insistez pour utiliser la sécurité des messages alors que vous spécifiez None pour le certificat? – Aliostad