Red de conocimiento informático - Computadora portátil - ¿Qué es la autenticación Cas?

¿Qué es la autenticación Cas?

CAS es la abreviatura de CentralAuthenticationService, es decir, Servicio de autenticación central, que es un protocolo de comando abierto independiente.

CAS es un proyecto de código abierto iniciado por la Universidad de Yale para proporcionar un método de inicio de sesión único confiable para aplicaciones web. CAS se convirtió oficialmente en un programa JA-SIG en diciembre de 2004.

Características

1. Solución de inicio de sesión único de código abierto a nivel empresarial.

2. Para CASServer que necesita implementar aplicaciones web de forma independiente.

3.CASClient admite muchos clientes (aquí se refiere a varias aplicaciones web en sistemas de inicio de sesión único), incluidos Java, .NET, PHP, MySQL, SQL, etc.

Principios y protocolos

Estructuralmente, CAS consta de dos partes: CASServer y CASClient. CASServer debe implementarse de forma independiente y es el principal responsable de la autenticación del usuario;

CASClient es responsable de procesar las solicitudes de acceso a los recursos protegidos del cliente y puede ser redirigido a CASServer cuando se requiere iniciar sesión. CASServer La siguiente figura muestra el flujo de protocolo más básico de CAS:

CASClient se implementa con la aplicación cliente protegida para proteger los recursos protegidos en forma de filtro. Para cada solicitud web que accede a un recurso protegido, CASClient analizará si la solicitud Http solicitada contiene un ServiceTicket.

Si no es así, significa que el usuario actual no ha iniciado sesión, por lo que redirigirá el solicite a la dirección de inicio de sesión de CASServer especificada y pase el Servicio (es decir, el destino para acceder al recurso) para que la solicitud sea redirigida nuevamente a esta dirección después de que el inicio de sesión sea exitoso.

El usuario ingresa la información de verificación en el paso 3. Si el inicio de sesión es exitoso, el servidor CASS generará aleatoriamente un ServiceTicket largo, único e imposible de falsificar y lo almacenará en caché para verificación futura.

Después, el sistema redirigirá automáticamente a la dirección del servicio y establecerá un TicketGrantedCookie (TGC) para el navegador del cliente.

Después de que CASClient obtenga el servicio y el Ticket recién generado, verificará la identidad con CASServer en los pasos 5 y 6 para garantizar la legitimidad del ServiceTicket.

En este protocolo, todas las interacciones con CAS utilizan el protocolo SSL para garantizar la seguridad de ST y TGC. Hay 2 procesos de redirección durante el funcionamiento del protocolo, pero el proceso de realizar la validación del ticket entre CASClient y CASServer es transparente para el usuario.

Además, el protocolo CAS también proporciona un modo proxy para aplicaciones más avanzadas y complejas. Visite el sitio web de CAS para obtener más detalles.

Extensiones

Utilice CAS en Tomcat para implementar el inicio de sesión único para implementar aplicaciones cliente.

El propósito del inicio de sesión único es permitir que múltiples aplicaciones relacionadas utilizar Para el mismo proceso de inicio de sesión, este artículo tomará casTest1 y casTest2 como ejemplos para ilustrar el proceso de creación de dos aplicaciones simples.

Ambas aplicaciones utilizan el mismo conjunto de información de inicio de sesión y solo pueden acceder a ellas los usuarios que hayan iniciado sesión. Con la configuración de este artículo, se habilita el inicio de sesión único, lo que significa que solo necesita iniciar sesión una vez para acceder a ambas aplicaciones.

Establecimiento de una relación de confianza con CASServer

Supongamos que CASServer se implementa en una máquina A separada y que la aplicación cliente se implementa en la máquina B. Dado que la aplicación cliente utiliza SSL para comunicarse con CASServer, es necesario establecer una relación de confianza entre el JRE de A y B.

En segundo lugar, descargue InstallCert.java desde /andreas/entry/no_more_unable_to_find?, ejecute el comando "javaInstallCertcompA:8443",

e ingrese 1 en la siguiente consulta que aparece.

Esto agrega A al almacén de confianza de B. Si se implementan varias aplicaciones cliente en diferentes máquinas, cada máquina deberá establecer una relación de confianza con la máquina donde se encuentra el servidor CASS.

Configurar CASFilter

Después de preparar las aplicaciones casTest1 y casTest2, impleméntelas en las máquinas B y C respectivamente.

Supongamos que los nombres de dominio de A y B son dominioA y dominioB respectivamente.

Nombra el archivo cas-client-java-2.1.1.zip como cas-client-java-2.1.1.jar y cópialo en el directorio casTest1/WEB-INF/lib, y luego modifícalo. el archivo web .xml para agregar CASFilter.

Como se muestra en el Listado 10:

Listado 10. ¿Agregar CASFilter?...?

CASFilter edu.yale.its.tp.cas.client.filter.CASFilter

? edu.yale.its. tp.cas.client.filter.loginUrl

https://domainA:8443/cas/ login

edu.yale.its.tp.tp.cas.client.filtervalidateUrl https://domainA:8443/cas/serviceValidate

<.param-name >edu.yale.its.tp.cas.client.filter.serverName? dominioB:8080

?

CASFilter/protected-pattern/*

?

Para todo el acceso a recursos que satisfaga casTest1/protected-pattern/ ruta, debe iniciar sesión en CASServer. Si necesita proteger todo casTest1, puede especificar el patrón de URL como "/*".

Como puede ver en el Listado 10, podemos especificar muchos parámetros para CASFilter, algunos de los cuales son obligatorios.

Los parámetros requeridos y los parámetros opcionales se muestran en la Tabla 1 y la Tabla 2 respectivamente:

Tabla 1. Parámetros requeridos de CASFilter

Tabla 2. Parámetros opcionales de CASFilter

Pasar el nombre de usuario de inicio de sesión

CAS enviará una cookie al navegador para configurar un nuevo ServiceTicket después de iniciar sesión correctamente, pero la aplicación cliente tiene su propia sesión, entonces, ¿cómo obtenemos la sesión actual en cada aplicación? ¿Sobre el nombre de usuario del usuario que inició sesión?

El filtro de CASClient maneja muy bien este problema. Después de un inicio de sesión exitoso, puede obtener el nombre de usuario directamente desde las propiedades de la sesión, como se muestra en el Listado 11:

Listado 11. Obtenga el inicio de sesión. nombre de usuario a través de sesión en Java

1?//Los dos métodos siguientes son factibles

2?session.getAttribute(CASFilter.CAS_FILTER_USER);

3?session .getAttribute("edu.yale.its.tp.cas.client.filter.user");

El método para obtener el nombre de usuario en JSTL se muestra en el Listado 12:

Listado 12. Obtener el nombre de usuario de inicio de sesión a través de JSTL

1?

Además, CAS también proporciona una clase CASFilterRequestWrapper, que hereda de HttpServletRequestWrapper y principalmente anula el método getRemoteUser().

Puede establecer el valor de "usuario" para CASFilter cuando lo configure, siempre y cuando establezca el valor de "usuario" para CASFilter cuando lo configuró previamente. p>

Lista 13. Obtenga el nombre de usuario de inicio de sesión a través de CASFilterRequestWrapper 1?CASFilterRequestWrapper?reqWrapper=newCASFilterRequestWrapper(request);

2?out.println("Thelogonuser: "+reqWrapper. getRemoteUser());

Enciclopedia Baidu-CAS

IBM China: utilice CAS para implementar el inicio de sesión único en Tomcat