2010-06-29 10 views
0

J'ai créé un WebService .NET simple (il ne fait que renvoyer une chaîne). Comment puis-je modifier le côté serveur (et éventuellement le côté client) afin qu'il utilise également un nom d'utilisateur/mot de passe pour valider avant d'envoyer une réponse?WCF WebService Security: Comment utiliser la sécurité sur un WebService?

Code client:

static void Main(string[] args) 
{ 
    UpdateClient client = new UpdateClient("UpdateSOAPIIS"); 

    client.ClientCredentials.UserName.UserName = "Michael"; 
    client.ClientCredentials.UserName.Password = "testpassword"; 

    String response = client.GetString("New York, NY"); 

    Console.WriteLine(response); 

    if (client != null) client.Close(); 
} 

Code Serveur:

public virtual GetStringResponse GetString(GetStringRequest request) 
{ 
    return new GetStringResponse("Search Location: " + request.location); 
} 

Répondre

4

Je recommande de lire l'excellent article de Juval Lowy Declarative WCF Security. Il décrit cinq scénarios courants (intranet, internet, b2b, anonyme, pas de sécurité du tout) et montre ce que cela signifie, comment y parvenir, etc.

Il va même jusqu'à créer des attributs déclaratifs que vous pouvez simplement mettre sur votre déclaration de service et être fait avec elle.

Ces scénarios de sécurité devraient couvrir au moins 80%, sinon 95% de vos cas typiques. Étudiez-les et utilisez-les! Hautement recommandé

1

Cela dépend vraiment de quel type de sécurité que vous voulez. Si le protocole est crypté, les données doivent-elles être cryptées ou voulez-vous simplement authentifier un utilisateur? Dans le dernier cas, vous pouvez simplement aller de l'avant et utiliser la technologie que vous souhaitez vérifier que l'utilisateur a les autorisations nécessaires pour utiliser l'API. Pour les autres options et du code, consultez cet article MSDN http://msdn.microsoft.com/en-us/library/ms731925.aspx

+0

Si je choisis simplement d'authentifier l'utilisateur (pour l'instant) est-il facile de régler cela plus tard pour avoir le protocole et les données cryptées? Pour l'instant je voudrais juste avoir mon service opérationnel avec un utilisateur/passe pour y accéder (et je veux éviter d'envoyer ce texte en clair sur le message) ... mais plus tard je pourrais vouloir crypter les données envoyées . Je ne suis pas sûr de ce que le chiffrement du protocole actuel offrirait puisque le message est crypté? –