Frage

Ich versuche, einen Beitrag von einer asp klassischen Server-Seite-Seite zu machen, um die Benutzer-Anmeldeinformationen ...

Ich verwende MSXML2.ServerXMLHTTP programmatisch die Post zu machen

Ich habe in der IIS 5.1-Website mit mehreren Konfigurationen ausprobiert, aber es gibt keinen Weg, ich IIS Lauf mit einem bestimmten Konto machen ...

habe ich eine wenig asp-Seite, die whoami läuft, um zu überprüfen, was die IIS-Prozess-Konto i mit ...

mit IIS 5.1, mit integrierten Sicherheit des Prozess verwendet:

my_machine \ IWAM_my_machine

ich deaktivieren integrierte Sicherheit, und ein Domänenkonto als den anonymen Zugriff verlassen, und ich bekomme die gleiche (¿?)

, um den Benutzer zu testen ich folgendes tun


private function whoami()
dim shell, cmd

    set shell = createObject("wscript.shell") 
    set cmd = shell.exec( server.mapPath( "whoami.exe" ) )
    whoami = cmd.stdOut.readAll() 
    set shell = nothing: set cmd = nothing 

end function

ist es, weil ich einen Shell-Befehl ausgeben?

Ich mag http Post Anrufe, an einem anderen Ort machen, die mit integrierten Sicherheits funktionieren ...

Also ich brauche etwas, um die Anmeldeinformationen zu übergeben, oder zumindest mit einem bestimmten Konto ausgeführt, und konfigurieren Sie dann die Remote-Site Schub, Konto ...

dachte ich, dass gerade die Seite Einstellung mit integrierten Sicherheit zu arbeiten, würde ausreicht, um ...

Wie kann ich so etwas erreichen?

ps: mit IIS6, geschieht das gleiche aber wenn ich den Pool canfiguration ändern bekomme ich folgende Informationen von whoami

NT AUTHORITY \ NETWORK SERVICE

NT AUTHORITY \ Lokaler Dienst

NT AUTHORITY \ SYSTEM

wenn ich ein Domain-Konto einrichten, erhalte ich eine „Dienst nicht verfügbar“ Meldung ...

edit: Google

http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/275269ee-1b9f-4869-8d72-c9006b5bd659.mspx?mfr=true

es sagt, was ich supossed: „Wenn ein authentifizierter Benutzer eine Anforderung macht, wird die Thread-Token auf dem authentifizierten Konto des Benutzers basiert“, aber irgendwie scheine ich nicht so arbeiten ... was könnte ich fehlt?

edit:

auch die whoami Sache offensichtlich täuscht mich, habe ich versucht, mit der folgenden Funktion


private function whoami_db( serverName, dbName )
dim conn, data

set conn = server.createObject("adodb.connection")
conn.open       "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _
                        "Initial Catalog=" & dbName & ";Data Source=" & serverName
set data = conn.execute( "select suser_sname() as user_name" )

whoami_db = data("user_name")

data.close: conn.close
set data = nothing: set conn = nothing

end function

und alles schien zu funktionieren gut ...

aber wie kann ich MSXML2.ServerXMLHTTP Arbeit mit den Benutzerdaten ???

machen
War es hilfreich?

Lösung

Sie sind richtig whoami.exe Sie war verwirrend. einen separaten Prozess startet, verursacht der neue Prozess als der Benutzer des aktuellen Prozesses ausgeführt wird. Auf XP, die COM + -Anwendung Host (DLLHOST) und würde normalerweise laufen als IWAM_<machine> wäre. Auf IIS6 wäre es der w3wp.exe Arbeitsprozess und in der Regel läuft als NT AUTHORITY \ Network Service.

jedoch ein Thread eine HTTP-Anfrage ist eine andere Sicherheits-Token ausgeben. Mit integrierten Sicherheit, wie Sie dies würde das Sicherheitstoken des Benutzers entdeckt hat, den die Anfrage, wie Ihr SSPI Experiment trägt aus. Mit den anonymen Zugriff der anonyme Benutzer konfiguriert auf der Website / Anwendung verwendet wird, ist dies in der Regel <MACHINE>\IUSR_<machine>.

In Bezug auf Ihr spezielles Problem mit ServerXMLHTTP dies geht zurück auf die darunter liegende Komponente WinHTTP. Dies wird standardmäßig nur die aktuellen Benutzer-Anmeldeinformationen senden, wenn der Server die Proxy-Umgehungsliste zugegriffen werden. Selbst dann möglich, es der ServerXMLHTTP konfiguriert es nie Anmeldeinformationen, die Benutzer zu senden, habe ich nicht dieses Szenario selbst testen.

Leider ServerXMLHTTP bietet sehr begrenzten Zugriff auf die Konfigurationsdetails auf WinHTTP. Allerdings, wenn diese eine Show Stopper dann könnte man immer die WinHTTP Komponente verwenden, um direkt selbst: -

Dim oWinHTTP
Dim oDOM

    Const AutoLogonPolicy_Always = 0

Set oWinHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")

oWinHTTP.SetAutoLogonPolicy AutoLogonPolicy_Always

oWinHTTP.Open "GET", "http://remoteserver.org/getsomexml.xxx", False
oWinHTTP.Send

If oWinHTTP.Status = 200 Then
    Set oDOM = CreateObject("MSXML2.DOMDocument.3.0")
    oDOM.async = false
    oDOM.Load oWinHTTP.ResponseStream     
End If

Set oWinHTTP = Nothing

Das sollte für http arbeiten, für https es wird wirklich chaotisch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top