Comment sécuriser un webservice .net?
J'ai écrit un simple .NET webservice, je vais être hébergé sur un autre serveur peut être sur un autre continent. Je ne sais pas vraiment. Maintenant, je n'ai eu son adresse URL, et j'ai essayé d'utiliser webrequest et webresponse méthode pour accéder à ce service web vai HTTP POST. Maintenant, je veux savoir est-il un moyen de sécuriser le webservice d'accès, de sorte que personne ne peut l'exploiter?
par exemple:
http://example.com/Verify/Verification.asmx/Verify?AccountNumber=3223&ProductName=876
Maintenant, ce sont tous les paramètres nécessaires à l'appel de ce webservice. Comme si maintenant, n'importe qui peut l'exploiter. Alors, comment puis-je faire il sécurisé? Bien, je suis la planification pour obtenir SSL et que tout se passe de serveur à serveur, pas de client à serveur?
OriginalL'auteur Mohit | 2009-05-06
Vous devez vous connecter pour publier un commentaire.
Vous pouvez passer une clé de service (à l'instar d'Amazon WS) dans l'en-tête d'autorisation de la demande web qui pourrait être chiffré avec un algorithme de votre choix, puis déchiffrées en service à la fin et continuer uniquement avec l'exécution si la clé correspond à
Voir la section 14.8 à l'URL suivante
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
Je crois que vous auriez besoin d'un certificat SSL pour le serveur à serveur, mais aussi de la communication. Que associé avec un chiffrée en-tête d'autorisation devrait être tout ce que vous devez
OriginalL'auteur Nick Allen
Malheureusement, vous n'avez pas beaucoup d'options que vous avez utilisé l'ancien service web ASMX de la technologie. Les seuls moyens pour authentifier quelqu'un avec des services web ASMX, sur Internet, essentiellement de la quantité de "do it yourself".
Si j'avais à le faire, j'aimerais utiliser WCF et me donner quelques options. Si je ne pouvais pas utiliser WCF, alors je vous en créer un en-tête HTTP personnalisé de passe nom d'utilisateur et le mot de passe (sur SSL!), et les authentifier sur le serveur. Sinon, j'aimerais utiliser des certificats sur le client et leur demander d'être envoyé au serveur. IIS peuvent même certificats client dans Windows identités sur le serveur.
La WCF Centre de développement MSDN est à msdn.microsoft.com/WCF. WCF doit être utilisé au lieu de ASMX pour toutes les nouvelles le développement des services web.
OriginalL'auteur John Saunders
Généralement ce que vous avez utilisé pour fixer le tout .NET web services avant de la WCF a été de Microsoft Extensions du Service Web (WSE), maintenant à la version 3.0. Je l'ai utilisé avec succès dans un commerce de produits disponibles, et il est plutôt bon car il est basé sur le W3C, normes ws -*. Il est possible d'interagir avec succès avec ça .NET clients (évidemment) mais aussi de clients Java si vous utilisez Apache Axis. Télécharger:
http://www.microsoft.com/downloads/details.aspx?FamilyID=018a09fd-3a74-43c5-8ec1-8d789091255d&displaylang=en
C'est pourquoi j'ai écrit /avant/ WCF... La question d'origine semble se référer à la traditionnelle .NET web services. Bien sûr, je recommande aussi WCF si il y a un choix.
veuillez soyez prudent à propos de mentionner WSE - ce que si quelqu'un a la lecture de ce a décidé de utilisation? C'est pourquoi je l'ai mis dans un tel stark termes - "seulement si vous n'avez pas d'autre choix". Je ne veux pas de chance quelqu'un l'aide, car "il utilise .ASMX fichiers" ou "fonds de roulement est trop avancé" ou quelque chose comme ça. WSE est obsolète, et ne devraient tout simplement pas être utilisé, au moins, non pas sur un projet qui compte.
Excuse mon ignorance, mais en quoi WSE échec? Il n'est pas sécurisé?
WSE est obsolète, presque pas pris en charge, et a été remplacé par la WCF. Il n'y a presque pas de raison de l'utiliser. Je tiens seulement à l'utiliser si je devais exécuter sur Windows Server 2000 et avait besoin de WS-Security. Si vous ne pouvez pas utiliser WCF pour une raison quelconque, alors il suffit d'utiliser le protocole https.
OriginalL'auteur Guido Domenici
Nous avons fait un certain nombre de services Web et de leur garantir que nous venons d'ajouter un nom d'utilisateur et le mot de passe à notre objet de demande. Dans votre cas, vous pouvez simplement ajouter 2 nouveaux paramètres pour un nom d'utilisateur et le mot de passe, ou, plus simplement, il suffit d'ajouter un et utiliser quelque chose comme un code d'authentification, que vous pouvez faire aussi complexe ou aussi simple que vous le souhaitez.
Certaines Idées sont quelque chose de simple comme une liste de ceux qui sont acceptables passer les clés de chiffrement de la demande de serveurs adresse IP pour que le code d'authentification ne fonctionne qu'avec l'adresse IP vérifié par le service web.
OriginalL'auteur Bob The Janitor
Vous pouvez également créer un jeton et passer ce tokenid en tant que paramètre à chaque webmethod. Vous pouvez maintenir le jeton dans la table de hachage et de les supprimer de la table de hachage une fois que la session est abandonnée.
Le jeton doit être générés lors de la connexion réussie. Pour générer un id de jeton, je recommande d'utiliser
RNGCryptoServiceProvider
.OriginalL'auteur user2257501