Généralités
Installer un fournisseur de services Shibboleth pour gérer des authentifications en fédération avec Esup-Portail
Frontal Apache
- Installer la brique fournisseur de services Shibboleth : Site du CRU
Dans shibboleth.xml, définir un chemin : '''Login'''
Dans la configuration Apache, protéger ce chemin :
<Location /Login> AuthType shibboleth ShibRequireSession On require valid-user </Location>
Serveur Tomcat Esup-portail
Configuration Tomcat
- Dans server.xml, modifier le connecteur AJP pour désactiver l'auth Tomcat :
<Connector port="[CATALINA_JK]" tomcatAuthentication="false" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
Configuration uPortal
- Dans security.properties, ajouter une authentification externe HTTP (basée sur REMOTE_USER) :
## Ajout auth remote pour Shibboleth root.shibboleth=org.jasig.portal.security.provider.RemoteUserSecurityContextFactory
- Dans portal.properties, implémenter la classe RemoteUserPersonManager pour l'interface IPersonManager (permet de récupérer la variable REMOTE_USER) :
# Class name of the concrete IPersonManager implementation to be used # org.jasig.portal.security.PersonManagerFactory.implementation=org.jasig.portal.security.provider.RemoteUserPersonManager
Gestion des attributs utilisateur
Attention, pas testé :
- Récupérer les attributs de l'utilisateur : Tiré de http://www.ja-sig.org/issues/browse/PERSONDIR-37
- télécharger http://www.ja-sig.org/issues/secure/attachment/11023/PERSONDIR-37.zip
Dans web.xml d'uPortal, déclarer un filtre sur la servlet de Login qui va lire les attributs HTTP de l'utilisateur via un bean httpHeaderAttributeSource :
<filter> <filter-name>HttpHeaderFilter</filter-name> <filter-class>org.jasig.portal.services.persondir.support.HttpHeaderFilter</filter-class> </filter> <filter-mapping> <filter-name>HttpHeaderFilter</filter-name> <servlet-name>Login</servlet-name> </filter-mapping>
Dans personDirectory.xml, déclarer le bean httpHeaderAttributeSource et faire la correspondance des attributs :
<bean id="httpHeaderAttributeSource" class="org.jasig.portal.services.persondir.support.HttpHeaderPersonAttributeDao"> <property name="httpHeaderAttributesToPortalAttributes"> <map> <entry key="HTTP_SHIB_PERSON_UID"> <value>uid</value></entry> <entry key="HTTP_SHIB_PERSON_COMMONNAME"> <value>cn</value></entry> <entry key="HTTP_SHIB_INETORGPERSON_DISPLAYNAME"> <value>displayname</value></entry> </map> </property> </bean>