2010-11-26 7 views
0

Ich verwende WCF-Dienste, um sicherzustellen, dass Benutzername/Kennwort für jede Anforderung bereitgestellt werden müssen. Ich brauche denselben Dienst von vielen Clients, aber ich muss den Anruf annehmen, um auf die entsprechenden Ressourcen für jeden Client zuzugreifen. Wenn ich den Dienst direkt vom Client aus anrufe gibt es kein Problem, da ich für jeden Client ein Paar UserName/Password verwende, das in der web.config definiert ist. Das Problem trat auf, wenn ich einen zweiten Web-Service von einem Anruf zum ersten mit der gleichen Identität aufrufen musste. Dieser zweite Webdienst erfordert UserName/Password, aber ich weiß nur, wer der Anrufer ist (UserName), aber nicht das Passwort.Annehmen von Benutzer in WCF von mehreren Anrufern

Wie kann ich diesen zweiten Anruf annehmen, ohne das Passwort für den entsprechenden Benutzernamen zu kennen?

BEARBEITEN: Die App (Web App und Dienste) wird in einer freigegebenen Hostingumgebung ausgeführt, in der ich die Windows-Authentifizierung nicht zur Konfiguration von Kerberos für die Delegierung verwenden kann. Ich habe einen UserNameValidator definiert, um bei jedem Aufruf das Paar UserName/Password gegen eine benutzerdefinierte SQLServer-Datenbank zu verarbeiten. Darüber hinaus werden die beabsichtigten Kunden dieser App es aus dem Internet verwenden, ohne ein Windows-Konto zu benötigen, weil ich ein flexibleres SQL-basiertes Authentifizierungsschema benötige.

+0

Überprüfen Sie diese Antwort: http://stackoverflow.com/questions/2921978/asp-net-website-wcf-service-wcf-service-with-impersonation-all-the-way/2922002#2922002 –

Antwort

0

Sie müssen sich mit Kerberos befassen, um die Weiterleitung der Authentifizierung an andere Dienste von Ihrem ersten WCF-Dienst zu übernehmen.

+0

Das Problem ist, dass ich in einem shared hosting bin und ich verwende keine Windows-Authentifizierung, aber benutzerdefinierte Benutzername/Passwort-Authentifizierungsmethode, die eine UserNameValidator-Implementierung verwendet, um diese Berechtigung bei jedem Aufruf zu überprüfen. – Lester