El sistema de inicio de sesión único CAS (Servicio de autenticación central) es una solución común de autenticación y autorización que permite a los usuarios iniciar sesión en un centro de autenticación (servidor CAS) y luego usar esta información de inicio de sesión para acceder a varias aplicaciones sin tener que iniciar sesión.
Primero entiende algunos sustantivos:
TGC
: (Cookie de otorgamiento de boletos), una cookie que almacena credenciales de identidad de usuario de SSO, similar a JSESSIONID.TGT
: (Ticket Granting Ticket), identifica a un usuario en SSO, similar a Sesión.ST
: (Ticket de servicio), seguido de url como parámetro, representa el certificado emitido por CAS para que un determinado usuario acceda al cliente CAS.
The TGT (Ticket Granting Ticket), stored in the TGC cookie, represents a SSO session for a user. The ST (Service Ticket), transmitted as a GET parameter in urls, stands for the access granted by the CAS server to the CASified application for a specific user.
Diagrama de secuencia de inicio de sesión
红色字体是我添加的翻译 ,可能不够准确,仅供参考
Proceso de certificación por primera vez
Después de iniciar la aplicación relacionada con CAS de acuerdo con los pasos anteriores, abra el navegador, visite https://localhost:9443/sample/
, ingrese la contraseña para completar el inicio de sesión y filtre las solicitudes irrelevantes en Fiddler. Las solicitudes que deben aprenderse se muestran en la figura.
-
El número de serie 930, la primera visita
https://localhost:9443/sample/
, pasará por el filtro proporcionado por CASorg.jasig.cas.client.authentication.AuthenticationFilter
, el filtro juzga que el usuario actual no ha iniciado sesión y redirige la solicitud al centro de autenticación, como se muestra en la figura;
La dirección redirigida se configura en el parámetro de filtro
casServerLoginUrl
yservice
el valor del parámetro se configura en el parámetro de filtroserverName
, es decir, la dirección que se redirigirá después de la autenticación. -
Número de serie 932, el servidor CAS recibe la solicitud de inicio de sesión y vuelve a la página de inicio de sesión;
-
Número de serie 956, después de que el usuario ingresa la contraseña y envía el inicio de sesión, el servidor CAS verifica si el nombre de usuario y la contraseña son válidos (aquí se usa autenticación estática), como se muestra en la figura;
Utilice
POST
la solicitud para enviar el formulario de inicio de sesión. Después de que el usuario se haya autenticado con éxito, el código de respuesta de la solicitud es 302, que indica al navegador que redirija la solicitud a la dirección a la que se accedió originalmente. La dirección redirigida lleva unticket
parámetro a través de querySpring. Al mismo tiempo,TGC
se establecerá una cookie con el nombre de ruta/cas/
. Esta cookie se transportará en la próxima visita , y el servidor puede buscar la cookie correspondientehttps://cas.server.com:8443
de acuerdo con esto , para determinar si el usuario se ha autenticado y si es necesario mostrar la página de inicio de sesión. ;TGC
TGT
TGT 与 TGC 的关系就像 SESSION 与 Cookie 中 JSESSIONID 的关系
-
Número de serie 957, el navegador
https://localhost:9443/sample/
inicia una solicitud a , la solicitud lleva un valor de ticket firmado por el servidor CASST
, ylocalhost:9443
el valor del ticket se obtiene en el filtro, y se llama al servicio CAS a través de una solicitud HTTP para verificar si el ticket es válido, el nombre completo del filtroorg.jasig.cas.client.validation.Cas30ProxyReceivingTicketValidationFilter
y el método de verificación seorg.jasig.cas.client.validation.AbstractUrlBasedTicketValidator#validate
muestran en la figura.
En este punto, el registro del servidor CAS es como se muestra en la figura a continuación.
localhost:9443
Después de recibir la devolución del servidor CAS y saber que el usuario es legal, puede responder a la solicitud con normalidad y mostrar la página, como se muestra en la figura.
- Número de serie 958,
ST
después de pasar la verificación, la redirección es usar el parámetroCas30ProxyReceivingTicketValidationFilter
en el filtro (el valor predeterminado es ) y configurarlo para volver a la página normal después de autenticar al usuario, como se muestra en la figura.redirectAfterValidation
true
false
Proceso de reautenticación
localhost:9443
Se han solucionado los pasos de la primera visita , mantener la sesión del usuario en SSO, intentar visitar localhost:7443
y observar su proceso. Cuando la solicitud se redirige al servidor CAS, se lleva una cookie con valor TGC
. TGC
El servidor CAS encuentra el correspondiente a través de this TGT
, y juzga que el usuario ha iniciado sesión, y luego ya no muestra la página de inicio de sesión, es decir, falta el paso de iniciar sesión en el servidor CAS, y los pasos restantes son los mismos como el primer inicio de sesión, como se muestra en la figura.
Principio de implementación del inicio de sesión único de CAS
-
El usuario accede a una aplicación que requiere autenticación y aún no se ha autenticado.
-
La aplicación redirige al usuario al servidor CAS para la verificación de inicio de sesión.
-
El servidor CAS verifica las credenciales de inicio de sesión del usuario y, si se verifica, crea un ticket.
-
El servidor CAS devuelve el ticket a la aplicación y redirige al usuario a la aplicación.
-
La aplicación recibe el ticket y lo envía de vuelta al servidor CAS para su verificación.
-
Si el ticket es válido, el servidor CAS devuelve una respuesta de autenticación exitosa.
-
La aplicación guarda la información de autenticación del usuario en la sesión para su posterior acceso.
-
Si el usuario intenta acceder a otra aplicación, la aplicación utilizará los mismos pasos para autenticar al usuario.
Por lo tanto, la idea principal del sistema de inicio de sesión único de CAS es separar el proceso de autenticación del usuario de la aplicación, de modo que el usuario pueda acceder a múltiples aplicaciones con una sola verificación de inicio de sesión. El sistema CAS almacena toda la información de inicio de sesión en un centro de autenticación centralizado, para que otras aplicaciones puedan obtener la información de verificación de identidad del usuario a través del centro, realizando así la función de inicio de sesión único.