Arborescence des pages

Vous regardez une version antérieure (v. /wiki/display/CAS/Retour+de+l%27URN+sur+mise+en+place+de+CAS+6.6.9) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 4) afficher la version suivante »

Contexte

Eté 2023, l'Université de Rouen Normandie a procédé à une montée de version de son service d'authentification CAS en 6.6.9

Cette page wiki vient en complément de nos pages Retour de l'URN sur mise en place de CAS 6.0.4 et Retour de l'URN sur mise en place de CAS 6.4.1 ; les retours que l'on avait fait sur ces versions 6.x sont a priori toujours d'actualité.

Cette installation est faite sur une debian en utilisant CAS Initializr ; jusque-là notre installation et montée de version s'appuyait sur ce qui était utilisé par le Kit installation CAS V5.2 AMU.

On a également profité de cette montée de version pour mettre en place le module OpenID Connect Authentication permettant à CAS de supporter authentification OpenIdConnect (oidc) ent tant que fournisseur (provider/serveur).

Installation

Paquets

apt install openjdk-11-jdk-headless tomcat9 curl unzip

CAS Initializr

Pour construire notre CAS, on ajoute dans le .bashrc de l'utilisateur cas :

function getcas() {
  url="https://casinit.herokuapp.com/starter.tgz"
  projectType="cas-overlay"
  dependencies=""
  directory="overlay"
  for arg in $@; do
    case "$arg" in
    --url|-u)
      url=$2
      shift 1
      ;;
    --type|-t)
      projectType=$2
      shift 1
      ;;
    --directory|--dir|-d)
      directory=$2
      shift 1
      ;;
    --casVersion|--cas)
      casVersion="-d casVersion=$2"
      shift 1
      ;;
    --bootVersion|--springBootVersion|--boot)
      bootVersion="-d bootVersion=$2"
      shift 1
      ;;
    --modules|--dependencies|--extensions|-m)
      dependencies="-d dependencies=$2"
      shift 1
      ;;
    *)
      shift
      ;;
    esac
  done
  rm -Rf ./${directory}
  echo -e "Generating project ${projectType} with dependencies ${dependencies}..."
  cmd="curl ${url} -d type=${projectType} -d baseDir=${directory} ${dependencies} ${casVersion} ${bootVersion} | tar -xzvf -"
  echo -e "${cmd}"
  eval "${cmd}"
  ls
}

Puis on créé un fichier urn-generate-cas-overlay.sh : 

#!/bin/bash -x
getcas --cas 6.6.9 --modules support-ldap,support-json-service-registry,support-redis-ticket-registry,support-spnego-webflow,support-trusted-mfa-mongo,support-throttle,support-reports,supp
ort-interrupt-webflow,support-oidc

On le lance ce script qui nous construit l'overlay CAS dans le répertoire overlay. Ce répertoire étant sous git dès à présent avec pour premier commit "Project created by Apereo CAS Initializr".

On ajuste le build.gradle pour installer notamment les modules CAS d'esup-otp et esup-agimus ; on fixe aussi le look via l'ajout de css et surcharge de templates.

cas@cas:/opt/overlay$ git diff
warning: LF will be replaced by CRLF in build.gradle.
The file will have its original line endings in your working directory
warning: LF will be replaced by CRLF in gradle.properties.
The file will have its original line endings in your working directory
diff --git a/build.gradle b/build.gradle
index bb8758e..6cffd74 100644
--- a/build.gradle
+++ b/build.gradle
@@ -82,6 +82,9 @@ repositories {
         }
         mavenContent { releasesOnly() }
     }
+    maven {
+        url "https://jitpack.io"
+    }
 }
 
 
@@ -273,11 +276,15 @@ dependencies {
     implementation "org.apereo.cas:cas-server-support-json-service-registry"
     implementation "org.apereo.cas:cas-server-support-redis-ticket-registry"
     implementation "org.apereo.cas:cas-server-support-spnego-webflow"
+    implementation files("${projectDir}/lib/jcifs-ext.jar")
     implementation "org.apereo.cas:cas-server-support-trusted-mfa-mongo"
     implementation "org.apereo.cas:cas-server-support-throttle"
     implementation "org.apereo.cas:cas-server-support-reports"
     implementation "org.apereo.cas:cas-server-support-interrupt-webflow"
     implementation "org.apereo.cas:cas-server-support-oidc"
+    implementation "com.github.vbonamy:cas-server-support-agimus-cookie:cas-6.4.x-SNAPSHOT"
+    implementation "com.github.vbonamy:cas-server-support-agimus-logs:cas-6.4.x-SNAPSHOT"
+    implementation "com.github.EsupPortail:esup-otp-cas:6.6.x-SNAPSHOT"
  
 
     if (project.hasProperty("casModules")) {
diff --git a/gradle.properties b/gradle.properties
index e33296a..d875561 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -29,7 +29,7 @@ dockerImagePlatform=amd64:linux
 # Include launch script for executable WAR artifact
 # Setting this to true allows the final web application
 # to be fully executable on its own
-executable=true
+executable=false
 
     
 
@@ -37,7 +37,7 @@ executable=true
 # if the overlay application supports or provides the chosen type.
 # You should set this to blank if you want to deploy to an external container.
 # and want to set up, download and manage the container (i.e. Apache Tomcat) yourself.
-appServer=-tomcat
+appServer=
 
 # Settings to generate keystore
 # used by the build to assist with creating


cas@cas:/opt/overlay$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   build.gradle
	modified:   gradle.properties

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	lib/
	src/main/resources/static/
	src/main/resources/templates/

no changes added to commit (use "git add" and/or "git commit -a")



cas@cas:/opt/overlay$ tree src/main/resources/static/ src/main/resources/templates/ lib/
src/main/resources/static/
??? images
    ??? cas-logo.png
    ??? logo_universite_rouen.svg
src/main/resources/templates/
??? fragments
?   ??? footer.html
?   ??? pmlinks.html
??? layout.html
lib/
??? jcifs-ext.jar

2 directories, 6 files

Puis on commit.

Packaging

Depuis /opt/overlay on lance le packaging via gradle :

./gradlew clean build

Configuration du tomcat

On a choisi ici l'utilisation du tomcat9 founi par debian, on modifie /var/lib/tomcat9/conf/server.xml pour ne pas loguer les accès (qui seront logués par le apache en frontal), désactiver le connecteur http et activer le connecteur ajp.

Déploiement

rm -rf  /var/lib/tomcat9/webapps/ROOT && unzip /opt/overlay/build/libs/cas.war  -d /var/lib/tomcat9/webapps/ROOT

Configuration du démarrage et démarrage

systemctl enable tomcat9

systemctl restart tomcat9

Installation des autres composants

On installe etconfigure également les autres paquets/briques nécessaires au bon fonctionnnement de notre CASn à savoir :

  • apache avec ajp, ssl, ...
  • certbot pour automatiser le renouvellement des certificats
  • les briques requise's par les modules CAS utilisés : mogodb, redis, etc.
  • les briques esup-otp et dépendances associées que l'on installe sur le même serveur
  • Aucune étiquette