2011-02-16 5 views
2

Mon système est basé sur .net. Leur système est basé sur PHP. Nous souhaitons échanger des informations pour les recherches et ajouter des données aux bases de données respectives. Cela doit être fait en toute sécurité et les deux systèmes seront les seuls joueurs dans ce jeu.Comment communiquer en toute sécurité entre PHP et WCF

J'ai fait quelques recherches mais les choses liées à la sécurité me mettent toujours hors de moi. Je dois admettre que j'ai un peu de mal à comprendre tout ce qui se trouve dans le fichier de configuration (web.config dans le site du service web WCF). Où puis-je commencer à m'assurer qu'ils transmettent les données en toute sécurité?

En supposant que je trouve les choses contraignantes, seraient-ils envoyer un nom d'utilisateur et mot de passe que je vais devoir extraire de leur message? Le client se connecterait à une adresse https.

Répondre

3

Il y a vraiment beaucoup de façons de répondre à cette ...

Je suppose leur application PHP communiquera à votre serveur WCF avec SOAP? Donc, WCF a 2 façons de sécuriser les choses, au niveau du transport ou au niveau du message. Fondamentalement, si vous activez la sécurité au niveau du transport, il crypte l'ensemble de la connexion. Cela signifie qu'il utilisera HTTPS. Cela signifie que toute la conversation est cryptée, comme si vous envoyiez les informations de votre carte de crédit à un site Web dans un formulaire Web. C'est également sécurisé. L'alternative est la sécurité au niveau du message. Cela signifie qu'au lieu de crypter la totalité de la connexion, la communication se fera via le protocole HTTP non crypté, mais le message lui-même sera crypté avant d'être transmis sur le réseau. Si votre service est hébergé dans IIS, la solution la plus simple consiste à utiliser BasicHttpBinding et à activer la sécurité du transport. Ensuite, dans IIS, utilisez un certificat SSL et HTTPS.

Cela permettrait de gérer le cryptage des messages. Passé cela, si vous avez besoin de gérer un 'login' comme un nom d'utilisateur et un mot de passe, WCF a un moyen intégré de gérer cela. Cela pourrait aider: http://nirajrules.wordpress.com/2009/05/22/username-over-https-custombinding-with-wcf%E2%80%99s-channelfactory-interface/

+0

Merci! Cela efface certainement certaines choses. Le lien est également très utile. – Michael

1

Vous allez vraiment devoir déterminer les limites de PHP en termes de standards de service Web. Peut-il gérer WS-Security, par exemple?

Vous pouvez être limité à basicHttpBinding sur SSL, en envoyant le nom d'utilisateur/mot de passe dans un en-tête SOAP (en supposant qu'il gère les en-têtes SOAP).

3

PHP lui-même ne prend pas en charge la sécurité des messages. Vous avez besoin d'un cadre supplémentaire pour le supporter. J'ai intégré le client de WCF avec PHP exposant le service Web avec la sécurité de message fournie par WSO2 web services framework. Le framework WSO2 n'a pas autant de fonctionnalités que WCF (au moins les développeurs PHP l'ont dit) il supporte la sécurité asymétrique (WS-Security) avec le certificat serveur et client (X.509 Certificate Token Profile) et avec le nom d'utilisateur et le mot de passe jeton (profil de jeton de nom d'utilisateur avec mot de passe digéré). Les certificats sont utilisés pour le cryptage et la signature des messages, le nom d'utilisateur est utilisé pour l'authentification. Cette intégration était une tâche assez complexe car WCF, au contraire, ne prend pas en charge le profil de jeton de nom d'utilisateur avec mot de passe digéré et nous devons l'implémenter nous-mêmes. Par conséquent, si vous pouvez utiliser HTTPS (sécurité de transport) avec des informations d'identification de message (profil de jeton de nom d'utilisateur avec mot de passe simple), procédez comme suit. C'est beaucoup moins complexe et beaucoup plus simple.

Questions connexes