Arrêt du protocole SSL et ASP.NET

Traductions disponibles Traductions disponibles
Numéro d'article: 910444 - Voir les produits auxquels s'applique cet article
ASP.NET Support Voice colonne

Arrêt du protocole SSL et ASP.NET

pour personnaliser cette colonne à vos besoins, nous souhaitons à inviter vous permet de soumettre vos idées sur les sujets qui vous intéressent et problèmes que vous souhaitez voir traités articles avenir de la base de connaissances et des colonnes Support Voice. Vous pouvez soumettre vos idées et vos commentaires à l'aide de l'écran Ask For It. Il existe également un lien vers le formulaire au bas de cette colonne.
Agrandir tout | Réduire tout

Sommaire

Bienvenue dans la chronique ASP.NET Support Voice ! Mon nom est Jerry Orman. J'AI ont été avec Microsoft depuis plus de cinq ans et ont passé la plupart de mon temps consacré aux technologies de Web comme Microsoft FrontPage et Microsoft produits et technologies SharePoint. J'ai passé la dernière année Utilisation de Microsoft ASP.NET comme un technicien du support technique. Ce mois-ci, je vais parler d'arrêt du protocole SSL et ASP.NET. En particulier, je veux vous concentrer sur les problèmes résultant d'une configuration du serveur. Nous allons jeter un coup de ?il au fin SSL et des effets secondaires de cette configuration de votre application.

Arrêt du protocole SSL est une configuration dans laquelle le serveur Web exécutant votre code envoie et reçoit le trafic sur HTTP, et il est un périphérique entre votre serveur Web et vos clients qui chiffre et déchiffre les données. Dans cette configuration, les clients envoyez et recevez le trafic HTTPS. La configuration de SSL fin est similaire à la suivante :
Client <, HTTPS, > périphérique SSL <, HTTP, > serveur Web
Maintenant allons allez sur deux problèmes apparus dans Microsoft ASP.NET 2.0 avec cette configuration, certaines façons de contourner le problème.

Problème 1

Lorsque vous déplacez le pointeur sur un élément de menu dans le contrôle ASP.NET 2.0, menu , vous obtenez la message d'erreur suivantes :
Cette page contient des éléments sécurisés et. Voulez-vous afficher les éléments non sécurisés ?
L'application est supposée pour être sécurisé, vous utilisez le protocole SSL et vous n'avez ajouté tous les contrôles qui sont rendu un chemin d'accès absolu vers un HTTP adresse. Quelle est avec ce message ?

Eh bien, le problème est que le contrôle de menu émet certaines JavaScript qui utilise un objet iFrame pour créer le menu volant. Vous devez donner le cadre d'une URL de départ. Pour éviter qu'un voyage arrondi inutile au serveur pour les scénarios non-SSL, le script utilise sur : vide pour l'URL. Toutefois, le navigateur considère cela une adresse non sécurisée, donc vous obtenez l'erreur ci-dessus. Pour plus d'informations sur ce problème en termes de Microsoft Windows SharePoint Services, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
837850 Vous message de « cette page contient des éléments sécurisés et » lorsque vous cliquez sur Mode Explorateur dans une bibliothèque de documents dans Windows SharePoint Services ou SharePoint Team Services à partir de Microsoft
Je mentionne explicitement scénarios non-SSL car, si le serveur Web a été activé le trafic HTTPS au lieu du périphérique SSL, le code JavaScript qui émet le contrôle de menu s'ajouter une ligne de code pour définir la source de l'objet iFrame vers une adresse HTTPS d'une page sur le serveur. Cela déclenche une autre requête, mais empêche la message d'erreur. Si vous déployez dans ce type d'environnement, vous pouvez forcer l'ajout de JavaScript pour empêcher le message d'erreur en ajoutant ce code à la page comportant le contrôle de menu .
 <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>
 
Idéalement, vous aurait le menu dans une classe MasterPage ou une classe UserControl et pourriez ajouter ce code qu'une seule fois.

Problème 2

Vous pouvez trouver que, lorsque vous avez l'attribut requireSSL de la <forms>élément défini sur true , le serveur répond avec redirige répétés à la page d'ouverture de session FormsAuthentication . Cela est dû à une modification de la façon dont la méthode FormsAuthenticationModule traite l'attribut requireSSL . Si vous définissez l'attribut requireSSL sur true , la méthode FormsAuthenticationModule crée un cookie qui possède l'attribut sécurisé défini. (Ce problème d'est identique à celle de .NET Framework 1.1.) Lorsque vous utilisez l'attribut sécurisé , le client transmettre uniquement le cookie vers le serveur si le client utilise SSL. Cette partie est idéal, car le client utilise en effet SSL. Supposons que vous ayez une page SecurePage.aspx auxquels les utilisateurs anonymes ne peut pas accéder. Avec le protocole SSL et l'attribut requireSSL , vous obtenez le trafic sur une demande initiale à SecurePage.aspx suivant :
? > Client apporte une demande GET pour SecurePage.aspx.

<, Serveur répond avec un HTTP 302 (redirection) à la page d'ouverture de session.

? > Client apporte une demande GET pour Login.aspx.

<, Serveur répond avec un 200 OK. La page de connexion est affichée au client.

? > Client apporte une demande POST à Login.aspx.

<, Serveur répond avec un 302 (redirection) à SecurePage.aspx. En-tête de cookie ensemble est envoyé avec leattribut sécurisé pour le client.

? > Client apporte une demande GET à SecurePage.aspx. Cookie est transmis car le client utilise SSL.

<, Serveur répond avec un 302 (redirection) à la page d'ouverture de session.

Vous obtenez la redirection dans la dernière demande raison d'une modification de la classe FormsAuthenticationModule . Une vérification supplémentaire a été ajoutée à ASP.NET 2.0 pour déterminer si l'utilisateur en transmettant un cookie de sécurité sur une demande non-SSL. ASP.NET 2.0 renvoie la classe FormsAuthenticationTicket si la propriété FormsAuthentication.RequireSSL est définie sur false ou si l'attribut Request.IsSecure est défini sur true .
  • La propriété FormsAuthentication.RequireSSL est définie sur false si l'attribut requireSSL est défini sur false dans le fichier de configuration.
  • L'attribut Request.IsSecure est défini sur true si le serveur Web reçoit le trafic SSL.
La mesure où, dans ce scénario, le serveur Web reçoit pas le trafic SSL et l'attribut requireSSL est défini sur true , les chèques renvoie false . Par conséquent, la classe FormsAuthenticationTicket n'est pas renvoyée et le cookie est supprimé de la collection Request.Cookies .

La demande en l'utilisateur est anonyme à ce stade parce que le serveur n'a pas encore validé les informations d'identification de l'utilisateur. Pendant que la demande passe par le pipeline ASP.NET, la classe UrlAuthorizationModule vérifie si l'utilisateur a accès à la page. Un utilisateur anonyme n'ayant pas d'accès à une page SecurePage.aspx, la classe UrlAuthorizationModule renvoie un 401 message d'erreur (« Access Denied »), ce qui entraîne une redirection à la page d'ouverture de session.

Pour éviter ce problème, vous devez tout d'abord supprimez l'attribut requireSSL le <forms>balise dans le fichier de configuration. Vous devez définir par programmation l'attribut sécurisé sur le FormsAuthentication cookie. Le code suivant fait cela pour vous, pour le cookie FormsAuthentication et le cookie de session .
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;
               }
          }
     }
}

Références

Pour plus d'informations sur le contrôle de menu , reportez-vous au site de Web MSDN (Microsoft Developer Network) suivant :
http://msdn2.microsoft.com/en-us/library/2xt3t8a7(vs.80).aspx
Pour plus d'informations sur l'attribut requireSSL de la propriété FormsAuthentication.RequireSSL , reportez-vous au site Web MSDN suivant :
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.requiressl.aspx
Pour plus d'informations sur l'attribut IsSecure de la propriété HttpRequest.IsSecureConnection , reportez-vous au site Web MSDN suivant :
http://msdn2.microsoft.com/en-us/library/system.web.httprequest.issecureconnection(vs.71).aspx
Pour plus d'informations sur la classe FormsAuthenticationModule , reportez-vous au site Web MSDN suivant :
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationmodule.aspx
Pour plus d'informations sur la classe UrlAuthorizationModule , reportez-vous au site Web MSDN suivant :
http://msdn2.microsoft.com/en-us/library/system.web.security.urlauthorizationmodule.aspx


J'espère que vous trouver ces informations utiles lorsque vous utilisez SSL fin et Microsoft ASP.NET. N'oubliez pas, les colonnes de support Voice sont pour vous ! Comme toujours, hésitez pas à envoyer des idées sur les sujets souhaités adressé avenir colonnes ou dans la Base de connaissances en utilisant le formulaire Ask For It.

Propriétés

Numéro d'article: 910444 - Dernière mise à jour: jeudi 22 novembre 2007 - Version: 1.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ASP.NET 2.0
Mots-clés : 
kbmt kbhowto kbasp KB910444 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 910444
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com