2010-05-09 16 views
8

Estamos intentando crear una solución de inicio de sesión único entre dominios utilizando ASP.NET MVC.Inicio de sesión único ASP.NET MVC

¿Existen soluciones o tutoriales existentes?

+1

Pueden los servidores hablar unos con otros o para el caso de la misma DB Si lo que la solución es bastante sencilla –

+0

bueno. - Sí. www.example.com: es un sitio web único con base de datos. La base de datos es común en todos los inicios de sesión, por lo que es básicamente el sitio web "remoto" el que debe autenticarse con www.example.com, etc. – Mike

Respuesta

10

Si le aplicaciones Web están en el mismo servidor y mismo dominio entonces todo lo que necesita hacer es asegurarse de que el validationKey y clave de cifrado son los mismos en el web.config (machineKey).

En su ejemplo, necesitará añadir el vale de autenticación a la cadena de consulta, para transportarlo de vuelta al otro dominio, por ejemplo:

public void Login(string userName, string password) 
{ 
    if(AuthenticateUser(userName,password)) 
    { 
     Response.Redirect(String.format("{0}?{1}={2}"), 
      Request.QueryString["ReturnUrl"], 
      FormsAuthentication.FormsCookieName, 
      FormsAuthentication.GetAuthCookie(userName, false).Value)); 
    } 
} 

En la aplicación local tiene que habilitar la autenticación de formularios sin cookies y permitir que los usuarios autenticados provengan de aplicaciones externas configurando enableCrossAppRedirect.

<authentication mode="Forms"> 
    <forms enableCrossAppRedirect="true" cookieless="useUri" /> 
</authentication> 

Notas:

  1. Véase también FormsAuthentication.RedirectFromLoginPage - http://msdn.microsoft.com/en-us/library/ka5ffkce.aspx.

  2. En mi caso ReturnUrl perdido parte de dominio de la URL :(

Cuestiones relacionadas