Cómo implementar el inicio de sesión único en diferentes versiones de .net
El llamado inicio de sesión único (Single Sign On) significa que en múltiples sistemas de aplicaciones, los usuarios solo necesitan iniciar sesión una vez para acceder a todos los sistemas de aplicaciones de confianza mutua, de hecho, para que los programadores lo implementen técnicamente. it, El problema de compartir cookies entre varios nombres de dominio diferentes
Recientemente, agregué un subproyecto para ERP que se implementa en otra máquina, vinculado al subproyecto en el sistema antiguo original. y llama al antiguo proyecto original Iniciar sesión en .net 2.0 para implementar el inicio de sesión único. Después de intentarlo N veces sin éxito, finalmente se determinó que los métodos de cifrado/descifrado de las cookies en .net2.0 y 4.0. Después de investigar, reescribí e implementé un programa que puede implementar una forma sencilla de inicio de sesión único en diferentes versiones de .net.
1, ***Utilice el código de la página de inicio de sesión para implementar:
El código es el siguiente:
protected void btnLogin_Click(object sender, EventArgs e)
{
//Autenticación y facturación, salte a la página de solicitud original
System.Web.Security.FormsAuthentication.RedirectFromLoginPage("ejiyuan", false);
}
2, Archivo de configuración:
El código es el siguiente:
p>
Cuando el atributo de protección se establece en "Todos", los valores hash para el cifrado y los datos de verificación se almacenan en Cookies. Las claves predeterminadas utilizadas para la verificación y el cifrado se almacenan en. el archivo machine.config Podemos anular estos valores en el archivo Web.Config de la aplicación. Los valores predeterminados son los siguientes: IsolateApps significa generar una clave diferente para cada aplicación. No podemos usar esto. Para usar la misma clave para cifrar y descifrar cookies en múltiples aplicaciones, Puede eliminar la opción IsolateApps o, mejor aún, establecer un valor de clave específico en Web.Config de todas las aplicaciones que necesitan implementar SSO: D923AC" validation="SHA1" decryption="3DES" /> Si usa el mismo método de almacenamiento, solo necesita cambiar Web.config para implementar SSO Debe asegurarse de que cada aplicación en el punto único tenga la misma configuración. Si la aplicación de inicio de sesión único tiene diferentes versiones de .net, no use md5 para cifrar/descifrar aquí 3. El inicio de sesión único sin página de inicio de sesión no requiere configuración directa del código. La configuración es la siguiente El código es el siguiente: 4. El módulo de inicio de sesión está encapsulado en httpModules desde el código direccional para llamadas directas desde otros sistemas. El código de encapsulación y el método de referencia se adjuntan aquí: El código es el siguiente: clase pública SsoLoginRedirectModule: IHttpModule { { // TODO: Agregar implementación UploadModule.Init i_application.EndRequest += new EventHandler(i_application_EndRequest); } void i_application_EndRequest(objeto remitente, EventArgs e) { if ((HttpContext.Current.Response.StatusCode = = 302) && HttpContext.Current.Response.RedirectLocation.Contains(FormsAuthentication .LoginUrl)) { HttpContext.Current.Response.RedirectLocation = FormsAuthentication.LoginUrl + "?ReturnUrl= " + HttpUtility.Ur lEncode(HttpContext.Current.Request.Url.OriginalString); } } public void Dispose() { //throw new NotImplementedException(); } } Cita: El código es como siguiente: p>