2009-04-09 10 views
14

J'ai un site Web s'exécutant sur IIS sur mon hôte local. Ce site Web dispose de la sécurité d'annuaire définie pour autoriser uniquement l'authentification Windows intégrée. Il fait partie d'un intranet et doit s'authentifier auprès de nos comptes de domaine. Je me connecte ensuite à SQL Server avec Integrated Security = SSPI dans la chaîne de connexion. Cela fonctionne très bien avec Microsoft Internet Explorer, il m'authentifie automatiquement lorsque je suis connecté au domaine, et je peux voir que le logon_user est mon compte de domaine, et la chaîne de connexion SQL Server fonctionne très bien.Authentification Windows intégrée avec IIS, Firefox et SQL Server

Cependant, lorsque je me connecte avec Firefox, les choses sont différentes. Tout d'abord, je suis invité à m'authentifier, ce qui est bien et correct car Firefox n'est pas configuré pour faire confiance à l'hôte local assez pour envoyer automatiquement les informations d'identification (et je sais déjà comment introduire cette confiance, ce n'est pas le problème). Je me connecte ensuite, ce qui est bien, à condition d'entrer les détails du compte de domaine tout va bien. En effet, une instruction de débogage ou deux montrent que logon_user est toujours mon compte de domaine et tout va bien.

Cependant, quand je viens pour vous connecter à SQL Server (qui est en cours d'exécution sur une boîte de serveur distant, auquel mon compte de domaine a privilèges sysadmin), je reçois l'erreur suivante:

Microsoft OLE DB Provider for SQL Server (0x80040E4D) 
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. 

Cela indique pour moi que quelque chose ne va pas dans la pile d'authentification, pour une raison quelconque, IIS ne s'exécute pas en tant que compte authentifié lorsque je m'authentifie en utilisant l'authentification Windows de Firefox.

Cela fonctionne également très bien avec Google Chrome.

Des suggestions?

+0

Exécutez SQL et IIS sur la même machine? – Tomalak

+0

Non, SQL Server se trouve sur un serveur sécurisé distant. – THEMike

Répondre

27

AS noted par Pontus Gagge, IIS doit transmettre un ticket Kerberos à SQL Server. C'était suffisant pour donner un pourboire à mon Google-fu dans la bonne direction. Firefox prend en charge Kerberos, mais vous devez lui indiquer les domaines auxquels il fait confiance pour envoyer également les jetons Kerberos.

  1. Ouvrez Firefox
  2. Dans la barre d'adresse tapez: about: config
  3. Firefox3.x et ultérieure, vous devez accepter que vous allez procéder avec prudence.
  4. Après le chargement de la page de configuration, dans le type de boîte de filtre: network.negotiate-auth
  5. Modifier network.negotiate-auth.trusted-uri en double cliquant sur la ligne et entrez yourdomain.com
  6. Plusieurs domaines peuvent être ajoutée par des virgules les délimitant tels que yourdomain.com, yourotherdomain.com

note: Ceci estpas la même chose que gbn « s solution qui configure simplement Firefox pour ne vous invite pas à entrer dans les détails du compte de domaine sur logi n.

De plus, si vous avez déjà essayé de vous authentifier via la pile de votre session Firefox actuelle, vous devrez redémarrer Firefox pour que cela fonctionne.

+0

Pour l'anecdote, j'ai continué à avoir le problème après avoir fait ces changements dans Firefox Developer Edition en utilisant http: // localhost comme domaine. Je devais aussi faire la solution de gbn ci-dessous pour passer le message "Login failed ...". C'était une combinaison de l'ajout de l'URI dans les deux endroits qui ont finalement fonctionné. J'ai confirmé que l'enlèvement de l'un ou l'autre provoque le retour du problème. – PhilDearmore

+0

Désolé, j'ai parlé trop tôt. Après l'avoir vérifié, il s'avère que le seul que j'ai besoin est network.automatic-ntlm-auth.trusted-uris. – PhilDearmore

5
  1. Ouvrez Firefox
  2. Dans la barre d'adresse tapez: about: config
  3. Firefox3.x et ultérieure, vous devez accepter que vous allez procéder avec prudence.
  4. Après le chargement de la page de configuration, dans le type de boîte de filtre: network.automatic
  5. Modifier network.automatic-ntlm-auth.trusted-uri en double cliquant sur la ligne et entrez http://www.replacewithyoursite.com
  6. Plusieurs sites peuvent être ajoutés par virgule les délimitant tels que http://www.replacewithyoursite.com, http://www.replacewithyourintranetsite.com

J'utilise aussi IEtab add-on pour les sites intranet

+0

Je sais comment faire, j'ai échappé au passage, ce n'est pas un problème. Le fait que lorsque je me suis authentifié, il ne passera pas cela à SQL Server est le problème. – THEMike

5

IIS a besoin pour passer un billet Kerberos à SQL Server pour que ce scénario fonctionne. MSIE récupère le ticket de session du poste de travail, tandis que Firefox négocie sa propre authentification (et non Kerberos).

Vérifiez par ex. this dense blog post comme point de départ pour comprendre ce qui est nécessaire. Je ne suis pas sûr si FF supporte MS-Kerberos. Sachez que même l'obtention de l'authentification MSIE-> IIS-> SQL Server peut être difficile si vous avez une mauvaise version ou une configuration de confiance ...

Questions connexes