Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: Migrated to Confluence 5.3
Astuce
titleAdaptation d'un serveur CAS existant

Cette page décrit l'installation de A à Z d'un nouveau serveur CAS qui permet :

  • l'authentification transparente des utilisateurs par la transmission de tickets Kerberos
  • l'alimentation automatique d'un royaume Kerberos à partir des utilisateurs LDAP lors de leur connexion

Il est facile pour un administrateur CAs d'extraire de cette documentation les éléments nécessaires à l'adaptation d'un serveur CAS existant pour lui donner les fonctionnalités voulues.

Sommaire

Nom du serveur

cas-kerb.univ-rennes1.fr

Système

RedHat Entreprise 5

Ouverture de ports

ssh (22 tcp)
https

Sommaire

Nom du serveur

cas-kerb.univ-rennes1.fr

Système

RedHat Entreprise 5

Ouverture de ports

ssh (22 tcp)
https (443)

Installation système

Installer les packages Tomcat (yum install tomcat5), Apache (yum install httpd), puis Maven ::

Bloc de code
[root@cas-kerb ~]# cd /usr/local
[root@cas-kerb local]# wget ftp://ftp.inria.fr/pub/Apache/maven/binaries/apache-maven-2.2.1-bin.tar.gz
--2010-03-09 10:35:41--  ftp://ftp.inria.fr/pub/Apache/maven/binaries/apache-maven-2.2.1-bin.tar.gz
           => `apache-maven-2.2.1-bin.tar.gz'
Resolving ftp.inria.fr... 192.93.2.32
Connecting to ftp.inria.fr|192.93.2.32|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD /pub/Apache/maven/binaries ... done.
==> SIZE apache-maven-2.2.1-bin.tar.gz ... 2840961
==> PASV ... done.    ==> RETR 
Bloc de code
[root@cas-kerb ~]# cd /usr/local
[root@cas-kerb local]# wget ftp://ftp.inria.fr/pub/Apache/maven/binaries/apache-maven-2.2.1-bin.tar.gz
--2010-03-09 10:35:41--  ftp://ftp.inria.fr/pub/Apache/maven/binaries/apache-maven-2.2.1-bin.tar.gz
           => `apache-maven-2.2.1-bin.tar.gz'
Resolving ftp.inria.fr... 192.93.2.32
Connecting to ftp.inria.fr|192.93.2.32|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD /pub/Apache/maven/binaries ... done.
==> SIZE apache-maven-2.2.1-bin.tar.gz ... 2840961
==> PASV ... done.    ==> RETR apache-maven-2.2.1-bin.tar.gz ... done.
Length: 2840961 (2.7M)
100%[================================>] 2,840,961   2.01M/s   in 1.3s
2010-03-09 10:35:43 (2.01 MB/s) - `apache-maven-2.2.1-bin.tar.gz' saved [2840961]
[root@cas-kerb local]# tar xf apache-maven-2.2.1-bin.tar.gz
[root@cas-kerb local]# ln -s apache-maven-2.2.1 maven2
[root@cas-kerb local]# cd /etc/profile.d
[root@cas-kerb profile.d]# cat > maven2.sh
export PATH=$PATH:/usr/local/maven2/bin
[root@cas-kerb profile.d]# chmod 644 maven2.sh
[root@cas-kerb profile.d]# . maven2.sh
[root@cas-kerb profile.d]#

Installation de CAS

Télécharger la dernière version de CAS depuis http://www.jasig.org/cas/download et décompresser :

 ... done.
Length: 2840961 (2.7M)
100%[================================>] 2,840,961   2.01M/s   in 1.3s
2010-03-09 10:35:43 (2.01 MB/s) - `apache-maven-2.2.1-bin.tar.gz' saved [2840961]
[root@cas-kerb local]# tar xf apache-maven-2.2.1-bin.tar.gz
[root@cas-kerb local]# ln -s apache-maven-2.2.1 maven2
[root@cas-kerb local]# cd /etc/profile.d
[root@cas-kerb profile.d]# cat > maven2.sh
export PATH=$PATH:/usr/local/maven2/bin
[root@cas-kerb profile.d]# chmod 644 maven2.sh
[root@cas-kerb profile.d]# . maven2.sh
[root@cas-kerb profile.d]#

Installation de CAS

Télécharger la dernière version de CAS depuis http://www.jasig.org/cas/download et décompresser :

Bloc de code
[root@cas-kerb ~]# cd /usr/local
[root@cas-kerb local]# wget http://www.ja-sig.org/downloads/cas/cas-server-3.3.5-release.tar.gz
--2010-03-09 09:25:51--  http://www.ja-sig.org/downloads/cas/cas-server-3.3.5-release.tar.gz
Resolving www.ja-sig.org... 128.112.131.108
Connecting to www.ja-sig.org|128.112.131.108|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14467126 (14M) [application/x-gzip]
Saving to: `cas-server-3.3.5-release.tar.gz'
100%[========================>] 14,467,126   427K/s   in 15s
2010-03-09 09:26:07 (919 KB/s) - `cas-server-3.3.5-release.tar.gz' saved [14467126/14467126]
Bloc de code
[root@cas-kerb ~]# cd /usr/local
[root@cas-kerb local]# wget http://www.ja-sig.org/downloads/cas/tar xf cas-server-3.3.5-release.tar.gz
--2010-03-09 09:25:51--  http://www.ja-sig.org/downloads/cas/[root@cas-kerb local]# cd cas-server-3.3.5-release.tar.gz
Resolving www.ja-sig.org... 128.112.131.108
Connecting to www.ja-sig.org|128.112.131.108|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14467126 (14M) [application/x-gzip]
Saving to: `cas-server-3.3.5-release.tar.gz'
100%[========================>] 14,467,126   427K/s   in 15s
2010-03-09 09:26:07 (919 KB/s) - `cas-server-3.3.5-release.tar.gz' saved [14467126/14467126]
[root@cas-kerb local]# tar xf cas-server-3.3.5-release.tar.gz
[root@cas-kerb local]# cd cas-server-3.3.5
[root@cas-kerb cas-server-3.3.5]#
[root@cas-kerb cas-server-3.3.5]#

Pour diminuer les temps de compilation, on ajoute la propriété skipTests au plugin maven-sunfire dans le fichier pom.xml à la racine du projet :

Bloc de code
xml
xml
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
    <includes>
      <include>**/*Tests.java</include>
    </includes>
    <excludes>
      <exclude>**/Abstract*.java</exclude>
    </excludes>
  </configuration>
</plugin>

Créer un répertoire cas-server-rennes1 dans lequel seront stockées toutes les personnalisations et y ajouter le fichier pom.xml suivant :

...

Après redémarrage de Apache et Tomcat, le serveur CAS doit désormais répondre sur l'URL https://cas-kerb.univ-rennes1.fr (sur le port 80 par défaut en HTTP).

Passage en HTTPS

Installer si nécessaire le package mod_ssl (yum install mod_ssl).

Installerle certificat x509 et la cléprivée du serveur dans les répertoires appropriés (/etc/pki/tls/

Configuration de Apache

Installer le certificat du serveur en éditant /etc/httpd/conf.d/ssl.conf et modifier les lignes suivantes dans le virtual host _default_:443 :

Bloc de code
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateFile /etc/pki/tls/privatecerts/cas-kerb.univ-rennes1.fr.pem
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
SSLCertificateKeyFile /etc/pki/tls/private/cas-kerb.univ-rennes1.fr.key

...

Après redémarrage de Apache, le serveur CAS doit désormais répondre sur l'URL https://cas.ifsic.univ-rennes1.fr  (sur le port 443 par défaut en HTTPS).

Astuce
titleSuppression de l'accès en HTTP

Ne pas oublier de supprimer la ligne suivante de /etc/httpd/conf/httpd.conf :

Bloc de code
Listen 80

Ajout de l'authentification LDAP

...

Bloc de code
[root@cas-kerb ~]# cd /etc
[root@cas-kerb etc]# chown root:tomcat http.keytab
[root@cas-kerb etc]# chmod 640 http.keytab
[root@cas-kerb etc]#.keytab
[root@cas-kerb etc]# chmod 640 http.keytab
[root@cas-kerb etc]#
Astuce
titleDebug

Ajouter dans le fichier /etc/tomcat5/tomcat5.conf les lignes suivantes :

Bloc de code
JAVA_OPTS="$JAVA_OPTS -Dcom.ibm.security.jgss.debug=all"
JAVA_OPTS="$JAVA_OPTS -Dsun.security.jgss.debug=true"
JAVA_OPTS="$JAVA_OPTS -Dsun.security.krb5.debug=true"
JAVA_OPTS="$JAVA_OPTS -Djava.security.debug=logincontext,policy,scl,gssloginconfig

Les logs se trouvent dans /var/log/tomcat5/catalina.out.

Configuration de CAS

Ajouter le support du handler spnego

...

Bloc de code
xml
xml
<bean id="authenticationManager" class="org.jasig.cas.authentication.AuthenticationManagerImpl">
  <property name="credentialsToPrincipalResolvers">
    <list>
      <!--  ... the others credentialsToPrincipalResolvers ... -->
      <bean class="org.jasig.cas.support.spnego.authentication.principal.SpnegoCredentialsToPrincipalResolver" />
    </list>
  </property>
  <property name="authenticationHandlers">
    <list>
      <bean class="org.jasig.cas.support.spnego.authentication.handler.support.JCIFSSpnegoAuthenticationHandler">
	<property name="authentication">
	  <bean class="jcifs.spnego.Authentication" />
	</property>
	<property name="principalWithDomainName" value="truefalse" />
	<property name="NTLMallowed" value="false"/>
      </bean>
      <!--  ... the others authenticationHandlers... -->
    </list>
  </property>
</bean>

...

La configuration de JCIFS se fait également dans le fichier login.conf pointé par le bean jcifsConfig. Créer ce fichier avec le contenu suivant :

Bloc de code
com.sun.security.jgss.krb5.accept
Bloc de code
jcifs.spnego.initiate {
  com.sun.security.auth.module.Krb5LoginModule
  required
  useKeyTabdebug=true
  keyTab="/etc/http.keytab"
};
jcifs.spnego.accept {
  com.sun.security.auth.module.Krb5LoginModule
  requiredstoreKey=true
  useKeyTab=true
  keyTab="/etc/http.keytab"
};
Astuce
On peut également ajouter l'option debug=true pour obtenir des informations dans catalina.out.
  principal="HTTP/cas-kerb.univ-rennes1.fr";
};

Configuration de Tomcat

Il faut passer à la JVM qui exécute Tomcat l'option -Djavax.security.auth.useSubjectCredsOnly=false, par exemple en éditant le fichier /etc/tomcat5/tomcat5.conf et en ajoutant la ligne suivante :

...

Bloc de code
xml
xml
<bean
    id="kerberosFeedConfig"
    class="org.esupportail.cas.adaptors.kerberosfeed.KerberosFeedConfig">
  <property name="kadminPath" value="/usr/kerberos/sbinbin/kadmin" />
  <property name="realm" value="UNIV-RENNES1.FR" />
  <property name="principal" value="cas/admin" />
  <property name="useKeytab" value="true" />
  <property name="keytab" value="/etc/cas-admin.keytab" />
  <!-- property name="password" value="secret" /-->
  <property name="passwordAllowedChars"
    value="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&amp;~#{([-|`\\_^@)]=+}$%*!:/;.,?&gt;&lt;" />
</bean>

...