[WCF] Erreur dans configuration (avec utilisation de certificats) ?
Bonjour,
Cela fait un moment que je coince avec mon service WCF.
Je change, recommence ma configuration mais j'ai toujours des erreurs du type "Le jeu de clés n'existe pas", "Le service ... n'a pas pu être activé". Et maintenant après avoir recommencer j'en suis à l'erreur "(405) Method Not Allowed".
Il doit forcément encore y avoir un "hic" dans ma configuration. Ci-dessous la dernière configuration utilisée:
Web.config
Code:
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
|
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="myBinding" closeTimeout="00:20:00" openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:20:00">
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="FCService" behaviorConfiguration="myBehavior">
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
<endpoint binding="wsHttpBinding" bindingConfiguration="myBinding" name="FCService.FCService" contract="FCService.IFCService" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="myBehavior">
<serviceMetadata httpsGetEnabled="true" httpGetEnabled="false"/>
<servicesCredentials>
<clientCertificate>
<authentication certificateValidationMode="PeerTrust" trustedStoreLocation="LocalMachine"/>
</clientCertificate>
</servicesCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel> |
App.config
Code:
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
|
<system.serviceModel>
<client>
<endpoint address="https://192.168.10.1:4431/FCService.svc"
behaviorConfiguration="myBehavior"
binding="wsHttpBinding"
bindingConfiguration="myBinding"
contract="FCServiceSSL.IFCService" name="FCServiceSSL">
<identity>
<dns value="ServerCertificate"/>
</identity>
</endpoint>
</client>
<bindings>
<wsHttpBinding>
<binding name="myBinding">
<security mode="Transport">
<transport clientCredentialType="Certificate"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="myBehavior">
<clientCredentials>
<clientCertificate findValue="ClientCertificate" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName"/>
<serviceCertificate>
<authentication certificateValidationMode="PeerTrust"/>
</serviceCertificate>
</clientCredentials>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel> |
Sur mon serveur j'ai mis les deux certificats "ClientCertificate" et "ServerCertificate" (ce dernier est aussi mis sur IIS et utilisé au niveau de la liaison https du site)
Sur le poste client qui déclenche l'application (WPF) j'ai mis le certificat client "ClientCertificate" (dans "LocalMachine" et dossier "Personnel")
J'ai déjà essayé de trouver pas mal d'information sur le net mais je n'arrive pas à aboutir. Il y a quelque chose que je ne dois pas complètement saisir.
Merci d'avance.
Quel utilisateur dans les autorisations de la clé privée du client ?
Finalement à force de refaire et refaire je ne bloque que sur un dernier point.
J'ai le message "Le service n'a pas pu être activé". A la suite de pas mal de recherche j'ai trouvé qu'il s'agit d'un problème de lecture sur la clé privée. D'après mon cas, celle du client et je pense, sur le poste client.
Comment savoir quel est l'utilisateur auquel je dois accordé le droit ? J'ai donnée le droit à un grand nombre d'utilisateur pour tester encore et encore mais ce ne doit pas être le bon... Et impossible de mettre "Tout le monde" dans les droits sur un certificat...
Merci d'avance.