...
Selon les procédures en vigueur dans l'établissement, il est également possible de créer le compte dans le royaume Kerberos lors Kerberoslors de la première validation du compte à travers une interface web dédiée (comme cela est fait pour l'interface Sésame à l'université de Rennes 1).
...
L'alimentation du royaume Kerberos est Kerberosest faite par un wrapper de AuthenticationHandler ; de cette manière, elle peut être activée pour pour certains handlers seulement.
La configuration de l'accès au serveur Kerberos est mutualisée dans un bean :
Modifications des sources
On crée tout d'abord un module supplémentaire nommé cas-server-integration-kerberosfeed en installant les sources du zip attaché.
On ajoute le nouveau module dans la liste des modules de /pom.xml :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<modules>
<module>cas-server-core</module>
[...]
<module>cas-server-webapp</module>
<module>cas-server-integration-kerberosfeed</module>
</modules> |
On joute également la propriété skipTests au plugin maven-sunfire pour éviter de rejouer tous les tests à la compilation :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<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>
|
Pour compiler le nouveau module (nécessaire après tout changement), exécuter :
| Bloc de code |
|---|
mvn \-pl cas-server-integration-kerberosfeed install |
Ajouter une dépendance du module cas-server-webapp vers le nouveau module dans /cas-server-webapp/pom.xml :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<dependency>
<groupId>org.jasig.cas</groupId>
<artifactId>cas-server-integration-kerberosfeed</artifactId>
<version>${project.version}</version>
</dependency> |
A chaque fois que l'on modifie la configuration du module cas-server-webapp, exécuter :
| Bloc de code |
|---|
mvn -pl cas-server-webapp package |
Cela créee le war /cas-server-webapp/target/cas.war qui peut être déployé.
Configuration
Les beans ci-dessous sont dans le fichier /cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml.
On remplace tout d'abord le bean FastBindLdapAuthenticationHandler par :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<bean class="org.esupportail.cas.adaptors.kerberosfeed.KerberosFeedAuthenticationHandlerWrapper" >
<property name="authenticationHandler">
<bean | ||||
| Bloc de code | ||||
<bean id="kerberosConfig" class="org.esupportailjasig.cas.adaptors.kerberosfeedldap.KerberosFeedConfigFastBindLdapAuthenticationHandler" > <property name="realmfilter" value="UNIV-RENNES1.FRuid=%u,ou=people,dc=univ-rennes1,dc=fr" /> <property name="principalcontextSource" valueref="root/admincontextSource" /> </bean> </property> <!-- | The configuration used to feed the Kerberos Realm, mandatory. --> <property name="useKeyTabconfig" valueref="truekerberosFeedConfig" /> <!-- | The registry used to store the usernames of the users that have already been added | to the realm. Defaults to an 'in memory' implementation where addings will be | lost on server startup. --> <property name="keytabregistry" valueref="/etc/cas.keytabkerberosFeedRegistry" /> </bean> |
Si l'on veut alimenter le royaume Kerberos à partir des utilisateurs authentifiés dans l'annuaire LDAP, on utilisera l'AuthenticationHandler suivant :
Le bean kerberosFeedConfig mutualise la configuration de l'accès au serveur Kerberos :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<!--
| The configuration used to feed the Kerberos Realm.
| The values below are used to perform a bash kadmin command.
--><bean id="kerberosFeedConfig" | ||||
| Bloc de code | ||||
<bean class="org.esupportail.cas.adaptors.kerberosfeed.KerberosFeedAuthenticationHandlerWrapper" KerberosFeedConfig"> <!-- | The name of the Kerberos realm, mandatory. --> <property name="realm" value="authenticationHandler"> <bean class="org.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler" > UNIV-RENNES1.FR" /> <!-- | The name of the principal used to authenticate in kadmin, defaults to cas/admin. --> <property name="principal" value="cas/admin" /> <!-- | Set this property to true to use a keytab to authenticate in kadmin (preferred), or false to use | a password. Defaults to true. --> <property name="useKeytab" value="true" /> <!-- | The name of the keytab used when useKeytab is set to true (unused otherwise). | Defaults to /etc/admin.keytab. --> <property name="filterkeytab" value="uid=%u,ou=people,dc=univ-rennes1,dc=fr" /> "/etc/admin.keytab" /> <!-- | The password used authenticate in kadmin, defaults to secret (you shall probably | change it since kadmin authentication will fail with the default value). --> <!-- property name="password" value="secret" /--> <!-- | A string that contains the chars allowed for the users' passwords (set to the default here). --> <property name="contextSourcepasswordAllowedChars" ref="contextSource" /> </bean> </property>value="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&~#{([-|`\\_^@)]=+}$%*!:/;.,?><" /> </bean> |
Enfin le bean suivant est le registre utilisé pour mémoriser les noms des utilisateurs qui ont déjà été alimentés dans le royaume Kerberso (pour ne pas rejour deux fois) :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<!-- | The registry used to store the ids of the users that have already been added | to the realm. Unlike the default implementation where usernames are backed to | memory, the implementation below uses a Berkeley DB and thus is persistent. --> <bean id="kerberosFeedRegistry" class="org.esupportail.cas.adaptors.kerberosfeed.registry.BerkeleyDbRegistryImpl"> <!-- | The path used to store the data (must be writable by the tomcat user). | Defaults to /tmp. --> <property name="kerberosConfigdbPath" refvalue="kerberosConfig/tmp" /> </bean> |
Voir plus loin pour le codex