Konfigurieren von FTP mit .NET-Mitgliedschaftsauthentifizierung in IIS 7
von Robert McMurray
Kompatibilität
Version | Hinweise |
---|---|
IIS 7.5 | Der FTP 7.5-Dienst wird als Funktion für IIS 7.5 in Windows 7 und Windows Server 2008 R2 ausgeliefert. |
IIS 7.0 | Die FTP 7.0- und FTP 7.5-Dienste wurden außerhalb des Bandes für IIS 7.0 ausgeliefert. Dazu musste der Dienst von der folgenden URL heruntergeladen und installiert werden: https://www.iis.net/downloads/microsoft/ftp. |
Einführung
Microsoft hat einen neuen FTP-Dienst entwickelt, der für Windows Server® 2008 komplett neu geschrieben wurde. Dieser neue FTP-Dienst enthält viele neue Funktionen, die es Web-Autoren ermöglichen, Inhalte besser als bisher zu veröffentlichen, und bietet Web-Administratoren mehr Sicherheit und Bereitstellungsoptionen.
Dieses Dokument führt Sie durch die Konfiguration Ihrer Standardwebsite für die FTP-Mitgliedschaftsbasierte Authentifizierung.
Hinweis
Dieses Dokument wurde mit einer Instanz von SQL Server geschrieben, die auf dem lokalen Webserver installiert ist.
Voraussetzungen
Die folgenden Elemente sind erforderlich, um die Verfahren in diesem Artikel abzuschließen:
IIS 7.0 muss auf Ihrem Windows Server 2008 installiert sein, und es muss Folgendes konfiguriert werden:
- Die Standardwebsite, die von der IIS 7.0-Installation erstellt wird, muss weiterhin vorhanden sein.
- Der Internetinformationsdienste-Manager muss installiert sein.
Der neue FTP-Dienst muss installiert sein. Sie können den FTP-Dienst über einen der folgenden Links von der https://www.iis.net/ Website herunterladen und installieren:
- FTP 7.5 für IIS 7.0 (x64)
- FTP 7.5 für IIS 7.0 (x86)
Legen Sie die Inhaltsberechtigungen fest, um den Zugriff für den Erweiterbarkeits-COM-Prozess zu ermöglichen, der die Authentifizierung verarbeitet:
Öffnen Sie eine Eingabeaufforderung.
Geben Sie folgenden Befehl ein:
ICACLS "%SystemDrive%\inetpub\ftproot" /Grant "Network Service":M /T
Schließen Sie die Eingabeaufforderung.
Hinzufügen der FTP-Veröffentlichung zur Standardwebsite
In diesem ersten Schritt fügen wir die FTP-Veröffentlichung zur Standardwebsite hinzu und fügen die erforderlichen Einstellungen hinzu, damit das lokale Administratorkonto den Inhalt bearbeiten kann.
Erweitern Sie im IIS 7.0 Manager im Bereich Verbindungen den Knoten Sites in der Struktur, und klicken Sie dann auf die Standardwebsite.
Klicken Sie im Bereich Aktionen auf FTP-Veröffentlichung hinzufügen.
Wenn der Assistent FTP-Site-Veröffentlichung hinzufügen angezeigt wird:
Wählen Sie in der Dropdown-Liste IP-Adresse eine IP-Adresse für Ihren FTP-Website aus, oder akzeptieren Sie die Standardauswahl „Alle nicht zugewiesen“. Geben Sie für diese exemplarische Vorgehensweise die lokale Loopback-IP-Adresse für Ihren Computer ein, indem Sie im Feld IP-Adresse „127.0.0.1“ eingeben.
Hinweis
Wenn Sie IPv6 verwenden, sollten Sie auch die IPv6 Localhost-Bindung von „::1“ hinzufügen.
Normalerweise geben Sie den TCP/IP-Port für die FTP-Website in das Feld Port ein. Wählen Sie für dieser Komplettlösung den Standard-Port von 21 aus.
Für diese Komplettlösung verwenden wir keinen Hostnamen, stellen Sie daher sicher, dass das Feld Virtueller Host leer ist.
Stellen Sie sicher, dass die Dropdown-Liste SSL-Zertifikat auf „Nicht ausgewählt“ festgelegt ist und die Option SSL zulassen ausgewählt ist.
Klicken Sie auf Weiter, nachdem Sie diese Einstellungen vorgenommen haben.
Auf der nächsten Seite des Assistenten konfigurieren Sie keine Authentifizierungs- oder Autorisierungseinstellungen, da diese Einstellungen später konfiguriert werden. Klicken Sie auf Fertig stellen, um den Assistenten abzuschließen.
Zusammenfassung
Rekapitulieren wir die Elemente, die Sie in diesem Schritt abgeschlossen haben. Wir haben der Standardwebsite die FTP-Veröffentlichung hinzugefügt, durch:
- Hinzufügen einer FTP-Bindung für die Website für die lokale Loopback-IP-Adresse am Port 21
- Auswählen, dass Secure Sockets Layer (SSL) für die FTP-Site nicht verwendet werden soll.
Hinweis
Sie haben noch keine Authentifizierungs- oder Autorisierungseinstellungen aktiviert.
Konfigurieren von ASP.NET für die Mitgliedschaftsauthentifizierung
Konfigurieren des lokalen SQL Server für ASP.NET Mitgliedschaft
In diesem Abschnitt wird der grundlegende Prozess zum Konfigurieren von ASP.NET für die Mitgliedschaftsauthentifizierung beschrieben. Ausführliche Informationen finden Sie im Abschnitt „ASP.NET für die Mitgliedschaft konfigurieren“ im Abschnitt Vorgehensweise: Verwendung der Formularauthentifizierung mit SQL Server in ASP.NET 2.0 auf der MSDN-Website.
Wenn Sie keinen Zugriff auf einen vorhandenen SQL Server haben, müssen Sie SQL Server installieren.
Wenn Sie noch keine ASP.NETDatenbank erstellt haben, müssen Sie die ASP.NET-Datenbank auf dem SQL Server mithilfe des entsprechenden Befehls aus der folgenden Liste für die Version des Frameworks erstellen, die Sie verwenden:
32-Bit-Framework:
"%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe" -S localhost -A all -E
64-Bit-Framework:
"%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_regsql.exe" -S localhost -A all -E
Hinweis
Informationen zum Verwenden eines Remote-SQL-Servers anstelle von „Localhost“ wie im obigen Beispiel gezeigt finden Sie im Abschnitt „Bereitstellungsüberlegungen“ im Artikel Vorgehensweise: Verwendung der Formularauthentifizierung mit SQL Server in ASP.NET 2.0.
Da der COM-Prozess für die FTP-Erweiterbarkeit als „NT AUTHORITY\Network Service“ ausgeführt wird, müssen Sie das Konto „NT AUTHORITY\Network Service“ zur ASP.NET-Datenbank auf Ihrem SQL Server hinzufügen. Führen Sie dazu die folgenden Schritte aus:
- Schließen Sie SQL Server Enterprise Manager.
- Erstellen Sie eine SQL Server-Anmeldung für NT AUTHORITY\Network Service.
- Gewähren Sie der Anmeldung Zugriff auf die Aspnetdb-Datenbank, indem Sie einen Datenbankbenutzer anlegen.
- Fügen Sie den Datenbankbenutzer zur Datenbankrolle aspnet_Membership_FullAccess hinzu.
Konfigurieren von ASP.NET für die FTP-Mitgliedschaft
Die folgenden Schritte beschreiben den Prozess zum Konfigurieren von ASP.NET für die Mitgliedschaftsauthentifizierung für FTP-Zugriff.
Öffnen Sie mit einem Text-Editor wie Windows Editor Ihre Stammdatei „web.config“, die sich am entsprechenden Pfad für die Version des von Ihnen verwendeten Frameworks befinden sollte:
32-Bit-Framework:
"%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config"
64-Bit-Framework:
"%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\CONFIG\web.config"
Scrollen Sie nach unten, und fügen Sie den folgenden Code vor dem schließenden </configuration>-Tag ein:
<location path="GlobalFtpSite/ftpsvc"> <connectionStrings> <add connectionString="Server=localhost;Database=aspnetdb;Integrated Security=true" name="FtpLocalSQLServer" /> </connectionStrings> <system.web> <membership defaultProvider="FtpSqlMembershipProvider"> <providers> <add name="FtpSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="FtpLocalSQLServer" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" applicationName="/" requiresUniqueEmail="false" passwordFormat="Clear" /> </providers> </membership> <roleManager defaultProvider="FtpSqlRoleProvider" enabled="true"> <providers> <add name="FtpSqlRoleProvider" type="System.Web.Security.SqlRoleProvider,System.Web,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="FtpLocalSQLServer" applicationName="/" /> </providers> </roleManager> </system.web> </location>
Speichern und schließen Sie die Stammdatei „web.config“.
Zusammenfassung
Sie haben ASP.NET für die Mitgliedschaftsauthentifizierung konfiguriert. Um die Elemente, die Sie in diesem Abschnitt abgeschlossen haben, zu rekapitulieren, haben wir Ihren Server folgendermaßen konfiguriert:
- Konfigurieren des lokalen SQL Server für die ASP.NET-Mitgliedschaft
- Konfigurieren von ASP.NET für die FTP-Mitgliedschaft
Konfigurieren der FTP-Mitgliedschaftsauthentifizierung
In diesem Abschnitt wird beschrieben, wie Sie eine Mitgliedschaftsdatenbank mithilfe der Standardwebsite konfigurieren, die zum Erstellen von Benutzern verwendet wird, die die FTP-basierte Mitgliedschaftsauthentifizierung später verwenden wird. Führen Sie dazu die folgenden Schritte aus:
Erforderliche Schritte
- Öffnen Sie den Internetinformationsdienste-Manager (IIS).
- Erweitern Sie Ihren Computer am oberen Knoten der Struktur Verbindung.
- Erweitern Sie den Knoten Sites in der Struktur.
Konfigurieren von .NET-Mitgliedschaftseinstellungen
Schritt 1: Hinzufügen einer Verbindungszeichenfolge
Markieren Sie die Standardwebsite in der Struktur, und doppelklicken Sie auf Verbindungszeichenfolgen, und führen Sie dann die folgenden Schritte aus:
Klicken Sie im Menü Aktionen auf Hinzufügen….
Konfigurieren Sie die folgenden Optionen:
- Name: „FtpLocalSQLServer“
- Server: „localhost“
- Datenbank: „aspnetdb“
Klicken Sie auf OK.
Schritt 2: Hinzufügen eines Rollenanbieters
Markieren Sie die Standardwebsite in der Struktur, und doppelklicken Sie auf Anbieter, und führen Sie dann die folgenden Schritte aus:
Wählen Sie .NET-Rollen aus der Dropdownliste aus.
Klicken Sie im Menü Aktionen auf Hinzufügen….
Wählen Sie SqlRoleProvider aus der Dropdownliste aus.
Konfigurieren Sie die folgenden Optionen:
- Name: „FtpSqlRoleProvider“
- Verbindungszeichenfolgenname: „FtpLocalSQLServer“
- Anwendungsname: „/“
Klicken Sie auf OK.
Schritt 3: Hinzufügen eines Mitgliedschaftsanbieters
Markieren Sie die Standardwebsite in der Struktur, und doppelklicken Sie auf Anbieter, und führen Sie dann die folgenden Schritte aus:
Wählen Sie .NET-Rollen aus der Dropdownliste aus.
Klicken Sie im Menü Aktionen auf Hinzufügen….
Wählen Sie SqlMembershipProvider aus der Dropdownliste aus.
Konfigurieren Sie die folgenden Optionen:
- Name: „FtpSqlMembershipProvider“
- Verbindungszeichenfolgenname: „FtpLocalSQLServer“
- Anwendungsname: „/“
Klicken Sie auf OK.
Schritt 4: Hinzufügen einer Rolle für die FTP-Mitgliedschaft
Markieren Sie die Standardwebsite in der Struktur, und doppelklicken Sie auf .NET-Rikkeb, und führen Sie dann die folgenden Schritte aus:
Möglicherweise wird ein Fehlerdialogfeld zum Herstellen einer Verbindung angezeigt. Wenn ja, klicken Sie auf OK, um das Fehlerdialogfeld zu schließen, und konfigurieren Sie den Standardanbieter mit den folgenden Schritten:
- Klicken Sie im Bereich Aktionen auf Standardanbieter festlegen....
- Wählen Sie FtpSqlRoleProvider aus der Dropdownliste aus.
- Klicken Sie auf OK.
Klicken Sie im Bereich Aktionen auf Hinzufügen….
Konfigurieren Sie die folgenden Optionen:
- Name: „ftprole“
Klicken Sie auf OK.
Schritt 5: Hinzufügen eines Benutzerkontos für die FTP-Mitgliedschaft
Markieren Sie die Standardwebsite in der Struktur, und doppelklicken Sie auf .NET-Benutzer, und führen Sie dann die folgenden Schritte aus:
Möglicherweise wird ein Fehlerdialogfeld zum Herstellen einer Verbindung angezeigt. Wenn ja, klicken Sie auf OK, um das Fehlerdialogfeld zu schließen, und konfigurieren Sie den Standardanbieter mit den folgenden Schritten:
- Klicken Sie im Bereich Aktionen auf Standardanbieter festlegen....
- Wählen Sie FtpSqlMembershipProvider aus der Dropdownliste aus.
- Klicken Sie auf OK.
Klicken Sie im Bereich Aktionen auf Hinzufügen.
Konfigurieren Sie die folgenden Optionen:
- Benutzername: „ftpuser“
- Email: „ftpuser@localhost.local“
- Kennwort: „P@ssw0rd“
Klicken Sie auf Weiter.
Fügen Sie den Benutzer zu „ftprole“ hinzu, und klicken Sie dann auf Fertig stellen.
Aktivieren der Mitgliedschaftsauthentifizierung für FTP
Konfigurieren von FTP für die Mitgliedschaftsauthentifizierung
Markieren Sie die Standardwebsite in der Struktur, und doppelklicken Sie auf FTP-Authentifizierung, und führen Sie dann die folgenden Schritte aus:
- Klicken Sie auf Benutzerdefinierte Anbieter... im Bereich Aktionen.
- Aktivieren Sie das Kontrollkästchen für AspNetAuth.
- Klicken Sie auf OK.
Sie können den FTP-Benutzer jetzt mit einer von zwei Methoden autorisieren:
Methode 1: Konfigurieren einer FTP-Autorisierungsregel für eine Mitgliedschaftsrolle
Markieren Sie die Standardwebsite in der Struktur, und doppelklicken Sie auf FTP-Autorisierungsregeln, und führen Sie dann die folgenden Schritte aus:
- Klicken Sie im Bereich Aktionen auf Zulassungsregel hinzufügen.
- Wählen Sie Angegebene Rollen oder Benutzergruppen für die Zugriffsoption aus.
- Geben Sie „ftprole"“ für den Rollennamen ein.
- Wählen Sie Lesen und Schreiben für die Option Berechtigungen aus.
- Klicken Sie auf OK.
Methode 2: Konfigurieren einer FTP-Autorisierungsregel für eine Mitgliedschaftsrolle
Markieren Sie die Standardwebsite in der Struktur, und doppelklicken Sie auf FTP-Autorisierungsregeln, und führen Sie dann die folgenden Schritte aus:
- Klicken Sie im Bereich Aktionen auf Zulassungsregel hinzufügen.
- Wählen Sie Angegebene Benutzer für die Zugriffsoption aus.
- Geben Sie „ftpuser“ für den Benutzernamen ein.
- Wählen Sie Lesen und Schreiben für die Option Berechtigungen aus.
- Klicken Sie auf OK.
Zusammenfassung
Um die Elemente, die Sie in diesem Abschnitt abgeschlossen haben, zu rekapitulieren, haben wir Ihren Server folgendermaßen konfiguriert:
Konfigurieren von .NET-Mitgliedschaftseinstellungen
- Hinzufügen einer Verbindungszeichenfolge
- Hinzufügen eines Rollenanbieters
- Hinzufügen eines Mitgliedschaftsanbieters
- Hinzufügen einer Rolle für die FTP-Mitgliedschaft
- Hinzufügen eines Benutzerkontos für die FTP-Mitgliedschaft
Aktivieren der Mitgliedschaftsauthentifizierung für FTP:
- Konfigurieren der FTP-Authentifizierung für die Mitgliedschaft
- Konfigurieren einer FTP-Autorisierungsregel für eine Mitgliedschaftsrolle
- Konfigurieren einer FTP-Autorisierungsregel für eine Mitgliedschaftsrolle
Problembehandlung
Wenn Sie Mitgliedschaftsrollen verwenden, müssen Sie möglicherweise den Hotfix installieren, der im folgenden Microsoft Knowledge Base-Artikel beschrieben wird:
https://support.microsoft.com/kb/955136/
Beim Versuch, sich anzumelden, erhalten Sie die folgende Antwort:
530-User cannot log in.
Win32 error:
Error details: .Net SqlClient Data Provider: An error has occurred while establishing a connection to the server.
When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server
does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
530 End
Login failed.
Dieser Fehler wird verursacht, wenn Sie ihren SQL-Server nicht so konfiguriert haben, dass Remoteverbindungen akzeptiert werden.