2009-09-16 9 views
3

Côté client Je dois transmettre une information (pour cet exemple, disons une chaîne) à chaque appel de service que je fais. Les services utilisent cette chaîne (currentRole) avec les informations d'identification utilisateur/passe pour récupérer l'ensemble des revendications d'un utilisateur associé à son rôle actuel.WCF Passer des données de sécurité supplémentaires à travers tous les appels de service

Les solutions que je suis venu à travers jusqu'ici sont:

1) Modifier les en-têtes de message comme ils sortent du client et vérifiez que l'en-tête du message est là côté service.

2) Utilisez un justificatif d'identité personnalisé qui, d'après ce que je comprends, nécessite également un jeton de sécurité personnalisé pour stocker la chaîne.

Existe-t-il d'autres approches manquantes, telles que l'ajout de ces informations à un jeton/identifiant existant? Et y a-t-il des avantages/inconvénients des solutions mentionnées ci-dessus?

Merci.

Répondre

1

Vous pouvez également écrire un comportement côté client qui ajouterait cet en-tête aux messages (vous n'aurez donc pas à 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 de message à chaque message sortant.

Voir ce CodeProject article pour quelques informations de démarrage, et ce blog post pour un savoir-faire plus approfondi.

Marc

+0

Merci pour votre réponse, c'est l'approche que j'ai prise pour modifier l'en-tête du message. Je l'aime Je ne savais pas s'il y avait un inconvénient à utiliser cette approche ou s'il y a quelque chose d'autre qui est plus approprié pour ce problème. – Hooveh

Questions connexes