2009-10-20 8 views
2

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

J'avais prévu d'utiliser un HttpModule pour rediriger de http à https, mais cela ne semble pas fonctionner avec l'authentification intégrée (la fenêtre de connexion apparaît avant la redirection). Est-ce que je suis coincé en utilisant la case "require SSL" dans IIS? Cela ne semble pas très convivial car l'utilisateur obtient une bonne page d'erreur au lieu d'une légère redirection s'il oublie d'utiliser l'URL https.

Que feriez-vous dans cette situation?

Répondre

3

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

Nous avons du code similaire à ceci (en supposant que vous utilisez ASP.NET) qui authentifie l'utilisateur, puis nous stockons 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.

+0

Merci pour la réponse. J'ai commencé à pencher vers la désactivation de l'authentification intégrée aujourd'hui après avoir appris que cela ne fonctionnerait probablement pas à l'extérieur du bâtiment. –

+0

Y a-t-il une raison particulière pour laquelle vous avez décidé de ne pas utiliser les fonctionnalités du fournisseur d'adhésion et de rouler les vôtres? –

+0

Nous avions déjà une structure de données existante qui ne fonctionnerait pas avec les fonctionnalités standard du fournisseur d'appartenances .NET. Nous aurions pu implémenter notre propre classe héritée de MembershipProvider mais nous n'avions pas besoin de toutes les propriétés et méthodes dont elle a besoin, nous avons donc décidé de construire notre propre version simplifiée. – JoshMock

6

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

  • créer un nouveau site Web dans IIS
  • se lient à la même adresse IP (et/ou en-tête d'hôte), à votre certificat SSL et le port 443
  • configure ce pour pointer vers la même racine de l'application que le port actuel 80 site
  • test 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; le cas échéant, supprimez l'application et les correspondances de répertoire virtuel (quelqu'un en cas désactive accidentellement la redirection)

A partir de là, tout utilisateur tape simplement le site web adresse dans leur navigateur recevra un message de redirection ultra-rapide de IIS qui les envoie à la version protégée par SSL du site.

Questions connexes