Identitätswechsel funktioniert nur, wenn ein Benutzer angegeben ist

9

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

    
joetinger 07.05.2015, 15:17
quelle

2 Antworten

3

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? ?

    
Tylor Husske 07.05.2015 15:56
quelle
1

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.

    
user2320464 20.05.2015 05:43
quelle