79 votes

Impossible d'obtenir l'authentification windows pour travailler à travers IIS local

J'ai donc créé un nouveau ASP.NET projet MVC en utilisant le modèle intranet. web.config contient les valeurs appropriées (par exemple, <authentication mode="windows"/>).

Si je lance l'application web à l'aide de la VS serveur, elle a l'air fine de la page montre mon Windows de domaine et le nom d'utilisateur et de tous. Toutefois, cela fonctionne dans l'Opéra et Safari ainsi que IE et FF, qui me dit qu'il n'est pas à l'aide de l'authentification Windows à tous (depuis au meilleur de ma connaissance, cela ne fonctionne pas dans tous les navigateurs sauf IE/FF).

La prochaine étape est d'obtenir ce travail à travers IIS local. J'ai créer un fichier hosts entrée de pointage www.mysite.mydomain 127.0.0.1. Donc dans IIS j'ai créer le site web avec une liaison à www.mysite.mydomain et activer l'authentification Windows et désactiver l'authentification anonyme.

J'ai mis en place IE et FF pour activer l'authentification Windows comme suit:

IE

  1. Ajouter une URL à l'intranet du groupe
  2. S'assurer de l'authentification Windows est activé dans les paramètres avancés

FF

Put 'www.mysite.mydomain" en réseau.automatic-ntlm-auth.trusted-uris paramètre de configuration.

Mais quand je dial up www.mysite.mydomain dans IE / FF-je obtenir une invite de connexion. Fait intéressant, même quand je tape mon login Windows ici, il ne parvient toujours pas et me montre l'invite de connexion à nouveau.

Nous n'avons pas d'active directory ici, mais ma compréhension est qu'il devrait fonctionner correctement avec un compte local.

Je ne peux pas penser à autre chose que je dois faire. Toutes les suggestions?

Edit: nous avons récemment opté pour l'utilisation d'Active Directory et le problème reste le même.

Edit: quand je annuler l'invite de connexion, je l'ai pris pour un 'IIS 7.5 Détaillée de l'Erreur de la page avec les informations suivantes:

Erreur HTTP 401.2 - non autorisé Vous n'êtes pas autorisé à afficher cette page en raison d'invalide en-têtes d'authentification.**

169voto

Kevin Stricker Points 11294

Vous avez à la liste blanche d'un domaine spécifié dans le fichier hosts pour que l'authentification windows pour fonctionner.

Copié à partir du lien ci-dessus pour un accès rapide:

  1. Définir le DisableStrictNameChecking entrée de registre à 1. Pour plus d'informations sur cette procédure, reportez-vous à l'article 281308 dans la Base de Connaissances Microsoft
  2. Cliquez sur Démarrer, cliquez sur Exécuter, tapez regedit, puis cliquez sur OK.
  3. Dans l'Éditeur du Registre, recherchez et puis cliquez sur la clé de registre suivante: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  4. Cliquez-droit sur MSV1_0, pointez sur Nouveau et puis cliquez sur Valeur de chaînes Multiples.
  5. Type BackConnectionHostNames, puis appuyez sur ENTRÉE.
  6. Backconnectionhostnamesavec le bouton droit, puis cliquez sur Modifier.
  7. Dans la zone données de la Valeur, tapez le nom d'hôte ou le nom d'hôte pour les sites qui sont sur l'ordinateur local, puis cliquez sur OK.
  8. Quittez l'Éditeur du Registre, puis redémarrez le service IISAdmin.

8voto

kabaros Points 2407

Récemment, j'ai passé trois jours à essayer de résoudre le même problème et ça me rendait fou. Cela se passait sur une charge équilibrée de l'installation où l'un des serveurs d'authentification correctement tandis que l'autre a échoué. Enquêter sur le problème - et, éventuellement, de le résoudre - il s'est avéré être sans rapport avec l'environnement à charge équilibrée, il peut se produire avec n'importe quel serveur pour l'authentification à l'aide de l'Authentification Windows et le serveur est appelée avec un nom autre que celui reconnu par Active Directory

1. Activer l'enregistrement de Kerberos

Pour diagnostiquer correctement votre problème, vous devez activer l'enregistrement de Kerberos sur la machine qui héberge votre site IIS. Pour ce faire, ajoutez l'entrée de registre suivante:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters

Ajouter la Valeur de Registre LogLevel avec ValueType REG_DWORD et de la valeur 0 x 1.

Une fois que vous activez l'enregistrement, alors vous essayez de vous authentifier, vous obtiendrez des erreurs enregistrées dans votre Journal d'Application Windows. Vous pouvez ignorer l'erreur KDC_ERR_PREAUTH_REQUIRED (c'est juste une partie de la poignée de main), mais si vous obtenez l'erreur KDC_ERR_C_PRINCIPAL_UNKNOWN cela signifie que votre ANNONCE contrôleur ne reconnaît pas votre serveur, par conséquent, vous devez suivre les étapes ci-dessous.

2. KDC_ERR_C_PRINCIPAL_UNKNOWN

si vous avez de la KDC_ERR_C_PRINCIPAL_UNKNOWN, que signifie le nom de "mysite.mydomain.com" est différent de la façon dont l'ANNONCE reconnaît votre machine, il est donc impossible de fournir une preuve de ticket kerberos. Dans ce cas, vous devez enregistrer un Nom Principal de Service (SPN) pour " 'www.mysite.mydomain" sur l'ANNONCE.

Sur votre contrôleur AD, exécutez cette commande, vous aurez besoin des privilèges d'Administrateur de Domaine:

Setspn -A HTTP/mysite.mydomain YOUR_MACHINE_HOSTNAME

3. Utiliser une identité personnalisée pour votre pool d'Applications

Enfin, assurez-vous pool d'Applications de l'utilisation d'un compte personnalisé qui appartient à l'Active Directory au lieu d'utiliser NetworkService. Cela peut être fait dans les paramètres avancés de votre pool d'applications.

et .. voila.


Notes: Le problème pourrait (peu probable) d'être lié à avoir plusieurs noms principaux de service enregistrés à la même machine, dans ce cas, vous devez exécuter une commande pour supprimer les doublons de noms principaux de service, mais je doute que cela soit le cas. Aussi, essayez d'ajouter une autre liaison de votre site (qui n'utilise pas un nom personnalisé) quelque chose comme htttp://localhost:custom_port_number et de voir si l'authentification fonctionne. Si cela fonctionne, c'est une indication supplémentaire que vous êtes souffrant du même problème que j'ai eu.

7voto

James Johnson Points 29414

Avez-vous essayez de mettre le domaine en face du nom de l'utilisateur?

DOMAIN\username

Si vous ne disposez pas d'un compte de domaine, essayez de le précéder votre nom d'utilisateur avec le nom de la machine:

MYCOMPUTER\myusername

5voto

Peter Points 5535

Vous devriez vérifier pour voir si vous avez l'Authentification Windows est installé/activé. Cela peut paraître bizarre, mais dans IIS 7, vous devez installer et activer les différentes méthodes d'authentification. Découvrez http://support.microsoft.com/kb/942043/ pour plus d'info, voir la cité la section ci-dessous.

Cause 1
L'application Web est configuré pour utiliser Windows Intégrée l'authentification. Cependant, l'Authentification Windows fonctionnalité n'est pas tourné sur. Ou, l'authentification Windows Intégrée module natif la section de la ApplicationHost.fichier de config ou Web.fichier de configuration n'est pas valide. Pour résoudre ce problème, voir la Résolution 1.

D'origine
Habituellement, lorsque vous essayez d'afficher un asp.net page web hébergée sur IIS et de recevoir une invite de connexion, cela ne signifie pas que vos informations d'identification n'a pas été reçu ou que vous n'êtes pas authentifié. Ce que cela signifie, c'est que le compte que votre site web est en cours d'exécution en vertu n'a pas les permissions nécessaires pour travailler avec les fichiers.

Dans IIS 6 et 7, vous pouvez facilement modifier le compte d'utilisateur que votre pool d'application s'exécute sous. Essayez de changer l'identité du pool d'application pour un compte avec en plus un accès spécialement conçue pour cela. Ou si vous voulez coller avec le compte existant (IUSR_? Réseau De Service?) vous pouvez accorder à ce compte plus les autorisations sur le répertoire où votre site web est stocké.

Cet article est destiné à BizTalk mais n'a presque pas de références à celui-ci et se concentre sur la résolution des problèmes d'autorisations avec IIS et les pools d'application: http://msdn.microsoft.com/en-us/library/aa954062.aspx

4voto

Raul Uria Points 84

Pourquoi IIS local? Pouvez-vous utiliser IIS Express?

si oui, essayez ceci. Il semble IIS Express a par défaut l'Authentification Windows définie sur false. Ce travail pour moi:

Changement < windowsAuthentication enabled="false" >

"true" dans applicationhost.fichier de configuration. (sous C:\Users[Profil]\Documents\IISExpress\config' dossier.)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X