Ich habe einen Webserver, wo Leute Dateien hochladen. Was ich tun muss, ist diese Dateien zu nehmen und sie in eine Dateifreigabe in der Active Directory-Domäne zu schreiben. Das Problem - der Webserver ist nicht auf der Domain.Wie kann ich in C# auf eine Dateifreigabe in einer Domäne von außerhalb einer Domäne zugreifen?
Also, wie ist der beste Weg, dies zu tun? Ich hätte gedacht, dass dies einfach wäre, etwas in der Art, eine Verbindung mit einigen Anmeldeinformationen herzustellen und es zu tun. Aber anscheinend nicht. Das nächste, was ich gefunden habe, ist Identitätswechsel mit WindowsIdentity.Impersonate
, aber alles, was ich gelesen habe, sagt, das ist eine schlechte Idee in einer Produktionsumgebung.
Irgendwelche Ideen? Ich arbeite an einer Lösung, FTP die Dateien, aber das ist auch unbefriedigend, und ein Fallback-Plan.
Ich benutze C# und. NET 4.0 in (offensichtlich) eine Windows-Umgebung.
Bearbeiten: Ich sollte darauf hinweisen, dass ich keine Server (oder Dienste) ausführen kann, die auf die Außenseite auf dieser Domäne zugreifen. Das FTPing ist eine temporäre Problemumgehung.
Das einzige Problem mit Impersonate ist, wenn Sie die Benutzeranmeldedaten außerhalb des Kontexts, wo sie verwendet werden sollen, leakage lassen, was * leicht * passieren kann, wenn eine Ausnahme während der Identitätsübernahme ausgelöst wird. Verwenden Sie einen Subprozess, um den Identitätswechsel durchzuführen, da die Prozessgrenze eine sichere Wand bietet, die verhindert, dass Anmeldeinformationen durchgelassen werden. –
@Ben Voigt Das ist ein interessanter Punkt. Wenn ich am Ende die Impersonate machen muss (und ich kann, das FTP ist eine temporäre Maßnahme), werde ich das auf jeden Fall tun. – Patches