2010-11-26 37 views
0

j'utilise les services WCF assurant qu'Username/mot de passe doit être fournie pour chaque demande. J'ai besoin d'utiliser le même service de nombreux clients, mais j'ai besoin d'emprunter l'identité de l'appel pour accéder aux ressources appropriées pour chaque client. Quand j'appelle le service directement du client il n'y a aucun problème, parce que j'utilise pour chaque client une paire UserName/Password définie dans leur web.config. Le problème est venu quand j'ai besoin d'appeler un deuxième service Web d'un appel à la première en utilisant la même identité. Ce deuxième service Web nécessite UserName/Password, mais je sais seulement qui est l'appelant (UserName) mais pas le mot de passe.utilisateur Impersonate dans WCF de plusieurs appelants

Comment puis-je passer pour ce deuxième appel sans connaître le mot de passe pour le nom d'utilisateur correspondant?

EDIT: L'application (application Web et services) s'exécute dans un environnement d'hébergement partagé dans lequel je ne peux pas utiliser l'authentification Windows pour configurer Kerberos pour la délégation. J'ai défini un UserNameValidator pour traiter à chaque appel la paire UserName/Password par rapport à une base de données SQLServer personnalisée. De plus, les clients de cette application vont l'utiliser depuis Internet, sans avoir besoin d'un compte Windows, parce que j'ai besoin d'un schéma d'authentification SQL plus flexible.

+0

Cochez cette réponse: http://stackoverflow.com/questions/2921978/asp-net-website-wcf-service-wcf-service-with-impersonation-all-the-way/2922002#2922002 –

Répondre

0

Vous devez utiliser Kerberos pour gérer le passage de l'authentification aux autres services de votre premier service WCF.

+0

Le problème est que je suis dans un hébergement partagé et que je n'utilise pas l'authentification Windows, mais la méthode d'authentification Username/Password personnalisée, en utilisant une implémentation UserNameValidator pour valider ces informations d'identification à chaque appel. – Lester