Rappel - ProxyCAS
Le ProxyCas classique nécessite que le service cible soit cassifié.
Pour ce faire, on peut cassifier l'authentification du service cible (serveur sftp, serveur imap , ...) via pam_cas par exemple -ou encore mod_cas d'apache pour un service web livré par apache, etc..
Dans ce cadre, uPortal, qui agit en proxyCAS, peut alors transmettre à la portletqui le demande (telle qu'email-preview, esup-filemanager, ...) un casProxyTicket.
Ce mécanisme et sa mise en place est décrit sur la page ci-avant.
Limitations du ProxyCAS
D'autres services proposent une authentification moins souple, non maîtrisée, non cassifiable.
C'est le cas notamment des services proposées par les solutions Microsoft Windows: Microsoft Exchange, montages CIFS Windows.
Solutions abordables éventuellement envisageables
La seule solution abordable (hors mécanismes kerberos et similaires) est alors de s'authentifier sur ces services avec le username/password de l'utilisateur. Il faut donc que la portlet en ait connaissance.
On peut alors :
- redemander à l'utilisateur de ressaisir son password dans un formulaire dédié à la portlet ;
- utiliser un password commun/générique (voire un username/password commun/générique)
- récupérer le password en clair depuis une base de données, le ldap, ...
- ... et récupérer le password en clair depuis le serveur CAS
Cette dernière option s'appelle le clearPass CAS.
Mise en place du clearPass CAS
Le clearPass CAS permet à uPortal de récupérer le mot de passe en clair de l'utilisateur. Ce mot de passe peut ensuite être fourni à toute portlet demandant l'attribut utilisateur "password".
Aussi la mise en place de cette extension du protocole CAS se fait :
- sur CAS
- et sur Esup-uPortal
Pour CAS, nous référons à ces documentations : https://wiki.jasig.org/display/casum/clearpass - si vous utilisez memcached, cette page est à consulter également : https://wiki.jasig.org/display/CASUM/ClearPass+and+Multiple+Server+Configurations
Pour uPortal, nous vous référons à cette documentations : https://wiki.jasig.org/display/UPM40/Caching+and+Re-playing+Credentials
... et nous vous donnons un exemple de configuration ; diff git issu d'un Esup-uPortal 4.15 :
diff --git a/uportal-war/src/main/resources/properties/contexts/portletContainerContext.xml b/uportal-war/src/main/resources/properties/contexts/portletContainerContext.xml
index 5b51eeb..d97e3f8 100644
--- a/uportal-war/src/main/resources/properties/contexts/portletContainerContext.xml
+++ b/uportal-war/src/main/resources/properties/contexts/portletContainerContext.xml
@@ -114,10 +114,10 @@
| NOTE: Other configuration is also needed to obtain and cache the user's password so this bean can provide it.
| See the uPortal manual https://wiki.jasig.org/display/UPM40/Caching+and+Re-playing+Credentials.
-->
- <!--bean id="cachedPasswordUserInfoService"
+ <bean id="cachedPasswordUserInfoService"
class="org.jasig.portal.portlet.container.services.CachedPasswordUserInfoService">
<property name="decryptPassword" value="false"/>
- </bean-->
+ </bean>
<bean id="portalAdministrationService" class="org.apache.pluto.driver.container.DefaultPortalAdministrationService">
<property name="administrativeRequestListeners">
diff --git a/uportal-war/src/main/resources/properties/portal.properties b/uportal-war/src/main/resources/properties/portal.properties
index f1b4028..16ded0c 100644
--- a/uportal-war/src/main/resources/properties/portal.properties
+++ b/uportal-war/src/main/resources/properties/portal.properties
@@ -457,7 +457,7 @@ org.jasig.portal.portlets.googleWebSearch.search.result.type=googleCustom
## PORTAL_HOME (see applicationContext.xml). This is used to encrypt the user's password stored in-memory in the
## security context so malicious code or a hacker is less likely to obtain user's credentials.
##
-org.jasig.portal.portlets.passwordEncryptionKey=changeme
+org.jasig.portal.portlets.passwordEncryptionKey=esup_changeme_encryption-key
##
## Duration in milliseconds between attempts to retrieve the user's password from CAS ClearPass (if enabled).
diff --git a/uportal-war/src/main/resources/properties/security.properties b/uportal-war/src/main/resources/properties/security.properties
index 19aef54..60b64a7 100644
--- a/uportal-war/src/main/resources/properties/security.properties
+++ b/uportal-war/src/main/resources/properties/security.properties
@@ -46,8 +46,8 @@
## This is the factory that supplies the concrete authentication class
root=org.jasig.portal.security.provider.UnionSecurityContextFactory
-root.cas=org.jasig.portal.security.provider.cas.CasAssertionSecurityContextFactory
+root.cas=org.jasig.portal.security.provider.cas.clearpass.PasswordCachingCasAssertionSecurityContextFactory
root.simple=org.jasig.portal.security.provider.SimpleSecurityContextFactory
## principalToken and crednetialToken declare what tokens
@@ -95,7 +95,7 @@ authorizationProvider=org.jasig.portal.security.provider.AuthorizationServiceFac
org.jasig.portal.channels.CLogin.CasLoginUrl=https://cas.univ-ville.fr/login
## URL of the CAS clearPass password service
-#org.jasig.portal.security.provider.cas.clearpass.PasswordCachingCasAssertionSecurityContextFactory.clearPassCasUrl==${environment.build.cas.protocol}://${environment.build.cas.server}${environment.build.cas.context}/clearPass
+org.jasig.portal.security.provider.cas.clearpass.PasswordCachingCasAssertionSecurityContextFactory.clearPassCasUrl=https://cas.univ-ville.fr/clearPass
##
## Local Only Authentication