Sie sind zurzeit offline. Es wird auf die erneute Herstellung einer Internetverbindung gewartet.

SSL-Beendigung und ASP.NET

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

910444
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.
ASP.NET Support Voice-Spalte

SSL-Beendigung und ASP.NET

diese Kolumne an Ihre Bedürfnisse anpassen wir möchten Sie Ihre Ideen zu den Themen zu senden, die Sie interessieren einladen möchten, und behandelt Probleme, die Sie anzeigen möchten, in zukünftigen Knowledge Base-Artikeln und Support Voice-Kolumnen. Sie können Ihre Ideen und ihr Feedback über das Formular Ask For It senden. Es gibt auch eine Verknüpfung zu dem Formular am unteren Rand dieser Spalte.
Willkommen Sie bei ASP.NET Support Voice-Spalte! Mein Name ist Jerry Orman. Ich haben seit fünf Jahren bei Microsoft und Großteil meiner Zeit konzentriert sich auf webbezogene-Technologien wie Microsoft FrontPage und Microsoft SharePoint-Produkte und-Technologien verbracht haben. Ich habe das letzte Jahr arbeiten mit Microsoft ASP.NET als einen Supportmitarbeiter aufgewendet wurden. In diesem Monat werde ich über SSL-Beendigung und ASP.NET zu sprechen. Insbesondere soll Probleme konzentrieren, die aus einer Konfiguration des Servers. Wir einen Blick auf SSL-Beendigung und einige Nebenwirkungen dieser Konfiguration Ihrer Anwendung zu übernehmen.

SSL-Beendigung ist eine Konfiguration in der der Webserver mit den Code sendet und empfängt Datenverkehr über HTTP und es ist ein Gerät zwischen Ihrem Webserver und Ihre Clients, die verschlüsselt und entschlüsselt die Daten. In dieser Konfiguration werden die Clients senden und empfangen HTTPS-Datenverkehr. Die SSL-Beendigung-Konfiguration ist der folgenden ähnelt:
Client < – HTTPS – > SSL Gerät < – HTTP – > Server
Jetzt wir gehen Sie über zwei Probleme, die in Microsoft ASP.NET 2.0 mit dieser Konfiguration ergeben, und einige Möglichkeiten zum Umgehen des Verhaltens.

Problem 1

Wenn Sie über ein Menüelement in ASP.NET 2.0- Menü -Steuerelement bewegen, erhalten Sie folgende Fehlermeldung:
Diese Seite enthält sowohl sichere als auch nicht sichere Objekte. Möchten Sie die nicht sicheren Objekte anzeigen?
Die Anwendung soll sichern, Sie verwenden das SSL-Protokoll, und Sie haben keine Steuerelemente, die einen absoluten Pfad an einem HTTP-rendering werden hinzugefügt Adresse. Was ist mit dieser Nachricht?

Das Problem ist, dass das Menu -Steuerelement einige JavaScript ausgibt, die ein iFrame -Objekt zum Erstellen von Fly Out-Menü verwendet. Sie müssen dem Frame einen starten-URL zuweisen. Vermeiden Sie eine unnötige Roundtrip zum Server für nicht-SSL-Szenarios zu machen, verwendet das Skript über: leere für den URL. Jedoch berücksichtigt der Browser dies eine unsichere Adresse, so dass Sie den obigen Fehler. Weitere Informationen zu diesem Problem in Bezug von Microsoft Windows SharePoint Services finden Sie im folgenden Artikel der Microsoft Knowledge Base:
837850Meldung "diese Seite enthält sowohl sichere als auch nicht sichere Objekte" beim Klicken Sie auf Explorer-Ansicht in einem Dokument Bibliothek in Windows SharePoint Services oder SharePoint Team Services von Microsoft
Ich erwähnen explizit nicht-SSL-Szenarios, da Wenn der Server den HTTPS-Datenverkehr anstelle des SSL-Geräts empfangen wurde, das JavaScript, das das Menu -Steuerelement gibt eine Zeile Code die Quelle des iFrame -Objekts auf eine HTTPS-Adresse einer Seite auf dem Server festgelegt hinzufügen würden. Diese eine weitere Anforderung initiiert, verhindert aber die Fehlermeldung. Wenn Sie in diese Art von Umgebung bereitstellen, können Sie erzwingen, das Hinzufügen von JavaScript so verhindern Sie die Fehlermeldung durch diesen Code zu der Seite mit das Menu -Steuerelement hinzufügen.
 <script runat="server">   protected override void Render(HtmlTextWriter writer)    {        Page.ClientScript.RegisterStartupScript(typeof(Page), "MenuHttpsWorkaround",         Menu1.ClientID + "_Data.iframeUrl='https://myserver/someblankpage.htm';", true);        base.Render(writer);   }</script> 
im Idealfall Sie müssten in einer MasterPage -Klasse oder ein UserControl -Klasse im Menü und konnte dieser Code nur einmal hinzufügen.

Problem 2

Sie können, feststellen, dass wenn Sie das Attribut RequireSSL des der <forms>-Element auf true festgelegt, der Server antwortet mit wiederholten Umleitungen FormsAuthentication -Anmeldeseite. Dies wird durch eine Änderung in die Art und Weise verursacht die FormsAuthenticationModule -Methode das Attribut RequireSSL behandelt. Wenn Sie das Attribut RequireSSL auf true festlegen, erstellt die FormsAuthenticationModule -Methode ein Cookie, der das sichere Attribut festgelegt hat. (Dies ist dieselbe wie im .NET Framework 1.1.) Wenn Sie das sichere Attribut verwenden, wird der Client nur das Cookie an den Server übergeben, wenn der Client SSL verwendet wird. Dieser Teil ist großartig, da der Client tatsächlich SSL verwendet wird. Angenommen, Sie eine Seite SecurePage.aspx verfügen, die anonyme Benutzer zugreifen können. Das SSL-Protokoll und das Attribut RequireSSL erhalten Sie mit der folgenden Datenverkehr auf einer ursprünglichen Anforderung zu SecurePage.aspx:
– > Client sendet eine GET-Anforderung für SecurePage.aspx.

<– Server antwortet mit einer HTTP 302 (Redirect) an die Anmeldeseite.

– > Client sendet eine GET-Anforderung für Login.aspx.

<– Server antwortet mit einem 200 OK. Die Anmeldeseite wird Client gerendert.

– > Client sendet eine POST-Anforderung an Login.aspx.

<– Server antwortet mit einer 302 (Redirect) auf SecurePage.aspx. Set-Cookieheaders wird gesendet, mit der sichere Attribut an den Client.

– > Client sendet eine GET-Anforderung an SecurePage.aspx. Cookie wird übergeben, da der Client SSL verwendet wird.

<– Server antwortet mit einer 302 (Redirect) zurück an die Anmeldeseite.

Sie erhalten die Umleitung in der letzten Anforderung wegen einer Änderung in der FormsAuthenticationModule -Klasse. Eine zusätzliche Überprüfung wurde hinzugefügt, in ASP.NET 2.0 um zu bestimmen, ob der Benutzer ein sicheres Cookie über eine nicht-SSL-Anforderung übergeben wird. ASP.NET 2.0 gibt FormsAuthenticationTicket -Klasse zurück, wenn die FormsAuthentication.RequireSSL -Eigenschaft auf false festgelegt ist oder wenn das Request.IsSecure -Attribut auf true festgelegt ist.
  • Die FormsAuthentication.RequireSSL -Eigenschaft wird auf false festgelegt, wenn das Attribut RequireSSL in der Konfigurationsdatei auf false festgelegt ist.
  • Das Request.IsSecure -Attribut wird auf true festgelegt, wenn der Webserver SSL-Datenverkehr empfängt.
Da in diesem Szenario der Server keine SSL-Datenverkehr empfängt und das Attribut RequireSSL auf true festgelegt ist, zurückgegeben beide Überprüfungen false . Als Ergebnis die FormsAuthenticationTicket -Klasse wird nicht zurückgegeben, und das Cookie wird aus der Auflistung Request.Cookies entfernt.

Die Anforderung, die der Benutzer stellt ist an diesem Punkt anonym, da der Server die Anmeldeinformationen des Benutzers nicht noch überprüft hat. Wie die Anforderung der ASP.NET-Pipeline durchläuft, überprüft die UrlAuthorizationModule -Klasse an, ob der Benutzer Zugriff auf die Seite verfügt. Da anonymer Benutzer keinen Zugriff auf eine Seite SecurePage.aspx, gibt die UrlAuthorizationModule -Klasse ein 401 zurück Fehlermeldung ("Access Denied"), wodurch eine Umleitung zur Anmeldeseite.

Um dieses Verhalten zu vermeiden, müssen Sie zunächst das Attribut RequireSSL aus der <forms> Entfernen-Tag in der Konfigurationsdatei. Dann Sie das sichere Attribut auf FormsAuthentication programmgesteuert festlegen müssen Cookie. Im folgende Code wird dies für Sie, für das FormsAuthentication -Cookie und Session -Cookies.
void Application_EndRequest(object sender, EventArgs e){     if (Response.Cookies.Count > 0)     {          foreach (string s in Response.Cookies.AllKeys)          {               if (s == FormsAuthentication.FormsCookieName || s.ToLower() == "asp.net_sessionid")               {                    Response.Cookies[s].Secure = true;               }          }     }}
Informationsquellen
Weitere Informationen zum das Menu -Steuerelement die folgenden Microsoft Developer Network (MSDN)-Website:Weitere Informationen zu dem Attribut RequireSSL der FormsAuthentication.RequireSSL -Eigenschaft der folgenden MSDN-Website:Informationen über das IsSecure -Attribut der HttpRequest.IsSecureConnection -Eigenschaft finden Sie auf den folgenden MSDN-Website: Weitere Informationen über die FormsAuthenticationModule -Klasse die folgenden MSDN-Website:Weitere Informationen über die UrlAuthorizationModule -Klasse die folgenden MSDN-Website:

Ich hoffe, Sie finden diese Informationen hilfreich, wenn Sie SSL-Beendigung und Microsoft ASP.NET verwenden. Beachten Sie, dass Support Voice-Kolumnen für Sie sind! Sie gerne wie immer Ideen auf Themen, die Spalten in Zukunft behandelt werden sollen oder in der Knowledge Base mithilfe des Formulars Ask For It zu senden.

Warnung: Dieser Artikel wurde automatisch übersetzt

Eigenschaften

Artikelnummer: 910444 – Letzte Überarbeitung: 11/22/2007 03:46:24 – Revision: 1.3

  • Microsoft ASP.NET 2.0
  • kbmt kbhowto kbasp KB910444 KbMtde
Feedback