De nos jours, nous mettons souvent en place une architecture HTTPS Proxy pour un minimum de sécurité sur le web.
C'est à dire, avoir un ensemble de sites WEB en HTTP en interne (DMZ Extranet), et donner l'accès à cet intranet par un firewall proxy (DMZ Publique) qui transforme les appels entrants HTTPS en HTTP.
Je vais me concentrer sur les Webservices C# WCF...
Exemple de cas
Les problèmes qui peuvent être rencontrés sont nombreux mais nous allons nous focaliser sur cet exemple :
Une consommation d'un Webservice WCF par un client web en passant par un proxy en HTTPS, le problème se pose sur le descripteur qui est généré automatiquement par le WCF qui est en HTTP alors que le client attend du HTTPS.
Solutions proposées
Plusieurs solutions sont envisageables selon l’architecture adoptée. Le plus simple est de générer manuellement le descripteur WSDL
- Soit par script qui décrit et génère les balises.
- Soit par l'utilisation d'un fichier descripteur qui est généré automatiquement puis modifié par la suite (solution rapide)
Nous allons expliquer comment mettre en place la 2ème solution.
Procédure
Les étapes sont assez simple :
- Lancez votre site avec un navigateur web (http://localhost/monWebService/customService.svc) puis cliquez sur le lien WSDL affiché.
- Sauvegardez le WSDL dans un fichier avec l'extension .wsdl et changez tous les URL http du webservice (exemple: http://localhost/... par https://localhost/...)
- Ajoutez ce fichier au projet
- Puis modifier le Web.config avec le paramètre "ExternalMetadataLocation" sur le WDSL implémenté.
Voilà, la solution est facile à mettre en place et très flexible pour personnaliser ses paramètres, un grand merci d'avoir suivi ce tutoriel.