Ich habe eine Webanwendung, die Dateien von einer Netzwerkfreigabe lesen (und möglicherweise schreiben) muss. Ich habe mich gefragt, wie der beste Weg dazu wäre?
Ich kann dem Netzwerkdienst- oder dem aspnet-Konto keinen Zugriff auf die Netzwerkfreigabe geben. Ich könnte möglicherweise Nachahmung verwenden.
Die Netzwerkfreigabe und die Webanwendung werden beide in derselben Domäne gehostet und ich kann einen neuen Benutzer in der Domäne speziell für diesen Zweck erstellen, aber ich bin mir nicht sicher, wie ich die Punkte zwischen dem Erstellen des Filestreams und der Angabe der Anmeldeinformationen zur Verwendung in der Webanwendung.
Leider ist das Laufwerk nicht als Netzwerklaufwerk auf dem Computer zugeordnet, es ist nur für mich als Netzwerkfreigabe verfügbar, daher kann ich keinen transparenten Anruf tätigen.
Es gibt ein Problem, das mir beim Identitätswechsel einfällt ... Ich kann nur einen Benutzer pro Anwendungsdomäne annehmen denke , aber ich bin froh, dass es korrigiert wurde. Ich muss diese Datei möglicherweise in mehrere verschiedene Shares schreiben, was bedeutet, dass ich mich als mehrere Benutzer ausgeben muss.
Ich mag die Idee, ein Token zu erstellen ... wenn ich das kann, kann ich die Verwendung ihrer Anmeldeinformationen im Voraus verlangen und dann die Sicherheit dynamisch anwenden und ihnen aussagekräftige Fehlermeldungen geben, wenn der Zugriff verweigert wird. .. Ich bin dran zu spielen, aber ich werde mit einem Update zurückkommen.
Gegeben, jeder hat bereits Domänenkonten. Testen Sie die integrierte IIS-Authentifizierung. Sie erhalten eine hässliche Anmeldebox aus dem Netzwerk, aber Ihre Kreditangaben sollten an die Dateifreigabe übergeben werden.
@lomaxx
Wollen Sie damit sagen, dass nur Sie permps an die Freigabe haben oder diese manuell einem Laufwerksbuchstaben zugeordnet haben. Wenn Sie später ucn \ host \ share verwenden können, verwenden Sie einen c: \ shared_folder.
Zufällig Wäre es eine Belastung, die Freigabe in einem lokalen Ordner auf dem Host zu spiegeln? Ich höre ROBOCOPY ist ziemlich praktisch.
Eine andere Idee. Führen Sie IIS auf Ihrer Zielfreigabe aus, die Sie über http lesen können und wenn Sie WebDAV untersuchen müssen.
Ich hatte keine Probleme, transparent mit Netzwerkfreigaben zu arbeiten, als wären sie lokale Laufwerke. Das einzige Problem, das Sie möglicherweise haben, ist das, was Sie erwähnt haben: Mit dem aspnet
-Konto erhalten Sie Zugriff auf die Freigabe. Identitätswechsel ist wahrscheinlich der beste Weg, dies zu tun.
Sie sollten in der Lage sein, beliebige Filestream-Objekte zu verwenden, um auf die Netzwerkfreigabe zuzugreifen, solange sie einen Laufwerksbuchstaben auf dem Servercomputer hat.
Die Personifikation hat in diesem Szenario gut funktioniert. Wir hatten einen Assistenten, der eine Zip-Datei über die Website hochgeladen hat, aber wir laden die Website aus. Daher muss eine Möglichkeit zum Speichern der Datei auf allen Computern eingerichtet werden.
Es gibt viele verschiedene Möglichkeiten, dies zu tun. Wir haben uns dazu entschieden, alle Anfragen unter dem von uns eingerichteten Benutzer auszuführen und haben gerade den Eintrag web.config hinzugefügt und die Sicherheitsberechtigungen für die Ordner für den Benutzer eingerichtet. Dieser Artikel kb erklärt das Setup sehr gut.
Sie haben einige Optionen und einer davon ist der Identitätswechsel, wie Sie erwähnt haben. Eine andere, die ich gerne benutze und in der Vergangenheit benutzt habe, ist ein vertrauenswürdiger Service-Anruf. Nehmen wir einmal an, dass es immer viel sicherer ist, den Zugriff über IIS zu beschränken, um sicherzustellen, dass es möglichst wenige Lücken gibt. Damit lasst uns diesen Weg gehen.
Erstellen Sie einen WCF-Dienst mit ein paar Einstiegspunkten, und die Schnittstelle könnte so aussehen.
%Vor% Nun können Sie diesen Dienst sehr einfach über einen Windows-Dienst hosten, und jetzt müssen Sie nur noch mit Application_start
die Beziehung zum Dienst aufbauen, um Ihren Token zu erhalten, und schon geht es los zu den Rennen. Die andere nette Sache hier ist, dass dieser Service intern ist, vertrauenswürdig, und ich habe es sogar vorher auf dem Dateiserver gehostet und so ist es viel einfacher, Berechtigungen für diesen Vorgang zu gewähren.
Wenn Sie einen neuen AD-Benutzer erstellen können, ist die einfachste Lösung, dass der Anwendungspool unter der Berechtigung dieses AD-Kontos ausgeführt wird, was bedeutet, dass Ihre Anwendung jetzt als AD-Benutzer ausgeführt wird. Sie müssten den AD-Benutzer der IIS-Arbeitsprozessgruppe auf dem Computer hinzufügen, auf dem Ihre Anwendung ausgeführt wird. Solange Ihr AD-Benutzer Schreibberechtigungen für die Netzwerkfreigabe hat, sollten Sie den UNC-Pfad in Ihren Dateioperationen verwenden können.
Tags und Links c# asp.net security file-io web-applications