2012-04-23 13 views
24

primer post aquí en stackoverflow pero me encanta el lugar! ...ACS instalados pero MVC 4.0 aplicación redirige todavía y no lo encuentra Login.aspx

He creado con éxito una solicitud de modelo híbrido Azure en pleno funcionamiento el uso de MVC 4. Publicado y funciona de maravilla. Ahora quiero agregar ACS para la autenticación a mi sitio. Seguí all the steps, pero cuando ejecuto la aplicación en simulación, no puedo volver a dirigirla a ACS y ofrece la página que indica que no pudo encontrar login.aspx.

He creado una solución de sitio web simple solo para demostrar que mi ACS está configurado correctamente y funciona muy bien. Noté que los archivos web.config de las dos soluciones eran muy diferentes.

¿Alguien ha intentado hacer esto todavía? Cualquier ayuda sería apreciada.

--------- ----------- Solución

finalmente conseguí que todo funcione. La clave era eliminar las referencias de WebMatrix.WebData ya que no necesitaba hacer mi propia autenticación. Lo siguiente vino de MVC4 Release notes.

Cuando WebMatrix.WebData.dll se incluye en el directorio/bin de una aplicación ASP.NET MVC 4, toma el URL para la autenticación de formularios. Agregar el ensamblado WebMatrix.WebData.dll a su aplicación (por ejemplo, al seleccionar "Páginas web ASP.NET con sintaxis Razor" al usar el cuadro de diálogo Agregar dependencias desplegables) anulará el inicio de sesión de autenticación redirigido a/cuenta/inicio de sesión en lugar de/cuenta/iniciar sesión como se espera por el controlador de cuenta predeterminado de ASP.NET MVC.

+0

Desearía poder votar esto dos veces. Me salvó un mundo de dolor tratando de descubrir por qué mi implementación de ACS de repente había desaparecido. – JcFx

+0

Estoy teniendo el mismo problema en VS2012 en Windows 8 ... no hay más 'Agregar referencia STS' ... ahora es "Identidad y acceso ..." y ¡no funciona! – markti

+0

Tengo el mismo problema y su publicación me hace el día –

Respuesta

3

Abra su archivo web.config.

Ubique el nodo Autenticación.

cambiarlo desde:

<authentication mode="Forms" /> 

Para:

<authentication mode="None" /> 

comentario aquí, si no ayuda, y lo que es el resultado después de los cambios en web.config.

Como una pregunta complementaria: ¿cómo agregaron una referencia al espacio de nombres ACS? Mediante "clic derecho -> Agregar referencia STS", o cambiaron manualmente la web.config?

Asegúrese de que los módulos necesarios están registrados en el servidor web:

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <add name="ClaimsPrincipalHttpModule" type="Microsoft.IdentityModel.Web.ClaimsPrincipalHttpModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" /> 
     <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" /> 
     <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" /> 
    </modules> 
    ... 
</system.webServer> 

También asegúrese de que usted tiene la sección microsoft.identityModel, y tiene federatedAuthentcation nodo dentro de ella:

<federatedAuthentication> 
     <wsFederation passiveRedirectEnabled="true" issuer="https://[your_namespace].accesscontrol.windows.net/v2/wsfederation" 
         realm="http://127.0.0.1:81/" requireHttps="false" /> 
     <cookieHandler requireSsl="false" /> 
</federatedAuthentication> 

Donde "reino" será una URL válida para la aplicación Realying Party. Y requireHttps = "false" es simplificar el proceso de desarrollo.

Al depurar de forma local, asegúrese de que está ejecutando el proyecto de la nube (que utiliza IIS), y no el proyecto Web (que usará Cassini/webdevserver, que no comprende la sección system.webServer!)

Cuestiones relacionadas