Service WCF autorisation modèles

Je suis en œuvre une sécurité de service WCF. L'authentification se fait à l'aide du nom d'utilisateur /mot de passe ou des informations d'identification Windows. Le service est hébergé dans un Service Windows processus. Maintenant, j'essaie de trouver la meilleure façon de mettre en œuvre autorisation pour chaque opération de service.

Considérons, par exemple, la méthode suivante:

public EntityInfo GetEntityInfo(string entityId);

Comme vous le savez peut-être, dans WCF, il y a un OperationContext objet à partir de laquelle vous pouvez récupérer les informations d'identification de sécurité passé par l'appelant/client. Maintenant,authentification aurait déjà terminé au moment où la première ligne de la méthode est appelée. Cependant, comment pouvons-nous mettre en œuvre l'autorisation si la décision repose sur les données d'entrée lui-même? Par exemple, dans le cas ci-dessus, dire 'admin' utilisateurs(dont les autorisations etc sont stockés dans une base de données), sont autorisés à obtenir des infos sur l'entité, et les autres utilisateurs ne devraient pas être autorisés... où allons-nous mettre les vérifications d'autorisation?

Dire que nous l'avons mis dans la première ligne de la méthode comme suit:

CheckAccessPermission(PermissionType.GetEntity, user, entityId) //user is pulled from the current OperationContext

Maintenant, il ya un couple de questions:

  1. Ne nous valider le entityId (par exemple vérifier null /valeur vide etc) AVANT que l'autorisation de chèque ou de l'INTÉRIEUR de l'autorisation de vérifier? En d'autres termes, si les contrôles d'autorisation doivent être inclus dans chaque méthode, est-ce un bon modèle? Ce qui devrait arriver premier argument de la validation ou de l'autorisation?

  2. Comment pouvons-nous l'unité de test d'un service WCF lorsque les contrôles d'autorisation sont tous sur la place de ce genre, et nous n'avons pas de OperationContext dans l'unité de test!? (En supposant que je suis tryin pour tester cette classe de service mise en œuvre directement, sans aucun de la FMC de l'installation).

Toutes les idées, les gars?

OriginalL'auteur |