WCF Transférer des données de sécurité supplémentaires lors de tous les appels de service

StackOverflow https://stackoverflow.com/questions/1433885

Question

Côté client, je dois transmettre une information (pour cet exemple, disons une chaîne) à chaque appel de service que je passe. Les services utilisent cette chaîne (currentRole) avec les informations d'identification utilisateur / pass pour extraire le jeu de revendications d'un utilisateur associé à son rôle actuel.

Les solutions que j'ai trouvées jusqu'à présent sont les suivantes:

1) Modifiez les en-têtes de message au fur et à mesure qu'ils sortent du client et vérifiez que l'en-tête de message se trouve côté service.

2) Utilisez des informations d'identification personnalisées qui, d'après ce que j'ai compris, nécessitent également un jeton de sécurité personnalisé pour stocker la chaîne.

Y a-t-il d'autres approches que je ne vois pas, comme ajouter simplement cette information à un jeton / identifiant existant? Et y at-il des avantages / inconvénients des solutions mentionnées ci-dessus?

Merci.

Était-ce utile?

La solution

Vous pouvez également écrire un comportement côté client qui ajouterait cet en-tête aux messages (pour ne pas avoir à penser à le faire vous-même dans votre code).

Vous pouvez implémenter un IClientMessageInspector et, dans le remplacement de la méthode BeforeSendRequest , ajouter un en-tête de message. Lorsque vous ajoutez ce comportement à chacun de vos points de terminaison client, il ajoute automatiquement cet en-tête à chaque message sortant.

Voir ce article de CodeProject pour quelques infos sur les démarreurs, et ce article de blog pour un savoir-faire plus approfondi.

Marc

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top