Je suis à la recherche de suggestions pour un défi auquel je suis actuellement confronté.MVVM en tête des services Web sensibles aux sinistres
J'ai construit un STS WIF personnalisé que j'utilise pour identifier les utilisateurs qui veulent appeler certains services WCF que mon système offre. Les services WCF utilisent un gestionnaire d'autorisation personnalisé qui détermine si l'appelant a les revendications requises pour appeler un service donné.
Maintenant, je construis une application WPF. en plus de ces services WCF. J'utilise le modèle MVVM, de sorte que le modèle View appelle les services WCF protégés (qui implémentent le modèle). Le défi que je suis confronté est que je ne sais pas si l'utilisateur actuel peut invoquer avec succès les méthodes de service Web sans réellement les invoquer. Fondamentalement, ce que je veux réaliser est d'activer/désactiver certaines parties de l'interface utilisateur en fonction de la capacité à invoquer une méthode avec succès. La meilleure solution que j'ai trouvée jusqu'ici est de créer un service qui, basé sur la même logique métier que le gestionnaire de règles d'autorisation personnalisé, sera capable de déterminer si un utilisateur peut ou non appeler une méthode donnée. Maintenant, la méthode doit passer à ce service sous forme de chaîne, ou en fait deux chaînes, ServiceAddress et Method (Action), et en fonction de cette entrée, le service sera en mesure de déterminer si l'utilisateur actuel a les revendications requises pour accéder la méthode. Évidemment, pour que cela fonctionne, ce service devrait lui-même exiger un jeton émis du même STS, et avec les mêmes revendications, afin de faire son travail.
Est-ce que l'un d'entre vous a déjà fait quelque chose de similaire ou avez-vous des idées pour le faire?
Merci à l'avance,
Klaus
Salut Reed, Merci pour votre réponse. Toutes mes méthodes de service nécessitent des revendications potentiellement différentes, donc votre dernière suggestion est probablement ce que je veux. Maintenant, disons que mon modèle de vue appelle un service avec contrat IService1. Si j'ai une collection de MethodTheUserCanCall, contenant l'adresse et la méthode, comment saurais-je, d'une manière générale, que, disons, la méthode SomeMethod de IService1 est représentée par une instance de MethodTheUserCanCall, qui ne contient que l'adresse/méthode? –