2010-01-29 6 views
1

J'ai configuré un service web .NET WCF qui exposera certaines méthodes pour créer/mettre à jour des alertes email pour différents contactsIds. Le webservice va vivre derrière le pare-feu.Permissions .NET WCF

Ma crainte est que si nous exposons un appel comme:

bool SetAlertTemplate(int alertId, int templateId); 

un des sites clients pourraient modifier involontairement une alerte qui ne fait pas partie du contactID qui utilise le site.

Même si je peux utiliser:

bool SetAlertTemplate(int alertId, int contactId, int templateId); 

Il pourrait créer un problème à l'avenir si nous exposons le webservice au public. Où n'importe qui pourrait modifier n'importe quelle alerte. Quelle est la meilleure façon d'exposer un webservice et assurez-vous que le client a les permissions de modifier l'alerte d'un contactId, et de ne pas envoyer ces paramètres à chaque appel.

Répondre

1

Configurez votre service WCF pour traduire l'utilisateur authentifié en une instance correcte IPrincipal. Cela garantit que dans le reste de la pile d'appels, Thread.CurrentPrincipal représentera l'utilisateur authentifié. De votre description, il semble que vous ayez besoin de protéger les actifs (alertes), ce qui signifie que vous devrez implémenter Listes de contrôle d'accès (ACL) sur les actifs. Chaque fois que quelqu'un tente de modifier l'actif, vous pouvez vérifier si Thread.CurrentPrincipal est autorisé à modifier cet actif particulier en fonction de sa liste de contrôle d'accès.

réponses connexes: