Pregunta

Tengo una página web en la intranet administrativa que actualmente utiliza Autenticación integrada de Windows a través de IIS. Nos gustaría mover esta aplicación a un sitio web público y seguro que con SSL para que nuestros usuarios puedan acceder a ella desde cualquier lugar.

Había estado planeando sobre el uso de un HttpModule de redireccionamiento de HTTP a HTTPS, pero no parece que esto funciona con la autenticación integrada (el aparece de inicio de sesión emergentes antes de la redirección).

estoy atascado utilizando la casilla "requerir SSL" en IIS? Esto no parece tan fácil de usar ya que el usuario recibe una página de error de grasa agradable en lugar de una redirección suave si se olvidan de usar la URL https.

¿Qué hacer en esta situación?

¿Fue útil?

Solución

Hemos tenido problemas similares en nuestro sitio de intranet y terminamos pasando de autenticación integrada de Windows para solicitar su nombre de usuario de red / contraseña directamente en el sitio. De esa manera podemos redirigirlos a HTTPS u otras cosas sin tener que preocuparse cuando en la pantalla de autenticación emergentes hacia arriba.

Tenemos un código similar a este (suponiendo que está utilizando ASP.NET) que autentica al usuario, y luego almacenar el estado de autenticación en una cookie.

public static bool AuthenticateUser(string username, string password)
{
    System.DirectoryServices.DirectoryEntry _entry = new System.DirectoryServices.DirectoryEntry(ldap_path, username, password, System.DirectoryServices.AuthenticationTypes.Delegation);

    bool _authenticated = false;
    try
    {
        Object _o = _entry.NativeObject;
        _authenticated = true;
    }
    catch
    {
        _authenticated = false;
    }
    finally
    {
        // Avoids the "multiple connections to server not allowed" error.
        _entry.Close();
        _entry.Dispose();
    }

    return _authenticated;
}

Al final resultó que el ahorro de toneladas de dolor de cabeza y frustración por el manejo de toda la autenticación en la aplicación en lugar de depender de IIS.

Otros consejos

He resuelto esto como un problema de IIS cada vez, no es un problema de código:

  • crear un nuevo sitio web en IIS
  • se unen a la misma dirección IP (y / o encabezado de host), a su certificado SSL y al puerto 443
  • Configurar esta a punto de la misma raíz de la aplicación como la corriente puerto 80 sitio
  • prueba para asegurarse de que la conexión directa a https: // sitio da las respuestas esperadas
  • reconfigure el sitio original (todavía unido al puerto 80) para utilizar la función de redirección HTTP
  • Configurar el sitio del puerto 80 para redirigir al puerto 443 sitio; opcionalmente, eliminar las asignaciones de directorio de aplicaciones y virtuales (en caso de que alguien accidentalmente desactiva la redirección)

A partir de entonces, cualquier usuario que sólo escribe la dirección de sitio web en el navegador recibirá un mensaje de redirección velocidad del rayo de IIS que los envía a la versión con protección SSL del sitio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top