CAS 5.3 utiliza el protocolo http en lugar del protocolo https para proporcionar servicios
1. Descripción de la versión
CAS Server utiliza el protocolo https para proporcionar servicios de forma predeterminada. El protocolo https requiere un certificado ssl. Puede utilizar la herramienta jdk keytool para generar un certificado autofirmado o puede solicitar un certificado de una autoridad de certificación (se aplican tarifas ) .
cas.version 5.3.16
springboot.version 1.5.18.RELEASE
herramienta de claves de certificado autofirmado jdk
2. Utilice el protocolo http para proporcionar servicios.
1. Implementación de tomcat integrado en Springboot
- Modificar el archivo de configuración application.yml o application.properties
server:
port: 8080
ssl:
key-store: classpath:server.keystore
key-store-password: tomcat
key-password: tomcat
# 改为false
enabled: false
cas:
tgc:
secure: false
warningCookie:
secure: false
serviceRegistry:
initFromJson: true
server:
name: http://cas.example.org:8080
prefix: http://cas.example.org:8080/cas
- Se agregó el archivo resources / services / test.json para permitir el cliente http
{
"@class": "org.apereo.cas.services.RegexRegisteredService",
"serviceId": "^(https|imaps|http)://.*",
"name": "测试",
"id": 1000,
"description": "测试",
"evaluationOrder": 1000
}
- Finalmente, no olvide modificar la dirección URL del servidor cliente CAS
server:
name: http://cas.example.org:8080
prefix: http://cas.example.org:8080/cas
2. Implementación de Tomcat (no integrado)
- Anote parte de server.xml en el directorio tomcat / config
<!-- <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https"
secure="true" clientAuth="false" sslProtocol="TLS"
keystoreFile="D:\softs\apache-tomcat-8.5.37\server.keystore" keystorePass="tomcat">
</Connector> -->
- Modificar el archivo de configuración application.yml o application.properties
cas:
tgc:
secure: false
warningCookie:
secure: false
serviceRegistry:
initFromJson: true
server:
name: http://cas.example.org:8080
prefix: http://cas.example.org:8080/cas
- Se agregó el archivo resources / services / test.json para permitir el cliente http
{
"@class": "org.apereo.cas.services.RegexRegisteredService",
"serviceId": "^(https|imaps|http)://.*",
"name": "测试",
"id": 1000,
"description": "测试",
"evaluationOrder": 1000
}
- Finalmente, no olvide modificar la dirección URL del servidor cliente CAS
server:
name: http://cas.example.org:8080
prefix: http://cas.example.org:8080/cas
3. Limpiar la configuración bajo el protocolo https
- Limpiar el certificado autofirmado de keytool
keytool -delete -alias tomcat -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
- Limpiar la caché del navegador (especialmente las cookies)
Nota : Si se usa el protocolo http desde el principio, ¡este paso se puede omitir!
4. Asuntos que requieren atención
-
Después de abrir el navegador, no cambie los protocolos https y http de un lado a otro para evitar la pérdida de la sesión cuando se cambia el protocolo. La
coexistencia de http y https puede provocar la pérdida de la sesión. -
Tenga en cuenta que el nombre de dominio debe ser coherente
Durante la prueba, se agregó la asignación 127.0.0.1 cas.example.org al archivo de hosts, pero cuando el navegador accede a ella, se usa localhost. Tenga en cuenta que aunque tanto cas.example.org como localhost apuntan a la IP 127.0.0.1, el navegador Piense en ello como dos dominios, las cookies no se pueden compartir (CAS TGC no se puede compartir).
http: // localhost: 8080 / cas / login inicie sesión correctamente, pero el prefijo del servidor CAS del cliente es http://cas.example.org:8080/cas, todavía necesita iniciar sesión nuevamente, es decir, el inicio de sesión ¡el estado no está sincronizado!
Los lectores pueden usar Google Chrome para verificar la dirección de la cookie de solicitud de red para confirmar este fenómeno.