casLogo
Version 3.4.6
Merci à FCS !

L’objectif est de mettre en place le NTLM au niveau de CAS afin d’éviter une mire de connexion si l’on peut récupérer l’authentification Windows de l’utilisateur.

Prérequis

Afin de gérer le NTLM il faut ajouter une dépendance à la librairie spnego.

Dans le fichier \cas-server-3.4.6\cas-server-webapp\pom.xml, ajouter le code :

<dependency>
 <groupId>org.jasig.cas</groupId>
 <artifactId>cas-server-support-spnego</artifactId>
 <version>4.0.0-RC3</version>
</dependency>

Configuration

Modifier le « flow »

Il s’agit de demander à CAS de vérifier l’authentification NTLM. Si cela échoue, on redirigera l’utilisateur vers la mire de connexion standard par exemple.

Dans le fichier \cas-server-3.4.6\cas-server-webapp\src\main\webapp\WEB-INF\loginWebflow.xml ajouter les actions suivantes avant le bloc <view-state id= »viewLoginForm » … /> :

<action-state id="startAuthenticate">
 <evaluate expression="negociateSpnego" />
 <transition on="success" to="spnego" />
</action-state>

<action-state id="spnego">
 <evaluate expression="spnego" />
 <transition on="success" to="sendTicketGrantingTicket" />
 <transition on="error" to="viewLoginForm" />
</action-state>

Ensuite, il faut remplacer la référence viewLoginForm par startAuthenticate dans les blocs <decision-state id= »gatewayRequestCheck » …/> et <decision-state id= »renewRequestCheck » …/>

Déclarer les beans spnego

Dans le fichier \cas-server-3.4.6\cas-server-webapp\src\main\webapp\WEB-INF\cas-servlet.xml, ajouter les deux beans suivants :

<bean id="negociateSpnego" p:ntlm="true" />

<bean id="spnego" p:ntlm="true" >
 <property name="centralAuthenticationService" ref="centralAuthenticationService"/>
</bean>

Charger les modules login

Créer le fichier \cas-server-3.4.6\cas-server-webapp\src\main\webapp\WEB-INF\login.conf et y ajouter les éléments suivants :

jcifs.spnego.initiate {
com.sun.security.auth.module.NTLoginModule required;
};
jcifs.spnego.accept {
com.sun.security.auth.module.NTLoginModule required;
};

Lien avec le domain controller

Modifier le fichier \cas-server-3.4.6\cas-server-webapp\src\main\webapp\WEB-INF\deployerConfigContext.xml. Dans le bean authenticationManager, ajouter le bean suivant à la liste credentialsToPrincipalResolvers :

<bean class="org.jasig.cas.support.spnego.authentication.principal.SpnegoCredentialsToPrincipalResolver" />

Dans ce même bean authenticationManager, ajouter le bean suivant à la liste des authenticationHandlers :

<bean>
 <property name="loadBalance" value="false" />
 <property name="domainController" value="DOMAIN_NAME" />
</bean>

Enfin, ajouter le bean suivant à la fin du fichier :

<bean name="jcifsConfig">
 <property name="jcifsDomain" value="DOMAIN_NAME" />
 <property name="jcifsDomainController" value="DOMAIN_IP" />
 <property name="loginConf" value="PATH_TO_LOGINCONF" />
</bean>

Toute cette configuration sera prise en compte lors de votre prochaine compilation (mvn package).

A vous de jouer!

Publicités