Préambule

Il est possible de modifier le serveur CAS afin de générer un fichier de logs supplémentaire qui sera alimenté a chaque authentification pour un service. Le fichier généré au final aura la forme suivante :

[DATE][IP:IP-CLIENT][ID:IDENTIFIANT-UTILISATEUR][TICKET:VALUER-TICKET-SERVICE-CAS][SERVICE:URL-SERVICE-ACCEDE][USER-AGENT:NAVIGATEUR-CLIENT]
[Wed Mar 18 11:45:31 CET 2015] [IP:XXX.XXX.XXX.X] [ID:dupont53][TICKET:ST-1-E5rdtcdOHsDneNgYl4ES-cas][SERVICE:http://ent.univ.fr/p/cms] [USER-AGENT:Mozilla/5.0 (Windows NT6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0]

Installation dans le serveur CAS

Mon serveur CAS est il compatible ?

Tout d'abord la dernière version (V4) du serveur CAS (cas-toolbox) génère ce fichier nativement : https://github.com/EsupPortail/cas-toolbox-new

Une version 3.4.X est aussi disponible : https://github.com/EsupPortail/cas-toolbox-new/tree/v3.4.x

Votre serveur CAS est compatible pour générer ce fichier si vous trouver un fichier nommé ServiceAuditTrailManager.java quelques part dans les sources.

Rendre mon serveur compatible

La modification comporte 3 étapes :

CAS Version 4 ou 3.4.X (GIT)

Vous pouvez utiliser ce pull request : https://github.com/EsupPortail/cas-toolbox-new/pull/3

et donc les fichier lister dans le PR : https://github.com/EsupPortail/cas-toolbox-new/pull/3/files

CAS en version 3.4.X (GIT)

Vous pouvez utiliser ce pull request : https://github.com/EsupPortail/cas-toolbox-new/pull/3

et donc les fichier lister dans le PR : https://github.com/EsupPortail/cas-toolbox-new/pull/3/files

https://raw.githubusercontent.com/marchal-julien/cas-toolbox-new/6e1095c917781bcf6b833814aded75a3f31b39dd/cas-toolbox-core/src/main/java/org/esupportail/cas/audit/support/ServiceAuditTrailManager.java

Ajouter dans le fichier cas-toolbox-core/src/main/webapp/WEB-INF/classes/log4j.xml

....
<appender name="serviceStatsAppender" class="org.apache.log4j.FileAppender">
  <param name="File" value="${log.dir}/serviceStats.log"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%m%n"/>
  </layout>
</appender>

...

<logger name="org.esupportail.cas.audit.support.ServiceAuditTrailManager" additivity="false">
  <level value="INFO" />
  <appender-ref ref="serviceStatsAppender" />
</logger>

....
 

 

Dans le fichier cas-toolbox-core/src/main/webapp/WEB-INF/spring-configuration/auditTrailContext.xml

....

<bean class="org.esupportail.cas.audit.support.ServiceAuditTrailManager"/>

....
 

 

CAS en version 4.2.2

 

# wget -O src/main/webapp/WEB-INF/spring-configuration/auditTrailContext.xml https://raw.githubusercontent.com/apereo/cas/v4.2.2/cas-server-webapp/src/main/webapp/WEB-INF/spring-configuration/auditTrailContext.xml

 


 

c:auditTrailManagers-ref="auditTrailManager"

 

par

 

c:auditTrailManagers-ref="auditTrailManagers"

 

 

en dessous de ce bean rajoutez ceci

 

    <bean id="serviceAuditTrailManager" class="org.esupportail.cas.audit.support.ServiceAuditTrailManager"/>
 
    <util:list id="auditTrailManagers" value-type="java.lang.String">
        <ref bean="serviceAuditTrailManager"/>
        <ref bean="auditTrailManager"/>
    </util:list>


 

# mkdir src/main/java/org/esupportail/cas/audit/support/

 

Insérez le fichier ServiceAuditTrailManager.java dans ce dossier

 

        <RollingFile name="serviceStatsAppender" fileName="/home/tomcat/sso-cas/logs/serviceStats.log" append="true"
 filePattern="/home/tomcat/sso-cas/logs/serviceStats-%d{yyyy-MM-dd-HH}-%i.log">
            <PatternLayout pattern="%m%n"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="10 MB"/>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>

 

 

        <AsyncLogger name="org.esupportail.cas.audit.support.ServiceAuditTrailManager" level="info" additivity="false" includeLocation="true">
           <AppenderRef ref="console"/>
           <AppenderRef ref="serviceStatsAppender" />
        </AsyncLogger>

 

Injection dans Agimus-NG (Logstash)

Vous pouvez utiliser les fichiers du répertoire  logstash/casrequest :  https://github.com/EsupPortail/agimus-ng/tree/master/logstash/casRequest

Pour lire et injecter dans Agmius-NG le fichier résultant du CAS

Tableau de bord CAS

A venir :