Terminación SSL y ASP.NET

Seleccione idioma Seleccione idioma
Id. de artículo: 910444 - Ver los productos a los que se aplica este artículo
Columna de voz de soporte de ASP.NET

Terminación SSL y ASP.NET

para personalizar esta columna a sus necesidades, deseamos invitar a enviar sus ideas sobre temas que le interesen y resuelve los problemas que se desea ver artículos de Knowledge Base en el futuro y columnas de voz de soporte. Puede enviar sus ideas y comentarios mediante el formulario Ask For It. También es un vínculo al formulario en la parte inferior de esta columna.
Expandir todo | Contraer todo

En esta página

Bienvenido a la columna de voz de soporte de ASP.NET Mi nombre es Jerry Couto. Han con Microsoft a través de cinco años y ha dedicado la mayor parte mi tiempo centrada en tecnologías de relacionada con el Web como Microsoft FrontPage y Microsoft SharePoint Products y Technologies. He pasado el último año trabajar con Microsoft ASP.NET como ingeniero de soporte técnico. Este mes voy a hablar de terminación SSL y ASP.NET. En concreto, desea centrarse en problemas derivados de la configuración del servidor. Vamos a eche un vistazo a terminación SSL y algunos efectos de esta configuración en la aplicación.

Terminación SSL es una configuración en el que el servidor de Web que ejecuta el código se envía y recibe tráfico a través de HTTP y hay un dispositivo entre el servidor Web y los clientes que cifra y descifra los datos. En esta configuración, los clientes son enviar y recibir tráfico. La configuración de terminación SSL es similar al siguiente:
Cliente <: HTTPS: > dispositivo SSL <: HTTP: > servidor Web
Ahora vamos a través de dos problemas que surjan en Microsoft ASP.NET 2.0 con esta configuración y algunas formas de evitar este comportamiento.

Problema 1

Cuando se sitúa sobre un elemento de menú en el control Menu de ASP.NET 2.0, obtendrá el mensaje de error siguientes:
La página que está abriendo contiene tanto elementos seguros como no seguros. ¿Desea mostrar los elementos no seguros?
Se supone que la aplicación seguro, se utiliza el protocolo SSL y no has agregado los controles que están procesando una ruta de acceso absoluta a un HTTP dirección. ¿Qué sucede con este mensaje?

Bien, el problema es que el control Menu emite algunos JavaScript que utiliza un objeto iFrame para generar el menú flotante. Tiene que proporcionar el marco de una dirección URL inicial. Para evitar un ida y vuelta innecesario al servidor para escenarios no SSL, se utiliza la secuencia de comandos acerca de: en blanco para la dirección URL. Sin embargo, el explorador considera esto una dirección no segura, para obtener el error anterior. Para obtener más información acerca de este problema en términos de Microsoft Windows SharePoint Services, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
837850Recibirá un mensaje "esta página contiene elementos seguros y" al hacer clic en vista del explorador en una biblioteca de documentos en Windows SharePoint Services o SharePoint Team Services de Microsoft
Menciono explícitamente escenarios no SSL porque, si el servidor Web estaba recibiendo el tráfico HTTPS en lugar del dispositivo SSL, el código JavaScript que emite el control Menu agregaría una línea de código para establecer el origen del objeto iFrame en una dirección HTTPS de una página en el servidor. Esto inicia otra solicitud, pero evita la mensaje de error. Si está implementando en este tipo de entorno, puede forzar la adición de JavaScript para evitar que el mensaje de error agregar este código a la página que tiene el control de menú .
 <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>
 
Idealmente, que se tendría el menú de una clase MasterPage o una clase UserControl y no se pudo agregar este código sólo una vez.

Problema 2

Es posible que, cuando tiene el atributo requireSSL del <forms> elemento establecido en true , el servidor responde con redirecciones repetidas a la página de inicio de sesión de FormsAuthentication . Esto se debe a un cambio en la forma en que el método FormsAuthenticationModule controla el atributo requireSSL . Si establece el atributo requireSSL en true , el método FormsAuthenticationModule crea una cookie que tenga establecido el atributo seguro . (Este comportamiento es el mismo que en .NET Framework 1.1.) Cuando se utiliza el atributo seguro , el cliente sólo pasan la cookie al servidor si el cliente está utilizando SSL. Esta parte es fantástico, porque el cliente realmente está utilizando SSL. Supongamos que tiene una página de SecurePage.aspx no pueden tener acceso los usuarios anónimos. Con el protocolo SSL y el atributo requireSSL , terminará con el tráfico en una solicitud inicial a SecurePage.aspx siguiente:
? > Cliente realiza una solicitud GET para SecurePage.aspx.

<: Servidor responde con un HTTP 302 (redirección) a la página de inicio de sesión.

? > Cliente realiza una solicitud GET para Login.aspx.

<: Servidor responde con un 200 Aceptar. Se procesa la página de inicio de sesión al cliente.

? > Cliente realiza una solicitud POST a Login.aspx.

<: Servidor responde con un 302 (redirección) SecurePage.aspx. Encabezado de cookie de conjunto se envía con elatributo seguro al cliente.

? > Cliente realiza una solicitud GET a SecurePage.aspx. Cookie se pasa porque el cliente está utilizando SSL.

<: Servidor responde con un 302 (redirección) a la página de inicio de sesión.

Obtener la redirección en la última solicitud debido a un cambio en la clase FormsAuthenticationModule de. En ASP.NET 2.0 para determinar si el usuario está pasando una cookie segura a través de una solicitud de SSL no se ha agregado una comprobación adicional. ASP.NET 2.0, se devuelve la clase FormsAuthenticationTicket si la propiedad FormsAuthentication.RequireSSL está establecida en false o si el atributo Request.IsSecure está establecido en true .
  • La propiedad FormsAuthentication.RequireSSL se establece en false si el atributo requireSSL se establece en false en el archivo de configuración.
  • El atributo Request.IsSecure se establece en true si el servidor Web recibe tráfico SSL.
Puesto que, en este escenario, el servidor Web no está recibiendo tráfico SSL y el atributo requireSSL se establece en true , ambas comprobaciones devuelven false . Como resultado, no se devuelve la clase FormsAuthenticationTicket y se quita la cookie de la colección Request.cookies .

La solicitud que realiza el usuario es anónima en este momento porque el servidor no ha validado todavía las credenciales del usuario. A medida que la solicitud pasa a través de la canalización de ASP.NET, la clase UrlAuthorizationModule comprueba si el usuario tiene acceso a la página. Dado que un usuario anónimo no tiene acceso a una página SecurePage.aspx, la clase UrlAuthorizationModule devuelve un 401 mensaje de error ("Access Denied"), lo que produce una redirección a la página de inicio de sesión.

Para evitar este comportamiento, primero debe quitar el atributo requireSSL del <forms> etiqueta en el archivo de configuración. Tiene que establecer mediante programación el atributo seguro en el FormsAuthentication cookie. El código siguiente lo hace, la cookie de sesión y la cookie de FormsAuthentication .
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;
               }
          }
     }
}

Referencias

Para obtener más información sobre el control de menú , visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
http://msdn2.microsoft.com/en-us/library/2xt3t8a7(vs.80).aspx
Para obtener más información sobre el atributo requireSSL de la propiedad FormsAuthentication.RequireSSL , visite el siguiente sitio Web de MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.requiressl.aspx
Para obtener más información acerca del atributo IsSecure de la propiedad HttpRequest.IsSecureConnection , visite el siguiente sitio Web de MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.httprequest.issecureconnection(vs.71).aspx
Para obtener más información acerca de la clase FormsAuthenticationModule , visite el siguiente sitio Web de MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationmodule.aspx
Para obtener más información acerca de la clase UrlAuthorizationModule , visite el siguiente sitio Web de MSDN:
http://msdn2.microsoft.com/en-us/library/system.web.security.urlauthorizationmodule.aspx


Espero que le útil esta información cuando se utiliza terminación SSL y Microsoft ASP.NET. Recuerde que las columnas de voz de soporte son para usted! Como siempre, quieres enviar ideas sobre temas que desee tratar en futuras columnas o en Knowledge Base utilizando Ask For It.

Propiedades

Id. de artículo: 910444 - Última revisión: jueves, 22 de noviembre de 2007 - Versión: 1.3
La información de este artículo se refiere a:
  • Microsoft ASP.NET 2.0
Palabras clave: 
kbmt kbhowto kbasp KB910444 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 910444
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

Enviar comentarios

 

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