Práctico sistema de inicio de sesión único springboot+CAS

1. Cree soporte HTTPS para Tomcat

CAS utiliza el protocolo HTTPS para procesar las solicitudes de los usuarios, por lo que debemos configurar Tomcat para que admita el protocolo HTTPS.

Paso 1: generar almacén de claves

Usamos la herramienta keytool que viene con jdk para generar el almacén de claves.

keytool es una herramienta de línea de comandos en Java Development Kit (JDK) para administrar almacenes de claves (almacenes de claves) y certificados.

keytool -genkey -alias <alias> -keyalg <algorithm> -keystore <keystore> [options]
  • -genkeyParámetros utilizados para generar un par de claves y almacenarlo en el almacén de claves.
  • -alias <alias>:Especifique el alias del par de claves generado. El alias se utiliza para identificar el par de claves en operaciones posteriores. Por ejemplo, -alias mykeyel par de claves generado tendrá el alias "mykey".

  • -keyalg <algorithm>: especifique el algoritmo de cifrado utilizado al generar el par de claves. Los algoritmos de cifrado más utilizados incluyen RSA, DSA y EC. Por ejemplo, -keyalg RSAse utilizará el algoritmo RSA para generar el par de claves.

  • -keystore <keystore>: Especifica la ruta y el nombre del archivo de almacén de claves que se utilizará. El almacén de claves se utiliza para almacenar pares de claves generados y otra información relacionada. Por ejemplo, -keystore mykeystore.jksalmacene el par de claves generado en un almacén de claves denominado "mykeystore.jks".

  • -vLos parámetros se utilizan para especificar una salida detallada (modo detallado), que puede mostrar información más detallada, incluido el proceso detallado y los resultados de operaciones como la generación de pares de claves y la importación de certificados.

  • [options]: Parámetro opcional para configurar aún más opciones para generar un par de claves. Algunas opciones comúnmente utilizadas incluyen:

    • -keysize <size>: especifique la longitud de la clave; por ejemplo, -keysize 2048utilice una longitud de clave de 2048 bits.
    • -validity <days>: Especifique el período de validez (número de días) del certificado, por ejemplo, -validity 365significa que el período de validez del certificado es de 365 días.
    • -dname <distinguished_name>: Especifique la información del asunto utilizada para generar certificados, incluido el país, la organización, la unidad organizativa, etc.
    • -storepass <password>: Especifica la contraseña para el almacén de claves, utilizada para acceder y administrar pares de claves en el almacén de claves.

Alias ​​​​java1234; ruta de almacenamiento D:\CAS\keystore

keytool -genkey -v -alias java1234 -keyalg RSA -keystore D:\CAS\keystore\java1234.keystore

 Puede verificar que los siguientes archivos existan en la ruta de almacenamiento

  Paso 2: exportar el certificado desde el almacén de claves

keytool -export -trustcacerts -alias java1234 -file D:\CAS\keystore\java1234.cer -keystore D:\CAS\keystore\java1234.keystore
  • keytool: El nombre de la herramienta de línea de comando, utilizada para ejecutar el comando keytool.
  • -export: Especifica que la acción a realizar es exportar el certificado.
  • -trustcacerts: Al exportar un certificado, también se exporta el certificado raíz confiable.
  • -alias java1234: Especifique el alias del certificado que se exportará como "java1234". Asegúrese de que el alias exista en el almacén de claves.
  • -file D:\CAS\keystore\java1234.cer: Especifique la ruta y el nombre del archivo de certificado que se exportará. El certificado exportado se guardará en el archivo especificado.
  • -keystore D:\CAS\keystore\java1234.keystore: especifique la ruta y el nombre del archivo del almacén de claves. Este es el archivo del almacén de claves que contiene el certificado que se va a exportar.

El propósito de este comando es exportar el certificado con el alias "java1234" del almacén de claves y guardarlo en el archivo especificado (D:\CAS\keystore\java1234.cer).

Asegúrese de que exista el certificado con el alias especificado y que la ruta y el nombre del archivo del almacén de claves sean correctos antes de ejecutar este comando.

 

Paso 3: importe el certificado al almacén de certificados jdk

keytool -import -trustcacerts -alias java1234 -file ‪D:\CAS\keystore\java1234.cer -keystore ‪D:\java\jdk1.8.0_91\jre\lib\security\cacerts

El comando anterior utiliza la herramienta keytool para importar el certificado al almacén de certificados raíz de confianza. La siguiente es una explicación de cada parámetro en el comando:

- `keytool`: el nombre de la herramienta de línea de comando, utilizada para ejecutar el comando keytool.
- `-import`: Especifica que la operación a realizar es importar el certificado.
- `-trustcacerts`: significa importar el certificado al almacén de certificados raíz de confianza.
- `-alias java1234`: Especifica el alias del certificado que se importará como "java1234".
- `-file D:\CAS\keystore\java1234.cer`: Especifique la ruta y el nombre del archivo de certificado que se importará. Este archivo de certificado es el contenido del certificado que se va a importar.
- `-keystore D:\java\jdk1.8.0_91\jre\lib\security\cacerts`: especifica la ruta y el nombre del almacén de certificados raíz de confianza. El almacén de certificados es el archivo cacerts en el directorio de instalación de Java, que se utiliza para almacenar certificados raíz confiables.

El propósito de este comando es importar el archivo de certificado (D:\CAS\keystore\java1234.cer) en la ruta especificada al almacén de certificados raíz confiable (archivo cacerts) en el directorio de instalación de Java y usar el alias "java1234". para identificarlo. .

Asegúrese de que la ruta y el nombre del archivo del certificado sean correctos, y que la ruta y el nombre del archivo del almacén de certificados raíz confiable sean correctos antes de ejecutar este comando. Además, asegúrese de tener permisos suficientes para realizar la operación.

 el cuarto paso:

Dirección de descarga de Tomcat: https://tomcat.apache.org/download-90.cgi

 Después de la descarga, descomprímalo en el directorio CAS e ingrese al directorio D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\conf para encontrar el archivo server.xml.

Agregue el siguiente código al archivo

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS"
               keystoreFile="D:\CAS\keystore\java1234.keystore"
               keystorePass="666666" />

como muestra la imagen

Salga después de guardar, ingrese al directorio D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\bin para encontrar el archivo startup.bat, haga doble clic para abrir y ejecutar

 Los resultados de la ejecución son los siguientes, y aparecen caracteres confusos:

 Ingrese al directorio conf y abra los siguientes archivos

Corrija el código java.util.logging.ConsoleHandler.encoding = UTF-8  en el archivo a java.util.logging.ConsoleHandler.encoding = GBK

 Ingrese nuevamente al directorio bin, inicie el archivo startup.bat y ejecútelo para resolver el problema confuso:

 prueba

Visita https://localhost:8443/

Poder acceder con éxito a Tomcat demuestra que la configuración fue exitosa.

 2. Descargue la guerra del servidor CAS

Dirección de descarga: Repositorio Central: org/apereo/cas/cas-server-webapp-tomcat/5.3.14

 Si necesita modificar el código de fondo, debe descargar el código fuente de github, empaquetarlo después de la modificación y publicar el paquete war.

3. Publicar el servidor CAS en Tomcat

Coloque el paquete war descargado en el directorio D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps

 Después de copiar a este directorio, el paquete war se descomprimirá automáticamente, el archivo descomprimido pasará a llamarse cas y el paquete war se eliminará.

 Regrese al directorio bin y ejecute el archivo startup.bat

Después de un inicio exitoso, visitamos https://localhost:8443/cas/login 

Si no hay ningún problema con el inicio, se accederá correctamente a la URL anterior.

 Ingrese al directorio D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\cas\WEB-INF\classes y abra el archivo application.properties

Es decir, el usuario recibido por cas es casuser y la contraseña es Mellon; ingrésela en la página de inicio de sesión y el inicio de sesión será exitoso.

 Si el nombre de usuario y la contraseña ingresados ​​no coinciden con los anteriores, la autenticación fallará.

 Continúe abriendo el archivo log4j2.xml en el directorio D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\cas\WEB-INF\classes.

Cambie la ruta base del registro anterior a D:\CAS\log

 Configurar el nombre de dominio: C:\Windows\System32\drivers\etc\hosts

Al guardar el archivo se produce el siguiente error:

 Enlace al artículo que proporciona la solución: http://t.csdn.cn/0pLZy

Después de intentarlo, se ha solucionado con éxito.

 Una vez que el nombre de dominio se haya configurado correctamente, puede utilizar https://java1234.com:8443/cas para acceder a él.

4. Fuente de datos de configuración CAS y autenticación de usuario de base de datos

El nombre de usuario y la contraseña utilizados para el inicio de sesión anterior están codificados en el archivo application.properties, pero en el desarrollo real, es necesario configurar la fuente de datos y realizar la autenticación del usuario de la base de datos.

a. Crear nuevos datos y tablas.

Iniciar el servicio mysql

Ingrese mysql -u raíz -p

Luego ingrese la contraseña para ingresar al shell mysql

Ejecute los siguientes comandos en la interfaz de shell mysql en secuencia:

CREATE DATABASE db_sso;

USE db_sso;

CREATE TABLE t_cas (
  id int(11) NOT NULL AUTO_INCREMENT,
  username varchar(30) DEFAULT NULL,
  password varchar(100) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

insert into t_cas(id,username,password) values(1,'java1234','123456');

 En  MySQL  , puede utilizar  la instrucción CREATE DATABASE  para crear una base de datos. El formato de sintaxis es el siguiente:

CREATE DATABASE [IF NOT EXISTS] <数据库名>
[[DEFAULT] CHARACTER SET <字符集名>] 
[[DEFAULT] COLLATE <校对规则名>];

[ ]El contenido es opcional. La sintaxis se explica a continuación:

  • <Nombre de la base de datos>: El nombre de la base de datos creada. El área de almacenamiento de datos de MySQL representará la base de datos MySQL en un formato de directorio, por lo que el nombre de la base de datos debe cumplir con las reglas de nomenclatura de carpetas del sistema operativo, no puede comenzar con un número y debe ser lo más significativo posible. Tenga en cuenta que no se distingue entre mayúsculas y minúsculas en MySQL.
  • SI NO EXISTE: Haga un juicio antes de crear la base de datos, la operación solo se puede realizar si la base de datos no existe actualmente. Esta opción se puede utilizar para evitar errores de creación duplicada cuando la base de datos ya existe.
  • [POR PREDETERMINADO] JUEGO DE CARACTERES: Especifica el juego de caracteres de la base de datos. El propósito de especificar el juego de caracteres es evitar datos confusos almacenados en la base de datos. Si no especifica un juego de caracteres al crear la base de datos, se utiliza el juego de caracteres predeterminado del sistema.
  • [DEFAULT] COLLATE: Especifica las reglas de clasificación predeterminadas para el juego de caracteres.

El juego de caracteres de MySQL (CHARACTER) y las reglas de intercalación (COLLATION) son dos conceptos diferentes. Los juegos de caracteres se utilizan para definir la forma en que MySQL almacena cadenas y las reglas de intercalación definen la forma en que se comparan las cadenas. Más adelante explicaremos por separado el juego de caracteres y las reglas de intercalación de MySQL.

ENGINE = innodb en mysql significa que el motor de almacenamiento es innodb. innoDB es el primer motor de almacenamiento de datos en MySQL que proporciona restricciones de clave externa . Además de proporcionar procesamiento de transacciones, InnoDB también admite bloqueos de fila y proporciona la misma lectura sin bloqueos consistente que Oracle , lo que puede aumentar el número de usuarios de lectura concurrentes y mejorar. rendimiento sin aumentar el número de bloqueos. InnoDB está diseñado para maximizar el rendimiento al procesar grandes volúmenes de datos y su utilización de CPU es la más eficiente de todos los demás motores de bases de datos relacionales basados ​​en disco.

 B. Modificar el archivo de configuración application.properties

Ingrese al directorio D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\cas\WEB-INF\classes y busque el archivo application.properties

Comente el usuario de autenticación codificado

Más configuración de fuente de datos jdbc

cas.authn.jdbc.query[0].url=jdbc:mysql://localhost:3306/db_sso?serverTimezone=GMT

cas.authn.jdbc.query[0].user=root

cas.authn.jdbc.query[0].password=123456

cas.authn.jdbc.query[0].sql=select * from t_cas where username=?

cas.authn.jdbc.query[0].fieldPassword=password

cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver

 C. Agregar paquete de controlador jdbc y jar de soporte

Copie el paquete jar descargado previamente en el directorio D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\cas\WEB-INF\lib

 d.Prueba

Ingrese al directorio bin e inicie startup.bat

Ingrese a la página de inicio de sesión para iniciar sesión y descubra que la autenticación falló, puede haber un problema con la conexión de la base de datos y no sé cómo solucionarlo.

5. Integración y construcción del cliente CAS + cliente SpringBoot

 Nota: El paquete com.java1234 debe crearse en el directorio java del módulo crm_sys, que debe ser coherente con el nombre de dominio configurado al final del paso tres.

Dado que cas admite el servicio https de forma predeterminada y no admite el servicio http, si ejecuta el proyecto ahora y accede a http://localhost:9999, aparecerá un error de servicio no autenticado.

Ahora configure el servicio http, ingrese al directorio D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\cas\WEB-INF\classes\services y abra HTTPSandIMAPS- 10000001. json, como se muestra a continuación, agregue |http

Luego regrese a la ruta anterior D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\cas\WEB-INF\classes, abra el archivo application.properties y ingrese el Agregue el siguiente código al final del archivo:

cas.tgc.secure=false

cas.serviceRegistry.initFromJson=true

 Luego ingrese al directorio bin para iniciar startup.bat, visite http://localhost:9999 y descubra que puede saltar automáticamente a la página de inicio de sesión.

Ingrese el nombre de usuario y contraseña para ingresar a la interfaz del sistema correspondiente.

Para verificar mejor el inicio de sesión único, puede crear varios módulos más.

 El código de la página de prueba es el siguiente:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta http-equiv="Pragma" content="no-cache">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Expires" content="0">
    <title>SSO单点登录系统 Powered by java1234.vip</title>
</head>
<body>
SSO单点登录系统 Powered by java1234.vip<br/>
<a href="http://java1234.com:6666/crm" target="_blank">crm客户关系管理系统</a><br/>
<a href="http://java1234.com:8888/fd" target="_blank">fd财务管理系统系统</a><br/>
<a href="http://java1234.com:9999/hr" target="_blank">hr人力资源管理系统</a><br/>
</body>

La página de prueba es como se muestra en la figura:

Después de la prueba, el inicio de sesión y el cierre de sesión únicos son normales.

Cuando no haya iniciado sesión, al hacer clic para ingresar a cualquier sistema se saltará a la interfaz de inicio de sesión único de cas para verificar el inicio de sesión; después del éxito, no se requiere verificación al ingresar a otros sistemas. Después de cerrar sesión, otros sistemas también cerrarán sesión simultáneamente.

 6. Modificación de la interfaz del servidor CAS

Ingrese al directorio D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\cas\WEB-INF\classes, abra el archivo layout.html y comente el encabezado. y pie de página.

 Luego reinicie el archivo startup.bat en el directorio bin. El efecto de ejecución es como se muestra en la figura. El encabezado y el pie de página se han eliminado:

Luego comente la parte en el archivo casLoginView.html como se muestra en la figura:

 Los resultados de ejecución son los siguientes:

 Agregue el siguiente código al archivo D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\cas\WEB-INF\classes\static\css\cas.css

#notices .rightimg{
  width: 500px;
  height: 440px;
  background-image: url(D:\CAS\apache-tomcat-9.0.76-windows-x64\apache-tomcat-9.0.76\webapps\cas\WEB-INF\classes\static\images\login-img.png);
}

Agregue la siguiente línea de código al ícono del archivo casLoginView.html:

El efecto de ejecución al iniciar startup.bat se muestra en la figura:

 

Supongo que te gusta

Origin blog.csdn.net/weixin_54106682/article/details/131231339
Recomendado
Clasificación