Ich habe ein Problem beim Zugriff auf einen Webservice mit der Impersonate ohne einen bestimmten Benutzer.
Werke:
<identity impersonate="true" userName="DOMAIN\USERNAME" password="MyPassword" /
& gt;
Funktioniert nicht
%Vor%Beim Debugging habe ich den folgenden Code verwendet, um zu überprüfen, ob die richtige Domain und der richtige Benutzername verwendet wurden. Das sind sie.
%Vor%Hier ist mehr von meiner web.config
%Vor%Ich logge mich in die Eingabeaufforderung ein, Bild unten
Irgendwelche Ideen, warum es nur funktioniert, wenn ich einen Benutzer in der web.config angeben? Ich melde mich mit dem Domain\Username
und dem Passwort an, das ich in <identity impersonate="true" userName="DOMAIN\USERNAME" password="MyPassword" /
& gt; . Ich habe versucht mit mehreren Konten und sie alle arbeiten, wenn ich ihre Anmeldeinformationen in die web.config
setzen, aber keiner arbeitet mit Identität als <identity impersonate="true" />
festgelegt und einloggen.
BEARBEITEN Der Remote-Server hat einen Fehler zurückgegeben: (403) Verboten.
BEARBEITEN 2 Alles funktioniert gut während des Debuggens und während ich den Dienst auf dem Server mit dem IIS, auf dem er gehostet wird, aktiviere, habe ich es mit mehreren Konten versucht und alle funktionieren. Alles ist auf der gleichen Domain
Beachten Sie den folgenden Text von Ссылка
Nehmen Sie die Identität eines bestimmten Benutzers für alle Anforderungen eines ASP.NET an Anwendung
Um einen bestimmten Benutzer für alle Anfragen auf allen Seiten eines ASP.NET-Anwendung können Sie den Benutzernamen und das Kennwort angeben Attribute im Tag der Datei Web.config dafür Anwendung. Beispielsweise: Hinweis: die Identität des Prozesses, der einen bestimmten Benutzer in einem Thread annimmt, muss über die Option "Als Teil des Betriebssystems handeln" verfügen Privileg. Der Prozess Aspnet_wp.exe wird standardmäßig auf einem Computer ausgeführt Konto namens ASPNET. Dieses Konto hat jedoch nicht das erforderliche Privilegien, um sich als ein bestimmter Benutzer auszugeben. Sie erhalten einen Fehler Nachricht, wenn Sie versuchen, einen bestimmten Benutzer zu imitieren. Diese Information gilt nur für .NET Framework 1.0. Dieses Privileg ist nicht erforderlich für .NET Framework 1.1.
Wenden Sie eine der folgenden Methoden an, um dieses Problem umzugehen: Gewähren Sie das Privileg "Als Teil des Betriebssystems handeln" für das ASPNET Konto (das am wenigsten privilegierte Konto).
Hinweis: Obwohl Sie diese Methode verwenden können, um das Problem zu umgehen, Microsoft empfiehlt diese Methode nicht. Ändern Sie das Konto, das der Der Prozess Aspnet_wp.exe wird unter dem Systemkonto ausgeführt Konfigurationsabschnitt der Datei Machine.config.
Sie können den Prozess Aspnet_wp.exe so einrichten, dass er als der Benutzer ausgeführt wird, den Sie imitieren möchten, um die gewünschten Berechtigungen zu erhalten.
Dies wurde auch schon vorher diskutiert: Wie macht man Identitätswechsel in .NET? ?
Es könnte sich um das NTLM-Doppelsprung-Authentifizierungsproblem handeln. Kurz gesagt, stellen Sie sicher, dass Kerberos-SPNs ordnungsgemäß festgelegt sind, sodass sie anstelle von NTLM verwendet werden. Dieser MSDN-Blogpost hat eine großartige Erklärung.
Alternativ wird auch die Basis- oder Formularauthentifizierung das erreichen, was Sie erreichen möchten. Dies liegt daran, dass die Anwendung über die Anmeldeinformationen des Benutzers verfügt und diese bei ordnungsgemäßer Konfiguration für den Zugriff auf Back-End-Ressourcen verwendet werden kann.
Sie können auch in die Kerberos-Delegation schauen. Es ist eine Möglichkeit, diesen zweiten Hop über den SPN auf nur eine Ressource zu beschränken.
Tags und Links web-config c# model-view-controller web-services