Question

J'ai un site Web administratif sur notre intranet qui utilise actuellement Authentification Windows intégrée via IIS.Nous aimerions déplacer cette application vers un site Web public et la sécuriser avec SSL afin que nos utilisateurs puissent y accéder de n'importe où.

J'avais prévu d'utiliser un HttpModule pour rediriger de http vers https, mais il ne semble pas que cela fonctionne avec l'authentification intégrée (la fenêtre contextuelle de connexion apparaît avant la redirection).

Suis-je bloqué en cochant la case « exiger SSL » dans IIS ?Cela ne semble pas très convivial puisque l'utilisateur obtient une belle page d'erreur au lieu d'une redirection douce s'il oublie d'utiliser l'URL https.

Que feriez-vous dans cette situation?

Était-ce utile?

La solution

Nous avons eu des problèmes similaires sur notre site intranet et fini par passer de l'authentification Windows intégrée pour demander leur nom d'utilisateur réseau / mot de passe directement sur le site. De cette façon, nous pouvons les rediriger vers HTTPS ou d'autres choses sans se soucier quand la fenêtre d'authentification apparaît.

Nous avons un code similaire à ceci (en supposant que vous utilisez ASP.NET) qui authentifie l'utilisateur, puis nous enregistrons l'état d'authentification dans un 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;
}

Il a fini par nous sauver des tonnes de maux de tête et de la frustration en manipulant toutes les authentifications dans l'application plutôt que de dépendre des services Internet.

Autres conseils

J'ai résolu cela à chaque fois comme un problème IIS, pas comme un problème de code :

  • créer un nouveau site Web dans IIS
  • liez-le à la même adresse IP (et/ou en-tête d'hôte), à ​​votre certificat SSL et au port 443
  • configurez-le pour qu'il pointe vers la même racine d'application que le site actuel du port 80
  • testez pour vous assurer que la connexion directe à https://site donne les réponses attendues
  • reconfigurer le site d'origine (toujours lié au port 80) pour utiliser la fonctionnalité de redirection HTTP
  • configurer le site du port 80 pour rediriger vers le site du port 443 ;éventuellement, supprimez les mappages d'application et de répertoire virtuel (au cas où quelqu'un désactiverait accidentellement la redirection)

À partir de là, tout utilisateur qui saisit simplement l'adresse du site Web dans son navigateur recevra un message de redirection ultra-rapide d'IIS qui l'enverra vers la version protégée par SSL du site.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top