2012-02-01 11 views
6

Tenemos un sitio de intranet simple en MVC3 y marco de entidades. Todo funciona bien para ejecutar depuración desde Visual Studio. Cuando publico el sitio en mi servidor local de cuadros IIS7.5 o en un cuadro dev en el mismo dominio, me piden un nombre de usuario y una contraseña y no se conectan al sitio. Simplemente devuelve un error de 401,1 y curiosamente muestra¿Por qué mi autenticación de ventanas de sitio de intranet MVC3 no funciona cuando se publica

Logon Method Not yet determined 
Logon User Not yet determined 

He verificado que la autenticación de Windows está habilitado y autenticación anónima está desactivada. la aplicación está utilizando la aplicaciónPoolIdentity, pero lo he intentado con los servicios de red sin ninguna diferencia. El webconfig incluye

<authentication mode="Windows" /> 

y lo he intentado con y sin la sección de autorización.

<authorization> 
    <allow users="*" /> 
</authorization> 

La única otra cosa que he encontrado en línea implicado el cambio de una entrada de registro, pero esto finalmente estará en un servidor de producción así que no estoy cómodo haciendo cambios de registro sólo para esto.

que se ejecutan localmente con este bloque de código devuelve toda la información esperada

<div id="title"> 
    <h4> Environment.UserName: @Environment.UserName 
    @DateTime.Now.Millisecond.ToString() </h4> 
    @foreach (var role in Roles.GetRolesForUser()) 
    { 
     role.ToString(); <br /> 
    } 
</div> 
<div id="logindisplay"> 
    Context.User.Identity.Name <strong>@Context.User.Identity.Name</strong>!<br /> 
    @Environment.UserDomainName 
</div> 

Es una aplicación Web MVC3. Los conmutadores de autenticación IIS son

Anonymous Authentication  Disabled 
ASP.NET Impersonation  Disabled 
Forms Authentication   Disabled 
Windows Authentication  Enabled 

¿Alguna otra idea o cosas que me faltan?

Respuesta

3

este artículo en MSDN ilustra cómo configurar un IIS 7 MVC3 Intranet Sitio web: http://msdn.microsoft.com/en-us/library/gg703322(VS.98).aspx

La pieza interesante que se relaciona a su salud es probablemente la última sección sobre la suplantación. Si ejecuta su sitio como Autenticación de Windows pero tiene suplantación desactivada, estará leyendo/ejecutando los archivos para el sitio web utilizando la identidad autenticada. Eso significa que cada usuario que quiera acceder al sitio necesitará permisos de carpeta/archivo.

Para evitar eso, use la autenticación de Windows para permitir que los usuarios se autentiquen pero usen Suplantación para usar una única identidad para acceder a la carpeta/archivos.

+0

Sí, había visto ese artículo y soluciona el problema haciendo que el sitio sea una aplicación en el sitio web predeterminado. Tenía la esperanza de tenerlo como una aplicación web independiente, pero esta es la única forma en que pude hacer que funcione, aunque causó algunos problemas de ruta que aún tengo que solucionar. Gracias. – Brian

+0

¡Me alegro de poder ayudar! ¿Qué tipo de problemas de ruta? Eso suena como un problema interesante. – AdamV

+0

ejecutando en rutas relativas a la depuración funciona bien pero la aplicación se confunde cuando se ejecuta en el servidor, así que cambié a rutas absolutas solo para que muestre imágenes estáticas. La intención es lanzar aplicaciones web y de escritorio desde el portal y las rutas para las aplicaciones de escritorio se estropean. Las imágenes que creo que puedo arreglar con un directorio virtual. Las rutas de las aplicaciones no estoy seguro. Estoy usando process.start para lanzarlos. Puedo comenzar otra pregunta cuando salga de una crisis diferente. :-) – Brian

1

Necesita configurar esto en IIS para utilizar la Autenticación de Windows.

  1. abrir el Administrador de IIS
  2. Ir a donde su aplicación reside en IIS
  3. En Ver contenido doble clic autenticación
  4. Habilitar autenticación de Windows y deshabilitar Anónimo Autenticación

Si solo está haciendo esto en la AppPool, la configuración de la aplicación anulará esto.

Cuando dicen:

He verificado que la autenticación de Windows está habilitado y autenticación anónima está desactivada.

¿Dónde exactamente estableciste esto? No estoy seguro de qué sistema operativo está ejecutando en la máquina donde se le solicita, pero ciertos sabores de Windows no son compatibles con la Autenticación de Windows (es decir, Windows 7 Home no).

+0

La autenticación de Windows está configurada en el sitio web. Es una intranet de oficina y todos los clientes ejecutan Windows 7 pro. – Brian

+0

¿Puede enumerar todos los conmutadores de autenticación y sus configuraciones para su sitio web? Además, ¿es este un sitio web o una aplicación web? –

+0

actualizó el op con la información. es una aplicación mvc3. – Brian

2

Parece que la autenticación de Windows funciona, ya que se le solicitan credenciales al abrir la página ... debe poner sus credenciales allí y debe llevarlo a su página web ... o el problema es que no pueden abrir su página después de poner las credenciales correctas?

Lo que me gustaría probar primero es cambiar su modo de grupo de aplicaciones de clásico a Integrado (o viceversa).

Entonces, parece que sus máquinas están en algún dominio? En ese caso, verifique que está colocando las credenciales correctas. Debe poner <domain>\<your_username> como nombre de usuario. Además, si eso no funciona, intente agregar y quitar su máquina del dominio y vuelva a intentarlo. Puede haber más ideas, hágame saber cómo va esto y si es posible, ¿cuál es el resultado del comando nltest.exe /SC_QUERY:domain_name?

1

Estoy teniendo el mismo problema. Al crear una nueva aplicación en sitios web predeterminados, las cosas funcionan bien. Pero cuando creo un nuevo sitio web y pongo los archivos allí, no puedo hacer que esto funcione. Sigo recibiendo un mensaje de inicio de sesión. Estoy usando el mismo grupo de aplicaciones para mi nuevo sitio y he configurado los permisos del directorio para permitir el control total de iis_isuser y otros, ya que esta es una máquina de desarrollo.

Cuestiones relacionadas