Seveur SSO CAS avec Active Directory

Résolu/Fermé
Arrakis - 5 juin 2008 à 16:10
 Siman - 13 mai 2011 à 18:13
Bonjour,

Je cherche désespérément de l'aide pour la configuration de l'application web CAS (qui fonctionne sous tomcat), c'est une application mettant en place une SSO, mais qui nécessite évidemment une configuration par rapport au moyen d'authentification (LDAP,Kerberos etc...) dans mon cas Active Directory.

J'ai installé tomcat 6 et déployé la dernière version de CAS, ca fonctionne, maintenant faut le configurer.

J'ai lu dans la doc ( https://apereo.atlassian.net/wiki/spaces/CASUM ), section "Customizing and Deploying CAS", qu'il fallait modifier certains fichiers (pour activer l'authentification AD) et lancer 'mvn package' pour en quelque sorte 'compiler' l'application.

J'ai bien renseigné les différents fichiers mais la compil ne passe pas (en fait c'est les tests qui ne passent pas) j'ai une erreur au niveau des servlets qui "n'auraient pas été initialisés" mais je vois pas du tout en quoi ce message d'erreur est censé m'aider (je ne connais pas (plus) enormement java)

Je voudrais savoir si quelqu'un a déja réussi à faire ca ? (et surtout comment :-D)

Sinon, suis-je obligé de recompiler à chaque changement d'un fichier ? on ne peut pas modifier les fichiers déployés directement ?

et pour finir, si quelqu'un avait quelques liens sympa pour essayer de comprendre comment marche ces espèces de serveurs web en java ainsi que le déploiement des applications qui vont avec, je m'y suis mis il y a quelques jours mais je n'arrive pas a comprendre leur fonctionnement (ce qui m'aiderai pour résoudre mon problème je pense)

Merci de votre aide, c'est un projet de stage et j'aimerai beaucoup le finir, çà a l'air intéressant :) !!!

j'oubliais, le serveur d'hebergement de tomcat est sous Ubuntu 8.04 server

7 réponses

totor97480 Messages postés 3 Date d'inscription samedi 17 juillet 2010 Statut Membre Dernière intervention 8 août 2010 18
20 juil. 2010 à 14:10
Je vous laisse la réponse que j'ai laissé sur une autre page de ce forum. Si vous êtes bloquer faite le moi savoir pour que je vous aide:

Bonjour j'ai réalisé un stage où j'ai du mettre en place un serveur CAS. Je vous montre comment faire:

Ce manuel d'utilisation est conçu pour les machines Ubuntu 9.10, les logiciels Tomcat 6, Maven 2 et cas-server-3.3. Il faut également avoir accès à un Active Directory installer sur Windows Server 2003. Le domaine sera sce.local. Il est aussi necessaire de créer dans l'Active directory un user qui aura les droits d'interroger l'AD. Mon user sera casUser avec le mot de passe motdepasse.

1. Installation de Tomcat
Il est important de bien installer Tomcat afin que CAS soit fonctionnel. Je vais donc expliquer comment bien le faire:

Tout d'abord, il faut vérifier si la jdk de sun est présente sur le poste.
Pour cela, il suffit de faire:

dpkg --get-selections | grep sun-java

Si la jdk est présente, il devrait s'afficher:

sun-java6-bin install
sun-java6-jdk install
sun-java6-jre install

Dans le cas contraire, il faut se rendre sur le site d' Ubuntu à la page suivante: http://doc.ubuntu-fr.org/java et installer les paquets OpenJDK 6 et Java 6 Sun ou bien via Synaptic.

Dans un second temps, il faut se rendre sur le site de Apache : http://tomcat.apache.org/ et cliquer sur le lien « Download » de la version 6.0.26 de Tomcat. Puis en-bas de la nouvelle page, dans « Binary Distributions », « Core », cliquez sur le lien « tar.gz ». Le téléchargement s'effectue.

Le fichier doit se trouver dans le dossier de téléchargement de votre home ou bien dans le dossier que vous avez spécifié dans votre navigateur. Rendez-vous dans ce dossier en utilisant le terminal et maintenant il faut le décompresser via cette commande:

tar xvzf apache-tomcat-6.0.26.tar.gz

Le serveur Apache est donc dans le home directory du téléchargement, mais ceci n'est pas judicieux. On va donc le déplacer avec la commande suivante:

mv apache-tomcat-6.0.26 /usr/local/tomcat

A ce stade, le serveur est installé, mais pas encore fonctionnel. En effet, Tomcat a besoin de la variable d'environnement JAVA_HOME et celle-ci n'est pas mise par défaut sur les systèmes. Pour cela, on édite le fichier bashrc avec la commande suivante:

gedit ~/.bashrc

Et on ajoute la ligne suivante:

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

A ce point, vous pouvez exécuter le stript startup.sh qui permettra le démarrage de Tomcat. Pour l'exécuter, il suffit de faire:

/usr/local/tomcat/bin/./startup.sh

Pour l'arrêter:

/usr/local/tomcat/bin/./shutdown.sh

Nous allons à présent faire un script pour lancer Tomcat au démarrage du serveur.
Éditez le fichier suivant:

gedit /etc/init.d/tomcat

et coller le scipt suivant à l'intérieur:

# Tomcat auto-démarrage
# Auteur : senti
# description: démarrage en automatique de tomcat
# nom du process: tomcat
# pid du fichier: /var/run/tomcat.pid

export JAVA_HOME=/usr/lib/jvm/java-6-openjdk

case $1 in
start)
sh /usr/local/tomcat/bin/startup.sh
;;
stop)
sh /usr/local/tomcat/bin/shutdown.sh
;;
restart)
sh /usr/local/tomcat/bin/shutdown.sh
sh /usr/local/tomcat/bin/startup.sh
;;
esac
exit 0

Pour exécuter la commande, il est nécessaire de lui donner les droits pour le faire:

chmod 755 /etc/init.d/tomcat

On peut maintenant tester le script ainsi:

/etc/init.d/tomcat start
/etc/init.d/tomcat stop
/etc/init.d/tomcat restart

Il ne reste plus qu'à créer des liens symboliques dans les répertoires de démarrage du système. Il faut donc faire:

ln -s /etc/init.d/tomcat /etc/rc1.d/K99tomcat
ln -s /etc/init.d/tomcat /etc/rc2.d/S99tomcat




Pour optimiser la sécurité du CAS, il faut créer un certificat SSL pour accéder aux connections « https ». Pour le créer, entrez dans le terminal en mode super-utilisateur (sudo -s) la ligne suivante:

keytool -genkey -alias tomcat -keyalg RSA -validity 10000

Puis renseignez les champs en indiquant pour le mot de passe keystore, « changeit ».
Il faut également modifier le fichier server.xml de Tomcat:

gedit /usr/local/tomcat/conf/server.xml

Et enlever les commentaires (<!-- - ->) au code suivant:

<!--
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
-- >

Toute application qui utilise la sécurité SSL de Tomcat doit importer le certificat. Vous pouvez exporter le certificat qui est compatible avec d'autres JVM keystores en executant la commande suivante:

keytool -export -alias tomcat -file server.crt

Puis entrez le mot de passe « changeit ». Et vous pouvez importer le « server.crt » dans d'autres JVM keystores en faisant:

keytool -import -file server.crt -keystore /usr/lib/jvm/java-6-openjdk/jre/lib/security/cacerts

Pour tester, redémarrez Tomcat. Vous devrez avoir accès à l'adresse suivante:

https://localhost:8443/


2. Installation de Maven

L'installation de Maven est indispensable afin de mettre en place CAS. Ainsi CAS est un projet développer en Java et Maven est un outil open-source de gestion et d'automatisation de développement Java. Maven va permettre de produire un logiciel à partir de ses sources, en garantissant le bon ordre de fabrication.

Pour le mettre en place, il faut se rendre sur le site de Apache Maven: http://maven.apache.org/ et cliquer sur le lien « Download » en haut à gauche. Sur la nouvelle page, cliquez sur le fichier mirroir « tar.gz »: apache-maven-2.2.1-bin.tar.gz, puis sur le premier lien: http://apache.multidist.com/maven/binaries/apache-maven-2.2.1-bin.tar.gz et téléchargez le fichier.

Rendez-vous dans le dossier où le fichier se trouve via le terminal, puis décompresser le ainsi:

tar xvzf apache-maven-2.2.1-bin.tar.gz

Déplacez le dossier créer dans /opt:

mv apache-maven-2.2.1 /opt

Ajoutez le bin directory au PATH:

export PATH=/opt/apache-maven-2.2.1/bin:$PATH

Enfin, vérifiez que Maven a bien été installé:

mvn --version

Voilà, Maven est correctement installé. Passons à présent à l'installation de CAS.


3. Installation de CAS

Nous allons installer le serveur CAS 3.3. Rendez-vous à l'adresse suivante: https://github.com/apereo/cas/releases et cliquez sur la lien « CAS Server 3.3 (TAR GZ) » de la version CAS Server 3.3 Release. Le téléchargement effectué, extrayez le fichier comme suit:

tar xvzf ~/Téléchargements/cas-server-3.3-release.tar.gz

Puis déplacez le fichier dans /opt:

mv cas-server-3.3 /opt

A ce stade, CAS est installer et nous pouvons le tester en copiant le fichier .war dans le webapps de Tomcat:

mv /opt/cas-server-3.3/modules/cas-server-webapp-3.3.war /usr/local/tomcat/webapps/cas.war

En vous connectant à l'adresse http://localhost:8080/cas, vous devrez accéder à la page d'authentification de CAS et en indiquant comme identifiant et mot de passe le même mot, la connexion est réaliser:


4. Configuration de CAS avec un Active Directory

La tache la plus importante et la plus délicate est celle-ci: configurer le CAS avec l'Active Directory. Pour y arriver, éditez le fichier pom.xml:

gedit /opt/cas-server-3.3/cas-server-webapp/pom.xml

En ajoutant la portion de code xml suivante afin d'indiquer à CAS que l'on veut utiliser le module de connexion à un Active Directory:

<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>cas-server-support-ldap</artifactId>
<version>${project.version}</version>
</dependency>
Nous allons maintenant configurer l'accès à l'annuaire. Pour cela, éditez le fichier deployerConfigContext.xml:

gedit /opt/cas-server-3.3/cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml

Et ajoutez le code suivant avant la dernière ligne « </beans> »:

<bean id="contextSource" class="org.jasig.cas.adaptors.ldap.util.AuthenticatedLdapContextSource">
<property name="anonymousReadOnly" value="false" />
<property name="pooled" value="true"/>
<property name="urls">
<list>
<!-- Entrez ici l'adresse de votre Active Directory -->
<value>ldap://192.44.44.44:389</value>
</list>
</property>
<!-- Cette ligne est à adapter selon le chemin où se trouve votre utilisateur -->
<property name="userDn" value="CN=casUser,CN=Users,DC=sce,DC=local"/>
<!-- Renseignez ici le mot de passe de votre user -->
<property name="password" value="motdepasse"/>
<property name="baseEnvironmentProperties">
<map>
<entry>
<key>
<value>java.naming.security.authentication</value>
</key>
<value>simple</value>
</entry>
</map>
</property>
</bean>

Enfin, il faut préciser la méthode utilisée pour rechercher un login dans l'annuaire. Ajoutez cette portion de code dans le fichier deployerConfigContext.xml à la place du SimpleAuthenticationHandler. Supprimez le code suivant:

<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

Et remplacez le par celui-ci:

<bean class="org.jasig.cas.adaptors.ldap.BindLdapAuthenticationHandler">
<property name="filter" value="sAMAccountName=%u" />
<!-- Renseignez ici votre adresse ici sce.local donc DC=sce,DC=local -->
<property name="searchBase" value="DC=sce,DC=local" />
<property name="contextSource" ref="contextSource" />
<property name="ignorePartialResultException" value="yes" />
</bean>

Maintenant, il ne reste plus qu'à créer le fichier .war en adéquation avec les modifications faites. Pour cela, rendez-vous dans le dossier cas-server-webapp:

cd /opt/cas-server-3.3/cas-server-webapp

Lancez la commande:

mvn package

Cela va prendre un peu de temps car Maven calcule toutes les dépendances.
Une fois terminé, copiez le nouveau fichier cas.war dans le répertoire de webapps de Tomcat:

cp /opt/cas-server-3.3/cas-server-webapp/target/cas.war /usr/local/tomcat/webapps

N.B: Si l'ancien fichier cas.war est présent, il faut le supprimer:

chmod -R 777 /usr/local/tomcat/webapps/
rm -R /usr/local/tomcat/webapps/

Voilà, c'est fini pour l'installation et la configuration de CAS avec l'Active Directory. Vous pouvez redémarrer Tomcat:

/etc/init.d/tomcat restart

Et aller à l'adresse http://localhost:8080/cas/login, en s'identifiant avec des utilisateurs présents dans l'Active Directory.
9