Recepción del mensaje de inicio de sesión utilizando la autenticación integrada de Windows

Tengo una aplicación .NET 3.5 que se ejecuta en IIS 7 en el servidor de Windows 2003 y no puedo lograr que la autenticación de Windows integrada funcione correctamente, ya que me siguen solicitando un inicio de sesión. He configurado la Autenticación de Windows para que esté habilitada en IIS con todos los demás tipos de seguridad deshabilitados y la autenticación / autorización de mi aplicación web.config se configura como:

       

Con esta configuración, estoy esperando la verificación de la escena del usuario de Windows para permitir el acceso y denegar usuarios anónimos. Sin embargo, lo que obtengo es una ventana emergente de inicio de sesión de Windows cuando bash acceder al sitio.

He estado solucionando este problema por unos días y no puedo resolver el problema. En función de las publicaciones con problemas similares, confirmé que mi URL no incluye ningún punto, comprobé dos veces que mi configuración de IE está configurada para Habilitar la Autenticación de Windows integrada y también agregué mi URL a mis sitios de intranet, pero sigo recibiendo la ventana emergente.

Para solucionarlo aún más, habilité la autenticación anónima en IIS y modifiqué mi archivo web.config al que me permite acceder directamente y luego agregué Response.Write (System.Security.Principal.WindowsIdentifity.getcurrent (). User.name.toString () ) para tratar de ver qué usuario se está utilizando en la autenticación. El resultado que obtengo es IIS APPPOOL \ myapp, que obviamente es el grupo de aplicaciones de IIS para mi aplicación.

Realmente aprecio cualquier ayuda que alguien pueda brindar, de modo que sigo usando solo la autenticación de Windows, pero no obtengo la ventana emergente y la autenticación de Windows se realiza contra el usuario real de Windows.

Gracias.


Nota adicional luego de la resolución de problemas:

Recién noté que cuando falla el inicio de sesión y aparece nuevamente el indicador de inicio de sesión de Windows, aparece el nombre de usuario que intentó iniciar sesión como “SERVERNAME” \ “USERNAME”, lo que me llevó a creer que intentaba validar al usuario contra el servidor vs. dominio. Para confirmar esto, creé una cuenta de usuario local directamente en el servidor de la aplicación con el mismo nombre de usuario y contraseña que el usuario del dominio de red e intenté iniciar sesión de nuevo. El resultado fue que recibí el mensaje de inicio de sesión nuevamente, pero esta vez, cuando ingresé el nombre de usuario y la contraseña, pude iniciar sesión correctamente. El usuario de la red y el servidor de la aplicación están en el mismo dominio, por lo que realmente no estoy seguro de por qué la autenticación IIS apunta a las cuentas del servidor de aplicaciones locales y no a las cuentas de dominio. Me doy cuenta de que esta es una pregunta de IIS en este momento, por lo que también publico en forums.iis.net, pero agradezco cualquier consejo que alguien pueda tener ya que ha estado solucionando este problema por días.

Tengo un servidor de Windows 2008 en el que estoy trabajando, por lo que mi respuesta no es exactamente la misma que tiene el OP en un servidor de Windows 2003.

Esto es lo que hice (registrando esto aquí para poder encontrarlo más tarde).

Estaba teniendo este mismo problema:

prompt de login

En mi archivo Web.config , tenía esta sección:

        

En IIS, todo esto parece estar resuelto en el icono Autenticación .

  1. Editar permisos: asegúrese de que su cuenta ASP.NET tenga permiso. El mío no fue agregado originalmente.

Permiso de ASP.NET

Ahora ve a las características de Autenticación :

Funciones de autenticación

Habilite la autenticación anónima con el IUSR :

Autenticación anónima

Habilite la Autenticación de Windows , luego haga clic con el botón derecho para configurar los Proveedores .

¡NTLM necesita ser PRIMERO!

Autenticación de Windows

A continuación, compruebe que en Configuración avanzada … la protección ampliada es Aceptar y habilitar La autenticación en modo kernel está COMPROBADA:

Ajustes avanzados

Una vez que hice esto, volví a mi aplicación web, hice clic en el enlace Examinar e inicié sesión sin tener que proporcionar mis credenciales nuevamente.

Espero que esto sea beneficioso para muchos de ustedes, y espero que me sea útil más tarde también.

Solo para el beneficio de otras personas. Si el error es un 401.1 Unauthorized y su código de error coincide con 0xc000006d , entonces se está ejecutando una “característica” de seguridad que bloquea las solicitudes al FQDN o encabezados de host personalizados que no coinciden con su nombre de máquina local:

Siga este artículo de soporte para solucionar el problema:

http://support.microsoft.com/kb/896861

Esto me tomó un tiempo porque los comentarios de todos los demás aquí no pudieron ayudarme. ¡Encontré este artículo y lo arregló!

Tuve un problema similar por el cual quería proteger solo una parte determinada de mi sitio web. Todo funcionó bien excepto en IE. Tengo tanto la autenticación anónima como la de Windows activadas. Para Anonymous, la identidad se establece en la identidad del grupo de aplicaciones. El problema fue con la Autenticación de Windows. Después de investigar un poco, encendí el violín y descubrí que estaba usando Kerberos como proveedor (en realidad está configurado para Negociar de manera predeterminada). Lo cambié a NTLM y eso lo solucionó. HTH

Daudi

Agregue el permiso [Usuarios del dominio] a su seguridad web.

  • Haga clic derecho en su sitio en IIS en la carpeta Sitios
  • Haga clic en Editar permisos …
  • Seleccione la pestaña Seguridad
  • En la sección Grupo o nombres de usuario, haga clic en el botón Editar …
  • En la ventana emergente Permisos, debajo de los nombres de grupo o usuario, haga clic en Agregar …
  • Ingrese [Usuarios del dominio] en los nombres de los objetos para seleccionar el área de texto y haga clic en Aceptar para aplicar el cambio
  • Haga clic en Aceptar para cerrar la ventana emergente Permisos
  • Haga clic en Aceptar para cerrar la ventana emergente Propiedades y aplicar su nueva configuración

No cree errores en su servidor cambiando todo. Si tiene un aviso de Windows para iniciar sesión cuando usa la Autenticación de Windows en 2008 R2, solo vaya a Providers y mueva UP NTLM para cada aplicación. Cuando Negotiate es el primero en la lista, la Autenticación de Windows puede detenerse para trabajar en la propiedad de una aplicación específica en 2008 R2 y se le puede pedir que ingrese el nombre de usuario y la contraseña que nunca funcionen. Eso sucede cuando realizaste una actualización de tu aplicación. Solo asegúrese de que NTLM sea ​​el primero en la lista y nunca volverá a ver este problema.

Esto me lo arregló.

Mi servidor y PC cliente es Windows 7 y están en el mismo dominio

  1. en iis7.5, habilite la autenticación de Windows para su Intranet (deshabilite todas las demás autenticaciones). También, no es necesario mencionar la autenticación de Windows en el archivo web.config.

  2. luego vaya a la PC del Cliente. IE8 o 9- Herramientas-Opciones de Internet-Seguridad-Intranet Local-Sitios-avanzados-Agregue su sitio (saque la marca de verificación “requerir servidor …” no necesita

  3. IE8 o 9- Herramientas-Opciones de Internet-Seguridad-Intranet local-Nivel personalizado-autenticación-uso-inicio de sesión-seleccione inicio de sesión automático con nombre de usuario y contraseña actuales

  4. guarde esta configuración … ya terminó. No se requieren más datos de usuario y contraseña.

  5. Asegúrese de que, dado que su PC cliente es parte del dominio, debe tener un GPO para esta configuración, o bien, esta configuración se revertirá cuando el usuario inicie sesión en Windows la próxima vez.

Puede estar relacionado con el navegador. Si está utilizando IE, puede ir a Configuración avanzada y comprobar que la checkbox “Habilitar autenticación integrada de Windows” esté marcada.

Si su URL tiene puntos en el nombre de dominio, IE lo tratará como si fuera una dirección de Internet y no local. Tienes al menos dos opciones:

  1. Obtenga un alias para usar en la URL para reemplazar server.domain. Por ejemplo, myapp.
  2. Siga los pasos a continuación en su computadora.

Vaya al sitio y cancele el diálogo de inicio de sesión. Deje que esto suceda:

enter image description here

En la configuración de IE:

enter image description here

enter image description here

enter image description here

WindowsIdentity.GetCurrent es correcto: debe obtener el usuario de APPPOOL. Esto se debe a que el proceso ASP.NET, que está ejecutando su código, es la identidad actual. Si desea que el usuario regrese a la identidad del sitio, deberá agregar la siguiente línea en su web.config:

  

Esto hace que el proceso asum la identidad del usuario que solicita la página. Todas las acciones se realizarán en su nombre, por lo que cualquier bash de leer carpetas en la red o acceder a los recursos de la base de datos y similares significará que el usuario actual necesitará permisos para esas cosas. Puede leer más sobre la suplantación aquí . Tenga en cuenta que, dependiendo de cómo esté configurada su topología de servidor web / base de datos, puede encontrarse con problemas de delegación con la suplantación activada.

Pero su problema original es que parece que no se puede determinar la identidad y se obtiene una ventana emergente de inicio de sesión. Notaré que no necesita el bloque si ha deshabilitado la autenticación anónima en IIS. Nunca lo incluimos (excepto en bloques especiales de y cosas por el estilo), así que diría que puede intentar eliminarlo e intentarlo de nuevo. Todo lo demás suena bien, sin embargo.

No especificó qué usuario ejecuta el grupo de aplicaciones en IIS. ¿Es una cuenta personalizada o es la predeterminada? Si es personalizado, ¿es una cuenta de dominio o una cuenta local en el servidor web? Las cuentas personalizadas a veces pueden requerir algunos pasos más, como registrar un SPN. Además, puede ser un problema que la cuenta personalizada no tenga permiso en AD para resolver la cuenta del usuario entrante.

También puede consultar los registros de IIS para ver qué respuesta se está devolviendo. Lo más probable es que sea un 401, pero debería tener un número secundario después del 401.2 o algo así. Ese subnúmero a veces puede ayudar a determinar el problema de raíz. Este artículo de KB enumera cinco.

En mi caso, la configuración de la autorización no se configuró correctamente.

Tuve que

  1. abra las Reglas de Autorización de .NET en el Administrador de IIS

    abra las Reglas de Autorización de .NET en el Administrador de IIS

  2. y eliminar la regla de denegar

    eliminar la regla de denegar

En nuestra Intranet, el problema se resolvió en el lado del cliente modificando la configuración en seguridad, como se muestra aquí. Cualquiera de las casillas de verificación de la derecha funcionó para nosotros.

Opciones de Internet IE

Acabo de resolver un problema similar con una aplicación ASP.Net.

Síntomas: podría iniciar sesión en mi aplicación utilizando un usuario local, pero no un usuario de dominio, incluso si la máquina se unió correctamente al dominio (como dices en tu nota adicional). En el visor de sucesos de seguridad, hubo un evento con ID = 4625 “Identificador de dominio incoherente”.

Solución: Encontré la solución aquí . El problema era que mis máquinas de prueba eran máquinas virtuales clonadas (Windows Server 2008 R2, un controlador de dominio y un servidor web). Ambos tenían el mismo SID de la máquina, lo que aparentemente causaba problemas. Aquí esta lo que hice:

  1. Elimina el servidor web del dominio.
  2. Ejecute c: \ Windows \ System32 \ Sysprep \ Sysprep.exe en la máquina virtual.
  3. Reinicia la VM.
  4. Únete al servidor web al dominio.

Se pierden algunas configuraciones en el proceso (preferencias del usuario, IP estática, recrear el certificado autofirmado), pero ahora que las he vuelto a crear, todo está funcionando correctamente.

También tuve el mismo problema. Probé la mayoría de las cosas que se encuentran en este y otros foros.

Finalmente fue exitoso después de hacer un poco de RnD propio.

Ingresé a la configuración de IIS y luego a las opciones de permiso de mi sitio web agregué mi grupo de usuarios de dominio de organizaciones.

Ahora que todos los usuarios de mi dominio tienen acceso a ese sitio web, no tuve ese problema.

Espero que esto ayude

¿Has intentado iniciar sesión con tu prefijo de dominio, por ejemplo, DOMINIO \ Nombre de usuario? IIS 6 usa de manera predeterminada el equipo host como dominio predeterminado, por lo que especificar el dominio al inicio de sesión puede resolver el problema.

Probé los trucos de configuración de IIS anteriores y el hack de registro de bucle invertido, y revisé y recreé los permisos del grupo de aplicaciones y una docena de cosas más y aún no pude deshacerme del bucle de autenticación que se ejecutaba en mi estación de trabajo de desarrollo con IIS Express o IIS 7.5. desde una sesión de navegación local o remota. Recibí cuatro respuestas de estado 401.2 y una página en blanco. El mismo sitio exacto implementado en mi servidor de transición IIS 8.5 funciona perfectamente.

Finalmente noté el marcado en el cuerpo de respuesta que el navegador había dejado en blanco y que contenía la página predeterminada para iniciar sesión correctamente. Decidí que el manejo de errores personalizados para ASP.NET y HTTP para el error 401 impedía / interfería con la autenticación de Windows. pero no el servidor de etapas Pasé varias horas jugueteando con esto, pero tan pronto como eliminé el manejo personalizado solo por el error 401, la estación de trabajo volvió a la normalidad. Les presento esto como una forma más de disparar a sus propios pies.

La autenticación de Windows en IIS7.0 o IIS7.5 no funciona con kerberos (provider = Negotiate) cuando la identidad del grupo de aplicaciones es ApplicationPoolIdentity One tiene que usar el servicio de red u otra cuenta incorporada. Otra posibilidad es utilizar NTLM para que Windows Authenticatio funcione (en Autenticación de Windows, Proveedores, poner NTLM en la parte superior o eliminar negociar)

chris van de vijver

Tuve el mismo problema porque el usuario (Identidad) que utilicé en el grupo de aplicaciones no estaba debajo del grupo IIS_IUSRS. Se agregó al usuario al grupo y todo funciona

En mi caso, la solución (además de los ajustes sugeridos anteriormente) era reiniciar la computadora de desarrollo local / IIS de mi / usuarios (servidor de alojamiento). Mi usuario acaba de agregarse al grupo de seguridad de AD recién creado, y la política no se aplicaba a la cuenta de AD del usuario hasta que cerré la sesión o reinicié mi computadora.

Espero que esto ayude a alguien.

Me encontré con el mismo problema de solicitud de credenciales e hice una búsqueda rápida y nada en Internet lo solucionaría. Tomó algún tiempo encontrar el problema, una tontería.

En IIS -> Configuración avanzada -> Credencial de ruta física (está vacía)

Tan pronto como agregué una ID de máquina (dominio / usuario) que tiene acceso a la máquina virtual / servidor, la solicitud de contraseña se detendría.

Espero que esto ayude

Estaba teniendo este problema en .net core 2 y después de revisar la mayoría de las sugerencias de aquí parece que nos perdimos una configuración en web.config

  

La configuración correcta era forwardWindowsAuthToken = “true” que parece obvio ahora, pero cuando hay tantas situaciones para el mismo problema, es más difícil identificar

Editar: también encontré útil el siguiente artículo Msdn que pasa por solucionar el problema.

Obtuve el mismo problema y se resolvió cambiando la identidad del grupo de aplicaciones del grupo de aplicaciones bajo el cual se ejecuta la aplicación web a NetworkService. enter image description here