Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Impersonate - Windows Authentifizierung
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

Impersonate - Windows Authentifizierung

beantworten | zitieren | melden

Erstmal hallo an alle,

für unsere Intranet-Anwendung um einen Newsletter zu erstellen und
versenden, möchte ich gerne mit der Windows-Auth. nutzen. Dennoch klappt dies
leider nicht wie gewünscht.

Ich habe zu einem im IIS 6.0 die Windows-Auth. eingeschaltet und die Anonyme
Auth. ausgeschaltet.

In der Web.config habe ich dann noch folgende Einträge hinterlegt.

<!-- Authenifizierungsmethode festlegen /-->
<authentication mode="Windows" />
<identity impersonate="true" />

<!-- Zugriff fuer alle Seiten nicht erlauben (erstmal) /-->
<authorization>
<allow roles="Domain\Rolle1,Domain\Rolle2" />
</authorization>

Nun wenn ich folgende Code ausführe, bekomme ich nicht die gewünschten
Ergebnisse:

<script language="vb" runat="server">
Sub Page_Load()
lbmessage.Text = File.Exists("J:\Ordner1\Ordner2\datei.doc") & "<br />"
lbmessage.Text &= File.Exists("\\server\Ordner1\Ordner2\datei.doc") & "<br
/>"
lbmessage.Text &= User.Identity.Name & "<br />"
lbmessage.Text &= WindowsIdentity.GetCurrent().Name & "<br />"
End Sub

Ich habe folgende Ausgabe:

False
False
Domain\Account
Domain\Account

Wenn ich nun in der web.Config Datei den Eintrag
<identity impersonate="true" /> auf
<identity impersonate="true" userName="User" password="pwd" /> auf meine
Account einrichte, lieftert mir der Befehl
File.Exists("\\server\Ordner1\Ordner2\datei.doc") true zurück. Das dies mit
J:\ nicht funktioniert leuchet mir ein, da dies ja ein Netzlaufwerk ist.

Ich möchte gerne hier mir den aktuellen Account arbeiten und nicht immer
über meinen. Ich habe schon versucht dies Codeseitg per
System.Security.Principial zu realisieren. Doch diese brachte ebenfalls nicht
den gewünschten Erfolg.

Vielleicht habt ihr ja noch einen Tipp für mich.

Ich bedanke mich jetzt schonmal. Suche schon lange nach einer Lösung
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
Cord Worthmann
myCSharp.de - Member



Dabei seit:
Beiträge: 1.203

beantworten | zitieren | melden

Füge in der Web.config 'mal folgendes hinzu...

<deny users="?"/>

(ins authorization-Tag)

Jetzt sollte der Anmeldedialog erscheinen.


Grüsse
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

Hallo,

du bist doch auch im www.aspforum.de tätitg? Dein Nickname kommt mir doch bekannt vor!

Also ich werde morgen mal dein Antwort versuchen umzusetzen.

Aber der Anmeldedialog wird mir angezeigt, zumindens im Mozilla Firefox. Der IE unterstützt doch die direkte Weitergabe des Accounts (der Creditinials)?

Dies habe ich in der SDK gelesen, da irre ich mich doch nicht?

Wenn ich mir jetzt folgende Befehle ausgebe:
lbmessage.Text &= User.Identity.Name & "<br />"
lbmessage.Text &= WindowsIdentity.GetCurrent().Name & "<br />"

Bekomme ich immer meinen aktuellen Account angezeigt der in der Domain genutzt wird.

Im IIS habe ich die Win.-Auth aktiviert und die Anonym.-Auth deaktiviert. In der web.Config nutze ich die Windows-Mode, sowie setzte ich das attribut impersonate auf true.

trotzdem funktioniert nicht der zugriff auf das netzwerk. gebe ich der web.config jetzt in der identity-element jetzt nch mein username und pwd mit klappt alles einswandfrei.

das kommt mir spanisch vor?

was mach ich da falsch

Danke & Gruss plongo
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

Keine eine Ahnung?

ich habe schon alles versucht. Aber es will einfach net klappen!

Naja

Danke & Gruss plongo
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
tObi84
myCSharp.de - Member



Dabei seit:
Beiträge: 120
Herkunft: Erlangen, Gera & Seelingst.

beantworten | zitieren | melden

Hi,

also ich hab mir jetzt nicht alles durchgelesen hier, aber im Internet-Explorer sollte in den Intranet-Sicherheitseinstellung für Authentifiaction nicht auf automatisch stehen. Der Firefox fragt so oder so, der I-Net-Explorer steht, zumindest ist es bei uns so, im Intranet auf automatisch authentifizieren.
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

ok danke muss ich direkt mal testen

Gruss plongo
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

Du meinst also in IE unter Internetoptionen > Sicherheit > Lokales Intranet > Stufe anpassen > Benutzerauthentifizierung > nach Benutername und Kennwort fragen

Bzw. könnte ich dort auch auswählen > Automatische Anmeldung mit aktuellen Benutzername und Kennwort?

Gruss plongo
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
tObi84
myCSharp.de - Member



Dabei seit:
Beiträge: 120
Herkunft: Erlangen, Gera & Seelingst.

beantworten | zitieren | melden

Meiner Erfahrung nach funzt das mim IE nicht wirklich ... ich hab mich nämlich auch lang mit dem Problem auseinander gesetzt ... letztenendes hab ich aber die Einstellung am IE einfach gedreht, bzw den FF benutzt.
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

Ich habe jetzt mal deine option versucht.

Jetzt bekomm ich die Fehlermeldung:
CryptoAPI cryptographic service provider (CSP) for this implementation could not be acquired. 

Hmm naja, ich werde es mal versuchen mit der weitergabe des Benutzers und kennwort. Mal schauen ob das was bringt.

Ich weiss ja nicht ob ich irgendeine Einstellung vergessen habe.
1. IIS ist nur auf Win-Auth.
2. web.config ist mit Win-Mode
3. web.config ist impersonate true

Bei der Augabe des aktuellen User in httpContext bzw. mit WindowsIdentity bekomme ich immer meinen Account angezeigt. Dennoch klappt es nicht.

Ausser ich stelle eben in der web.config das identity-element mit meinen Benutername und Kennwort ein. Dann klappts. Das ist im IE und FF
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

Das Problem ist das soweit ja alles klappt ich bin mit meinen Benutername authentifiziert und kriege das ja auch gemeldet.

nur wenn ich versuche eine email zu versenden mmit NTLM + einer Datei aus den dem Netzwerk. da klappt es dann nicht!!!

Ich vermute mal das dort das Token wohl nicht weitergeben wird ?!
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
Cord Worthmann
myCSharp.de - Member



Dabei seit:
Beiträge: 1.203

beantworten | zitieren | melden

Die Einstellungen am IIS sind egal, denn sie werden von der web.config für die website überschrieben.

Diese web.config-Einstellung funktioniert bei mir einwandfrei...


<?xml version="1.0"?>
<configuration>
    <system.web>
        <authentication mode="Windows"/>
        <authorization>
            <deny users="?"/>
        </authorization>
        <identity impersonate="true"/>
    </system.web>
</configuration>

Dein Fehler muss irgendwo anders stecken.


Grüsse
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

OK dann verwende ich mal deine Config und setze mal im IIS die Auth um bzw. kann ich es ja lassen, das es nach deiner meinung her egal ist.

Nur die Frage ist wo kann der Fehler denn noch liegen? X( 8o
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

Glaubst du wirklich das die IIS-Einstellung egal ist?

Für dieses Szenario brauche im IIS schon die Win-Auth. oder verstehe ich dich falsch.

Achja ich nutze IIS 6 und .NET 1.1

Also
IIS -> Win.Auth

	<system.web>
		<authentication mode="Windows" />
		<identity impersonate="false" />
		<authorization>
			<deny users="?" />
		</authorization>
	</system.web>

Test: Ausgabe des Bentuzers

<%="1. " & User.Identity.Name%><br />
<%="2. " & System.Security.Principal.WindowsIdentity.GetCurrent.Name %><br />
<%="3. " & System.Threading.Thread.CurrentPrincipal.Identity.Name %>

Ausgabe
1. PSH1\Andreas
2. NT-AUTORITÄT\NETZWERKDIENST
3. PSH1\Andreas

Sezte ich web.Config
<identity impersonate="true" /> erhalte ich die Ausgabe

1. PSH1\Andreas
2. PSH1\Andreas
3. PSH1\Andreas

jetzt kann ich doch davon ausgehen das er mit meiner Identität arbeitet. Arbeite der Email-Versand über NTLM + Zugriff auf eine Dateim im Netzwerk klappt net, ausser ich setzte mein Account im identity Element.
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
Cord Worthmann
myCSharp.de - Member



Dabei seit:
Beiträge: 1.203

beantworten | zitieren | melden

Zitat
Original von plongo
Glaubst du wirklich das die IIS-Einstellung egal ist?

Für dieses Szenario brauche im IIS schon die Win-Auth. oder verstehe ich dich falsch.
Genau das macht ja <authentication mode="Windows" /> für Dich.
;-)

Achja ich nutze IIS 6 und .NET 1.1
Zitat
Original von plongo
Sezte ich web.Config
<identity impersonate="true" /> erhalte ich die Ausgabe

1. PSH1\Andreas
2. PSH1\Andreas
3. PSH1\Andreas

jetzt kann ich doch davon ausgehen das er mit meiner Identität arbeitet. Arbeite der Email-Versand über NTLM + Zugriff auf eine Dateim im Netzwerk klappt net, ausser ich setzte mein Account im identity Element.
Ja, eigendlich sollte das jetzt funktionieren. Bei mir lokal tut es das auch - keine Ahnung, warum Du im Netzwerk damit Probleme hast.

Kannst ja noch mal was in der Art versuchen


using System.Security.Principal;
...
WindowsImpersonationContext context = this.User.Identity.Impersonate();
// Der Code, der die Rechte benötigt...
context.Undo();

So kannst du das im Code ein- und ausschalten.


Grüsse
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

tja mir gehen mittlerweile die Ideen aus

hab nochmal folgendes probiert

<script language="vb" runat="server">
	Sub Page_Load()
		Dim context As System.Security.Principal.WindowsImpersonationContext = CType(User.Identity, System.Security.Principal.WindowsIdentity).Impersonate()
		
		response.write("1. " & User.Identity.Name & "<br />")
		response.write("2. " & System.Security.Principal.WindowsIdentity.GetCurrent.Name & "<br />")
		response.write("3. " & System.Threading.Thread.CurrentPrincipal.Identity.Name & "<br />")
		response.write(System.IO.File.Exists("\\spsdat\ps\OrgBer\Marketing\Interne Kommunikation\Anhänge\neue_mitarbeiter.doc"))
		
		'// Der Code, der die Rechte benötigt...
		context.Undo()
	End Sub	
</script>

Ergebnis:
1. PSH1\Andreas
2. PSH1\Andreas
3. PSH1\Andreas
False -> true wäre schöner

Ich habe ehrlich gesagt keine Ahnug mehr, was ich nach alles machen kann, soll, muss. Wohl oder übel muss ich alles über meine Account laufen lassen. Es zwar die die feine lösung, aber was bleibt mir anderes übrig?
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

@Cord
Hast du bei deiner Win-Auth. noch irgendwas bestimmes eingestellt? Ausser IIS, web.config?
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

hilft vielleicht die seite noch weiter??

http://de.gotdotnet.com/quickstart/aspplus/doc/windowsauth.aspx
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
Cord Worthmann
myCSharp.de - Member



Dabei seit:
Beiträge: 1.203

beantworten | zitieren | melden

Neee, habe ich nicht.
Es ist mir schleierhaft, warum das so nicht hinhaut, weil es doch eigendlich (logisch gesehen) keinen Unterschied zwischen den zwei Lösungen gibt, vor allem, da Du denselben Account verwendest.
...keine Ahnung, was da jetzt noch intern abläuft, wodurch die Lösung mit dem eingetragenen username und pwd hinhaut und das andere nicht.
???
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

ich müsste es vielleicht mal auf einen anderen Testsystem ausprobieren....
Das mach ich vielleicht mal auf meiner lokalen Win XP Maschine....

Hmm naja ich weiss jetzt auch nicht mehr weiter..... Micht wunderst es auch warum er dort diese Probleme hat.... Aber solange werde ich eben mit meinen Account arbeiten müssen


trotzdem danke ich euch füre eure hilfe
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 5.940
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Zitat
Original von plongo
Hallo,

du bist doch auch im www.aspforum.de tätitg? Dein Nickname kommt mir doch bekannt vor!
Salü Andreas

Du.. hier?
Cord wirst du wohl noch wiedererkennen (früher Chief Browdie), unser .NET Guru im ASP Forum

Gruss Peter
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
plongo
myCSharp.de - Member



Dabei seit:
Beiträge: 123
Herkunft: RLP

Themenstarter:

beantworten | zitieren | melden

hi Peter :D,

man das Inet ist aber klein....

ja ich habe vorkurzem auch privat mit C# angefangen zu programmieren. Deshalb habe ich mich vorgestern hier mal angemeldet.

Und da mir leider keiner im aspforum.de helfen konnte zu diesem Thema, dachte ich vielleicht hier.

Chief Browdie sag mir auch was. Hab auch im Mitglieder-Bereich gesehen das Cord... dort registriert ist.

Bis nachher dann
Gruss plongo

---------------------------------------------------------------------------
Woher soll ich wissen, was ich denke, bevor ich höre, was ich sage!
Kurzum: Läufer sind gesünder, "gescheiter" und glücklicher als Nichtläufer.
www.andreas-nicole.de
private Nachricht | Beiträge des Benutzers