{"id":71,"date":"2018-12-18T15:31:29","date_gmt":"2018-12-18T14:31:29","guid":{"rendered":"http:\/\/blog.nosland.com\/?p=71"},"modified":"2018-12-18T15:34:27","modified_gmt":"2018-12-18T14:34:27","slug":"cas-sso","status":"publish","type":"post","link":"http:\/\/blog.nosland.com\/?p=71","title":{"rendered":"CAS &#8211; SSO"},"content":{"rendered":"\n<h3>1&nbsp;CAS&nbsp;: Central Authentication Service<\/h3>\n\n\n\n<p>CAS est un syst\u00e8me d\u2019authentification unique&nbsp;: on s\u2019authentifie sur un site Web, et on est alors authentifi\u00e9 sur tous les sites Web qui utilisent le m\u00eame serveur CAS.<\/p>\n\n\n\n<p>Il \u00e9vite de s\u2019authentifier \u00e0 chaque fois qu\u2019on acc\u00e8de \u00e0 une application en mettant en place un syst\u00e8me de ticket.<\/p>\n\n\n\n<h4>1.1&nbsp;PRINCIPE DE FONCTIONNEMENT<\/h4>\n\n\n\n<p>CAS est essentiellement un protocole bas\u00e9 sur des requ\u00eates HTTP pures. Certains messages sont cependant format\u00e9s en XML.<\/p>\n\n\n\n<p>Ce protocole est bas\u00e9 sur une notion d\u2019\u00e9change de tickets, un peu \u00e0 la mani\u00e8re de Kerberos. Ces tickets sont des \u00ab opaque handles \u00bb&nbsp;: ils ne transportent aucune information.<\/p>\n\n\n\n<p>Il y a deux tickets n\u00e9cessaires au fonctionnement de base, plus deux autres tickets dans le cas d\u2019utilisation de proxy CAS&nbsp;:<\/p>\n\n\n\n<ul><li>Ticket-Granting Cookie (TGC)<\/li><li>Service Ticket (ST)<\/li><li>Proxy-Granting-Ticket (PGT)<\/li><li>Proxy-Ticket (PT)<\/li><\/ul>\n\n\n\n<h5>1.1.1&nbsp;Ticket-Granting Cookie (TGC)<\/h5>\n\n\n\n<p>C\u2019est un cookie de session qui est transmis par le serveur CAS au navigateur du client lors de la phase de login. Ce cookie ne peut \u00eatre lu \/ \u00e9crit que par le serveur CAS, sur canal s\u00e9curis\u00e9 (HTTPS).<\/p>\n\n\n\n<p>Si le navigateur web n\u2019accepte pas les cookies, l\u2019utilisateur devra se r\u00e9-authentifier \u00e0 chaque appel au serveur CAS.<\/p>\n\n\n\n<h5>1.1.2&nbsp;Service Ticket (ST)<\/h5>\n\n\n\n<p>Ce ticket va servir \u00e0 authentifier une personne pour une application web donn\u00e9e. Il est envoy\u00e9 par le serveur CAS apr\u00e8s que l\u2019utilisateur se soit authentifi\u00e9, et est transport\u00e9 dans l\u2019URL.<\/p>\n\n\n\n<p>Ce ticket ne peut \u00eatre utilis\u00e9 qu\u2019une seule fois. Il y a ensuite dialogue direct entre l\u2019application web et le CAS via un GET HTTP, avec le ST en param\u00e8tre. En r\u00e9ponse, le serveur CAS retourne l\u2019identifiant de la personne, et donc l\u2019authentifie. Il invalide \u00e9galement le ticket (lib\u00e9ration des ressources associ\u00e9es).<\/p>\n\n\n\n<p>En fait, ce ticket concerne une personne, pour un service, et utilisable une seule fois.<\/p>\n\n\n\n<h5>1.1.3&nbsp;Proxy-Granting-Ticket (PGT)<\/h5>\n\n\n\n<p>Il est envoy\u00e9 par le serveur CAS \u00e0 une application web proxy CAS disposant d\u2019un ST valide. Ce ticket conf\u00e8re au proxy CAS la possibilit\u00e9 de demander au serveur CAS de g\u00e9n\u00e9rer un Proxy Ticket (PT) pour une application tierce et une personne donn\u00e9e.<\/p>\n\n\n\n<h5>1.1.4&nbsp;Proxy-Ticket (PT)<\/h5>\n\n\n\n<p>Il est g\u00e9n\u00e9r\u00e9 par le serveur CAS \u00e0 la demande d\u2019un proxy CAS. Il permet d\u2019authentifier l\u2019utilisateur pour un service distant, avec lequel le client web n\u2019a pas d\u2019acc\u00e8s direct. Le service distant l\u2019utilisera comme le ST.<\/p>\n\n\n\n<p>Il est possible d\u2019utiliser des proxies CAS en cascade.<\/p>\n\n\n\n<p>Dans le fonctionnement de CAS, le service ayant besoin de l\u2019authentification est en relation directe avec le serveur CAS lors de la validation du ticket. Ceci rend possible l\u2019utilisation de ce m\u00e9canisme pour transporter des informations compl\u00e9mentaires (autorisations, attributs,&#8230;).<\/p>\n\n\n\n<p>Le paquet fourni propose le n\u00e9cessaire pour mettre en \u0153uvre le protocole CAS&nbsp;; \u00e0 charge de l\u2019impl\u00e9menteur de d\u00e9velopper le module d\u2019authentification interne. Un module d\u2019authentification LDAP a \u00e9t\u00e9 r\u00e9cup\u00e9r\u00e9 pour les essais&nbsp;; il est \u00e0 am\u00e9liorer.<\/p>\n\n\n\n<p>Le portage de CAS vers uPortal se fait facilement (les biblioth\u00e8ques sont fournies). Dans ce cas, uPortal devient proxy CAS&nbsp;; il obtient donc un PGT du serveur CAS. Il est donc possible \u00e0 un canal qui utiliserait un service tiers sachant authentifier CAS de demander un PT pour ce service&nbsp;; des essais fructueux ont \u00e9t\u00e9 faits dans ce sens.<\/p>\n\n\n\n<h4>1.2&nbsp;FONCTIONNEMENT DE BASE<\/h4>\n\n\n\n<p>Le fonctionnement en mode non proxy est le suivant&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"http:\/\/cv.geniaut.fr\/Paris8\/wikiP8\/webdsi.univ-paris8.fr\/site\/Systeme\/Sso\/Images\/cas1.png\" alt=\"PIC\"\/><\/figure>\n\n\n\n<ol><li>Requ\u00eate initiale&nbsp;: le client web acc\u00e8de \u00e0 une appli web qui n\u00e9cessite authentification. Cette appli redirige la requ\u00eate vers l\u2019url login du serveur CAS, en https.&nbsp;<br>En param\u00e8tre du GET est pass\u00e9 l\u2019ID du service (c\u2019est en fait l\u2019URL de retour).<\/li><li>Authentification&nbsp;: le serveur CAS authentifie la personne gr\u00e2ce au m\u00e9canisme local d\u2019authentification (LDAP, kerberos, certificat, &#8230;).&nbsp;<br>Il redirige la requ\u00eate vers l\u2019appli initiale. Si le client web accepte les cookies, le TGC est positionn\u00e9.<\/li><li>Retour \u00e0 l\u2019application web avec le ST, pass\u00e9 en param\u00e8tre du GET.<\/li><li>Validation&nbsp;: L\u2019appli web acc\u00e8de directement au serveur CAS en http(s) (url validate ou serviceValidate), et passe en param\u00e8tres l\u2019ID de service (l\u2019URL) et le ST.&nbsp;<br>Le serveur CAS s\u2019assure de la validit\u00e9 du ticket&nbsp;; il retourne l\u2019uid de la personne. Le ticket ne peut plus \u00eatre rejou\u00e9.<\/li><\/ol>\n\n\n\n<p>A ce moment, la personne est authentifi\u00e9e, et l\u2019application connait son identifiant.<\/p>\n\n\n\n<h4>1.3&nbsp;FONCTIONNEMENT EN MODE PROXY<\/h4>\n\n\n\n<p>Pour utiliser certains services comme un webmail type Roundcube ou un serveur XMPP type Jappix, il se pose des probl\u00e8mes pour utiliser l\u2019authentificationCAS.<\/p>\n\n\n\n<p>Ces applications utilisent les identifiants des utilisateurs pour se connecter sur d\u2019autres serveurs&nbsp;: serveur imap pour roundcube et serveur jabber (XMPP) pour Jappix.<\/p>\n\n\n\n<p>Or lorsqu\u2019on identifie un utilisateur par le CAS on le fait via un ticket et \u00e0 aucun moment le mot de passe de l\u2019utilisateur n\u2019est accessible par le service qui l\u2019identifie (roundcube par exemple).<\/p>\n\n\n\n<p>Le \u201cCAS proxying\u201d consiste \u00e0 remplacer le mot de passe par un ticket fournis par le CAS, puis transmettre par le proxy ou CAS proxy client (roundcube) au service tiers ou Proxy Service (serveur imap).<\/p>\n\n\n\n<p>Il est donc n\u00e9cessaire de relier le service tiers (serveur imap) au CAS pour qu\u2019il puisse v\u00e9rifier ce ticket.<\/p>\n\n\n\n<p>Le fonctionnement en mode proxy est le suivant&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"http:\/\/cv.geniaut.fr\/Paris8\/wikiP8\/webdsi.univ-paris8.fr\/site\/Systeme\/Sso\/Images\/cas2.png\" alt=\"PIC\"\/><\/figure>\n\n\n\n<ol><li>Requ\u00eate initiale&nbsp;: le client web acc\u00e8de \u00e0 une appli web qui n\u00e9cessite authentification. Cette appli redirige la requ\u00eate vers l\u2019url login du serveur CAS, en https.&nbsp;<br>En param\u00e8tre du GET est pass\u00e9 l\u2019ID du service (c\u2019est en fait l\u2019URL de retour).<\/li><li>Authentification&nbsp;: le serveur CAS authentifie la personne gr\u00e2ce au m\u00e9canisme local d\u2019authentification (LDAP, kerberos, certificat, &#8230;).&nbsp;<br>Il redirige la requ\u00eate vers l\u2019appli initiale. Si le client web accepte les cookies, le TGC est positionn\u00e9.<\/li><li>Retour \u00e0 l\u2019application web avec le ST, pass\u00e9 en param\u00e8tre du GET.<\/li><li>Validation&nbsp;: L\u2019appli web acc\u00e8de directement au serveur CAS en http (url serviceValidate), et passe en param\u00e8tres l\u2019ID de service (l\u2019URL), le ST et une url de callback.&nbsp;<br>Si le ST est valide, le serveur retourne comme auparavant l\u2019identifiant de l\u2019utilisateur, et un PGT-id&nbsp;: ce n\u2019est pas le PGT, mais un index permettant de valider le PGT.<\/li><li>Envoi du PGT&nbsp;: en synchronisme, le serveur CAS g\u00e9n\u00e8re une connexion https vers l\u2019URL de callback de l\u2019appli proxy CAS&nbsp;; cette requ\u00eate contient le PGT, et le PGT-id. Le PGT a une dur\u00e9e de vie limit\u00e9e&nbsp;; seuls, les tickets TGC et PGT sont rejouables.&nbsp;<br>Maintenant, l\u2019application web proxy CAS dispose d\u2019un PGT propre \u00e0 l\u2019utilisateur. Gr\u00e2ce \u00e0 celui-ci, le proxy CAS pourra demander au CAS de lui g\u00e9n\u00e9rer des PT, qui sont l\u2019\u00e9quivalent du ST, mais pour des services (URLs) tiers.On suppose maintenant que le proxy CAS fait appel \u00e0 un service tiers n\u00e9cessitant authentification&nbsp;; \u00e7a peut \u00eatre tout type d\u2019application, ce qui compte, c\u2019est qu\u2019elle sache parler http. Dans l\u2019illustration, il s\u2019agit d\u2019un \u2019web service\u2019.<\/li><li>Demande d\u2019un PT&nbsp;: le proxy CAS g\u00e9n\u00e8re une requ\u00eate https vers le serveur CAS (url proxy), en passant en param\u00e8tres le PGT et le \u2019targetService\u2019&nbsp;: c\u2019est l\u2019URL de l\u2019application finale (ici, le web service). Si le PGT est valide, le CAS retourne un PT<\/li><li>Transmission du PT&nbsp;: le proxy CAS passe le PT au service tiers.<\/li><li>Validation&nbsp;: le service utilise le PT comme un ST&nbsp;: il acc\u00e8de directement au serveur CAS en http(s) (url proxyValidate), et passe en param\u00e8tre son ID de service et le PT. Le serveur CAS s\u2019assure de la validit\u00e9 du ticket, il retourne l\u2019identifiant de la personne et le proxy ou la liste de proxies travers\u00e9(s).<\/li><\/ol>\n\n\n\n<p>L\u2019utilisateur est alors authentifi\u00e9 par le web service.<\/p>\n\n\n\n<h3>2&nbsp;INSTALLATION<\/h3>\n\n\n\n<p>Nous nous basons sur une serveur Ubuntu 14.04 LTS. Nous partons sur la base que nous disposons d\u00e9j\u00e0 d\u2019un serveur LDAP qui va g\u00e9rer l\u2019authentification des utilisateurs. Nous utilisons la version 3.5.2 du serveur CAS.<\/p>\n\n\n\n<h4>2.1&nbsp;PARAMETRAGE DE L\u2019ANNUAIRE<\/h4>\n\n\n\n<p>On part sur le principe que l\u2019annuaire LDAP 389 est d\u00e9j\u00e0 install\u00e9 sur le serveur sous la forme d\u2019un replicat en lecture seule.<\/p>\n\n\n\n<p>Cette \u00e9tape n\u2019est pas obligatoire puisque l\u2019on pourrait directement utiliser l\u2019annuaire ma\u00eetre du laboratoire, mais cela augmente la s\u00e9curit\u00e9 globale du syst\u00e8me.<\/p>\n\n\n\n<h5>2.1.1&nbsp;OBJETS ET CLASSES<\/h5>\n\n\n\n<p>Le service CAS authentifie des utilisateurs&nbsp;: il suffit donc d\u2019avoir les individus dans l\u2019annuaire.<\/p>\n\n\n\n<p>L\u2019annuaire dispose entres autres des sch\u00e9mas eduperson.schema, supann.schema, nosland.schema, samba.schema permettant de r\u00e9f\u00e9rencer les personnes.<\/p>\n\n\n\n<p>Ces fichiers sont pr\u00e9sents dans l\u2019archive de la documentation.<\/p>\n\n\n\n<p><strong>Remarque&nbsp;:&nbsp;<\/strong>Il est pr\u00e9f\u00e9rable de dupliquer ce ldif sur le serveur CAS, m\u00eame si l\u2019action de r\u00e9plication copiera les objets et classes n\u00e9cessaires<\/p>\n\n\n\n<h5>2.1.2&nbsp;DIT<\/h5>\n\n\n\n<p>Sur le serveur LDAP ma\u00eetre et son esclave CAS, pour assurer la r\u00e9plication, il est n\u00e9cessaire de cr\u00e9er une base d\u00e9di\u00e9e aux objets manipul\u00e9s par CAS&nbsp;: les individus.<\/p>\n\n\n\n<p>Un sous-suffix \u201cou=people\u201d est cr\u00e9\u00e9 \u00e0 la base du suffix \u201cdc=nosland,dc=com\u201d, et c\u2019est ce suffix qui est r\u00e9pliqu\u00e9 sur le serveur esclave.<\/p>\n\n\n\n<p>Les domaines g\u00e9r\u00e9s dans l\u2019annuaire repr\u00e9sentent l\u2019ensemble des mat\u00e9riels pr\u00e9sents dans le r\u00e9seau des laboratoires.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"456\" height=\"373\" src=\"http:\/\/blog.nosland.com\/wp-content\/uploads\/2018\/12\/image.png\" alt=\"\" class=\"wp-image-69\"\/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>FIGURE&nbsp;1:&nbsp;<\/strong>DIT pour CAS<\/p>\n\n\n\n<p>Voici un exemple de fichier LDIF correspondant au DIT&nbsp;:<\/p>\n\n\n\n<p>dn:&nbsp;ou=people,dc=nosland,dc=com&nbsp;<br>objectClass:&nbsp;organizationalunit&nbsp;<br>objectClass:&nbsp;top&nbsp;<br>ou:&nbsp;dns&nbsp;<br><br>dn:&nbsp;uid=nospheratus,ou=people,dc=nosland,dc=com&nbsp;<br>objectClass:&nbsp;sambaSamAccount&nbsp;<br>objectClass:&nbsp;person&nbsp;<br>objectClass:&nbsp;organizationalPerson&nbsp;<br>objectClass:&nbsp;supannPerson&nbsp;<br>objectClass:&nbsp;inetOrgPerson&nbsp;<br>objectClass:&nbsp;shadowAccount&nbsp;<br>objectClass:&nbsp;posixAccount&nbsp;<br>objectClass:&nbsp;account&nbsp;<br>objectClass:&nbsp;top&nbsp;<br>cn:&nbsp;NosPHeratus&nbsp;<br>gidNumber:&nbsp;666<br>homeDirectory:&nbsp;\/users\/nospheratus&nbsp;<br>sambaSID:&nbsp;S\u2212XXXXXXXXXXXXXXXXXXXXXXXXXXXX&nbsp;<br>sn:&nbsp;NosPHeratus<br>uid: nospheratus<br>uidNumber:&nbsp;666<br>displayName:&nbsp;NosPHeratus&nbsp;<br>gecos: NosPHeratus,demandeur&nbsp;NosPHeratus,Permanent&nbsp;<br>givenName:&nbsp;NosPHeratus<br>labeledURI:&nbsp;http:\/\/cas.nosland.com\/~nospheratus\/&nbsp;<br>loginShell:&nbsp;\/bin\/bash&nbsp;<br>mail:&nbsp;nospheratus@nosland.com&nbsp;<br>preferredLanguage:&nbsp;fr&nbsp;<br>sambaAcctFlags:&nbsp;[U]&nbsp;<br>sambaLMPassword:&nbsp;XXXXXXXXXXXXXXXXXXXXXXXXXXXX&nbsp;<br>sambaNTPassword:&nbsp;XXXXXXXXXXXXXXXXXXXXXXXXXXXX&nbsp;<br>sambaPasswordHistory:&nbsp;000000000000000000000000000000000000000000000000000000&nbsp;<br>&nbsp;0000000000&nbsp;<br>sambaPwdLastSet:&nbsp;765908865&nbsp;<br>sambaPwdMustChange:&nbsp;256899754&nbsp;<br>shadowLastChange:&nbsp;15392&nbsp;<br>shadowMax:&nbsp;1000&nbsp;<br>shadowWarning:&nbsp;7&nbsp;<br>supannAliasLogin:&nbsp;nospheratus<br>supannCivilite:&nbsp;M.&nbsp;<br>supannListeRouge:&nbsp;TRUE&nbsp;<br>supannParrainDN:&nbsp;uid=nospheratus,ou=people,dc=nosland,dc=com&nbsp;<br>telephoneNumber:&nbsp;+33&nbsp;6 XX XX XX XX&nbsp;<br>userPassword::&nbsp;XXXX<\/p>\n\n\n\n<h4>2.2&nbsp;TOMCAT<\/h4>\n\n\n\n<p>CAS n\u00e9cessite un conteneur J2EE pour fonctionner.<\/p>\n\n\n\n<p>Au choix, on peut utiliser la version Tomcat de la distribution ou t\u00e9l\u00e9charger les binaires du site d\u2019Apache&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttp:\/\/tomcat.apache.org\n<\/div><\/figure>\n\n\n\n<p>Voil\u00e0 la liste des commandes pour faire fonctionner le serveur d\u2019applications&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-luminous-vivid-amber-color has-very-dark-gray-background-color\">#&nbsp;apt\u2212get&nbsp;update&nbsp;<br>#&nbsp;apt\u2212get&nbsp;install&nbsp;openjdk\u22126\u2212jdk&nbsp;<br>#&nbsp;apt\u2212get&nbsp;install&nbsp;tomcat6&nbsp;<br>#&nbsp;apt\u2212get&nbsp;install&nbsp;maven2&nbsp;<br>#&nbsp;apt\u2212get&nbsp;install&nbsp;ant&nbsp;<br>#&nbsp;apt\u2212get&nbsp;install&nbsp;maven\u2212ant\u2212helper<\/p>\n\n\n\n<p>Note&nbsp;: il peut \u00eatre n\u00e9cessaire d\u2019installer maven (version 3) en lieu et place du paquet maven2 sur les dernieres versions ubuntu suivant la version cas r\u00e9cup\u00e9r\u00e9e (cf ci-apr\u00e8s).<\/p>\n\n\n\n<p>A ce stade, on peut d\u00e9j\u00e0 v\u00e9rifier l\u2019activit\u00e9 du serveur d\u2019applications&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"http:\/\/cv.geniaut.fr\/Paris8\/wikiP8\/webdsi.univ-paris8.fr\/site\/Systeme\/Sso\/Images\/tomcat.png\" alt=\"PIC\"\/><\/figure>\n\n\n\n<h4>2.3&nbsp;CERTIFICAT<\/h4>\n\n\n\n<p>Pour utiliser un serveur CAS, il faut que les connexions soient encrypt\u00e9es en SSL.<\/p>\n\n\n\n<p>Pour cela, il faut soit utiliser un certificat valide (fourni par l\u2019Universit\u00e9 par exemple), soit en g\u00e9n\u00e9rer un.<\/p>\n\n\n\n<p>Dans le second cas, il faut commencer par le g\u00e9n\u00e9rer le keystore&nbsp;:<\/p>\n\n\n\n<p>#&nbsp;keytool&nbsp;\u2212genkey&nbsp;\u2212alias&nbsp;tomcat&nbsp;\u2212keypass&nbsp;changeit&nbsp;\u2212keyalg&nbsp;RSA&nbsp;<br>Tapez&nbsp;le&nbsp;mot&nbsp;de&nbsp;passe&nbsp;du&nbsp;Keystore&nbsp;:&nbsp;<br>Ressaisissez&nbsp;le&nbsp;nouveau&nbsp;mot&nbsp;de&nbsp;passe&nbsp;:&nbsp;<br>Quels&nbsp;sont&nbsp;vos&nbsp;prenom&nbsp;et&nbsp;nom&nbsp;?&nbsp;<br>&nbsp;&nbsp;[Unknown]&nbsp;:&nbsp; NosPHeratus<br>Quel&nbsp;est&nbsp;le&nbsp;nom&nbsp;de&nbsp;votre&nbsp;unite&nbsp;organisationnelle&nbsp;?&nbsp;<br>&nbsp;&nbsp;[Unknown]&nbsp;:&nbsp;&nbsp;NosLand<br>Quelle&nbsp;est&nbsp;le&nbsp;nom&nbsp;de&nbsp;votre&nbsp;organisation&nbsp;?&nbsp;<br>&nbsp;&nbsp;[Unknown]&nbsp;:&nbsp;&nbsp;DSI&nbsp;<br>Quel&nbsp;est&nbsp;le&nbsp;nom&nbsp;de&nbsp;votre&nbsp;ville&nbsp;de&nbsp;residence&nbsp;?&nbsp;<br>&nbsp;&nbsp;[Unknown]&nbsp;:&nbsp;&nbsp;RIOZ&nbsp;<br>Quel&nbsp;est&nbsp;le&nbsp;nom&nbsp;de&nbsp;votre&nbsp;etat&nbsp;ou&nbsp;province&nbsp;?&nbsp;<br>&nbsp;&nbsp;[Unknown]&nbsp;:&nbsp;&nbsp;Franche-Comte<br>Quel&nbsp;est&nbsp;le&nbsp;code&nbsp;de&nbsp;pays&nbsp;a&nbsp;deux&nbsp;lettres&nbsp;pour&nbsp;cette&nbsp;unite&nbsp;?&nbsp;<br>&nbsp;&nbsp;[Unknown]&nbsp;:&nbsp;&nbsp;FR&nbsp;<br>Est\u2212ce&nbsp;CN=NosPHeratus,&nbsp;OU=NosLand,&nbsp;O=DSI,&nbsp;L=Rioz,&nbsp;ST=Franche-Comte,&nbsp;C=FR&nbsp;?&nbsp;<br>&nbsp;&nbsp;[non]&nbsp;:&nbsp;&nbsp;oui<\/p>\n\n\n\n<p>Le fichier .keystore est g\u00e9n\u00e9r\u00e9.&nbsp;<br>Note&nbsp;:<\/p>\n\n\n\n<ul><li>Il est important d\u2019utiliser l\u2019utilitaire keytool livr\u00e9 avec la jvm , au besoin pr\u00e9ciser le chemin par ex&nbsp;: \/usr\/lib\/jvm\/java-6-openjdk-amd64\/bin\/keytool. Cela afin que le keystore g\u00e9n\u00e9r\u00e9 soit bien au format JKS (Java Keystore Format).<\/li><li>Par defaut, tomcat s\u2019attend \u00e0 trouver le fichier .keystore dans le home de l\u2019utilisateur sous lequel il est lanc\u00e9 (\/usr\/share\/tomcat6 sous ubuntu), si tel n\u2019est pas le cas il convient d\u2019ajouter un attribut keystoreFile \u00e0 l\u2019element Connector dans le fichier de configuration de tomcat server.xml.<\/li><\/ul>\n\n\n\n<p>On ajoute ensuite le certificat \u00e0 la JRE&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-luminous-vivid-amber-color has-very-dark-gray-background-color\">#&nbsp;keytool&nbsp;\u2212export&nbsp;\u2212alias&nbsp;tomcat&nbsp;\u2212keypass&nbsp;changeit&nbsp;\u2212file&nbsp;.keystore&nbsp;<br>#&nbsp;keytool&nbsp;\u2212import&nbsp;\u2212alias&nbsp;tomcat&nbsp;\u2212file&nbsp;.keystore&nbsp;\\&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2212keypass&nbsp;changeit&nbsp;\u2212keystore&nbsp;\/etc\/ssl\/certs\/java\/cacerts<\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-very-dark-gray-background-color\">On modifie le fichier de configuration du serveur Tomcat \u201c<strong><em>\/var\/lib\/tomcat6\/conf\/server.xml<\/em><\/strong>\u201d&nbsp;:&lt;Connector&nbsp;port=\u00a0\u00bb8080&Prime;&nbsp;protocol=\u00a0\u00bbHTTP\/1.1&Prime;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connectionTimeout=\u00a0\u00bb20000&Prime;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redirectPort=\u00a0\u00bb8443&Prime;&nbsp;\/&gt;&nbsp;<br><br>&lt;Connector&nbsp;port=\u00a0\u00bb8443&Prime;&nbsp;protocol=\u00a0\u00bbHTTP\/1.1&Prime;&nbsp;SSLEnabled=\u00a0\u00bbtrue\u00a0\u00bb&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxThreads=\u00a0\u00bb150&Prime;&nbsp;scheme=\u00a0\u00bbhttps\u00a0\u00bb&nbsp;secure=\u00a0\u00bbtrue\u00a0\u00bb&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clientAuth=\u00a0\u00bbfalse\u00a0\u00bb&nbsp;sslProtocol=\u00a0\u00bbTLS\u00a0\u00bb&nbsp;\/&gt;<\/p>\n\n\n\n<h4>2.4&nbsp;CAS<\/h4>\n\n\n\n<p>On t\u00e9l\u00e9charge la version de CAS d\u00e9sir\u00e9e&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-luminous-vivid-amber-color has-very-dark-gray-background-color\">#&nbsp;wget&nbsp;http:\/\/downloads.jasig.org\/cas\/cas\u2212server\u22123.5.2\u2212release.tar.gz&nbsp;<br>#&nbsp;tar&nbsp;\u2212xvzf&nbsp;cas\u2212server\u22123.5.2\u2212release.tar.gz&nbsp;<br>#&nbsp;cd&nbsp;cas\u2212server\u22123.5.2\/cas\u2212server\u2212wepapp<\/p>\n\n\n\n<p>On configure l\u2019utilisation du support LDAP en modifiant \u201cpom.xml\u201d&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-very-dark-gray-background-color\">&lt;dependency&gt;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;groupId&gt;${project.groupId}&lt;\/groupId&gt;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;cas\u2212server\u2212support\u2212ldap&lt;\/artifactId&gt;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;version&gt;${project.version}&lt;\/version&gt;&nbsp;<br>&lt;\/dependency&gt;<\/p>\n\n\n\n<p>On nettoie les librairies non utilis\u00e9es, on t\u00e9l\u00e9charge les derni\u00e8res versions, et on copie le tout dans la racine des applications du serveur&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-luminous-vivid-amber-color has-very-dark-gray-background-color\">#&nbsp;cp&nbsp;..\/modules\/cas\u2212server\u2212webapp\u22123.5.2.war&nbsp;\/var\/lib\/tomcat6\/webapps\/&nbsp;<br>#&nbsp;mvn&nbsp;clean&nbsp;package&nbsp;<br>#&nbsp;cp&nbsp;\u2212Rp&nbsp;target\/cas\u2212server\u2212webapp\u22123.5.2&nbsp;\/var\/lib\/tomcat6\/webapps\/<\/p>\n\n\n\n<p>On peut ensuite se connecter \u00e0 l\u2019url&nbsp;<a href=\"http:\/\/localhost:8080\/cas-server-webapp-3.5.2\/\">http:\/\/localhost:8080\/cas-_server-_webapp-_3.5.2\/<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"http:\/\/cv.geniaut.fr\/Paris8\/wikiP8\/webdsi.univ-paris8.fr\/site\/Systeme\/Sso\/Images\/tomcat3.png\" alt=\"PIC\"\/><\/figure>\n\n\n\n<p>Il faut ensuite configurer l\u2019acc\u00e8s \u00e0 l\u2019annuaire LDAP en ajoutant le bean au fichier de configuration \u201c\/var\/lib\/tomcat6\/webapps\/cas-server-webapp-3.5.2\/WEB-INF\/deployerConfigContext.xml\u201d&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-very-dark-gray-background-color\">&lt;bean&nbsp;id=\u00a0\u00bbcontextSource\u00a0\u00bb&nbsp;<br>class=\u00a0\u00bborg.springframework.ldap.core.support.LdapContextSource\u00a0\u00bb&gt;&nbsp;<br>&lt;property&nbsp;name=\u00a0\u00bbanonymousReadOnly\u00a0\u00bb&nbsp;value=\u00a0\u00bbtrue\u00a0\u00bb&nbsp;\/&gt;&nbsp;<br>&lt;property&nbsp;name=\u00a0\u00bbpooled\u00a0\u00bb&nbsp;value=\u00a0\u00bbtrue\u00a0\u00bb&nbsp;\/&gt;&nbsp;<br>&lt;property&nbsp;name=\u00a0\u00bburls\u00a0\u00bb&gt;&nbsp;<br>&lt;list&gt;&nbsp;<br>&lt;value&gt;ldap:\/\/ldap\u2212maitre:389\/&lt;\/value&gt;&nbsp;<br>&lt;\/list&gt;&nbsp;<br>&lt;\/property&gt;&nbsp;<br>&lt;property&nbsp;name=\u00a0\u00bbbaseEnvironmentProperties\u00a0\u00bb&gt;&nbsp;<br>&lt;map&gt;&nbsp;<br>&lt;entry&gt;&nbsp;<br>&lt;key&gt;&lt;value&gt;java.naming.security.authentication&lt;\/value&gt;&lt;\/key&gt;&nbsp;<br>&lt;value&gt;none&lt;\/value&gt;&nbsp;<br>&lt;\/entry&gt;&nbsp;<br>&lt;\/map&gt;&nbsp;<br>&lt;\/property&gt;&nbsp;<br>&lt;\/bean&gt;<\/p>\n\n\n\n<p>Dans ce m\u00eame fichier, on modifie \u00e9galement la m\u00e9thode d\u2019authentification en remplacant le bean \u201corg.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler\u201d par le bean&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-very-dark-gray-background-color\">&lt;bean&nbsp;class=\u00a0\u00bborg.jasig.cas.adaptors.ldap.FastBindLdapAuthenticationHandler\u00a0\u00bb&nbsp;&gt;&nbsp;<br>&lt;property&nbsp;name=\u00a0\u00bbfilter\u00a0\u00bb&nbsp;value=\u00a0\u00bbuid=%u,ou=people,dc=nosland,dc=com\u00a0\u00bb&nbsp;\/&gt;&nbsp;<br>&lt;property&nbsp;name=\u00a0\u00bbcontextSource\u00a0\u00bb&nbsp;ref=\u00a0\u00bbcontextSource\u00a0\u00bb&nbsp;\/&gt;&nbsp;<br>&lt;\/bean&gt;<\/p>\n\n\n\n<p>Apr\u00e8s avoir red\u00e9marrer tomcat, on peut tester l\u2019authentification pour un utilisateur pr\u00e9sent dans le LDAP&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"http:\/\/cv.geniaut.fr\/Paris8\/wikiP8\/webdsi.univ-paris8.fr\/site\/Systeme\/Sso\/Images\/tomcat2.png\" alt=\"PIC\"\/><\/figure>\n\n\n\n<h4>2.5&nbsp;FINALISATION<\/h4>\n\n\n\n<p>Pour rendre l\u2019acc\u00e8s \u00e0 l\u2019application plus \u00e9l\u00e9gant, on cr\u00e9e une url d\u2019acc\u00e8s plus simple via un lien&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-luminous-vivid-amber-color has-very-dark-gray-background-color\">#&nbsp;cd&nbsp;\/var\/lib\/tomcat6\/webapps&nbsp;<br>#&nbsp;ln&nbsp;\u2212s&nbsp;cas\u2212server\u2212webapp\u22123.5.2&nbsp;cas&nbsp;<br>#&nbsp;\/etc\/init.d\/tomcat6&nbsp;restart<\/p>\n\n\n\n<p>Cela permet en plus d\u2019utiliser\/tester d\u2019autres versions du serveur CAS de mani\u00e8re transparente.<\/p>\n\n\n\n<h3>3&nbsp;TUNING<\/h3>\n\n\n\n<h4>3.1&nbsp;PROXY APACHE<\/h4>\n\n\n\n<p>Pour faire du load balancing, ou tout simplement pour g\u00e9rer plus efficacement les au serveur CAS, il est possible d\u2019ajouter un serveur Apache en frontal du CAS&nbsp;:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img src=\"http:\/\/cv.geniaut.fr\/Paris8\/wikiP8\/webdsi.univ-paris8.fr\/site\/Systeme\/Sso\/Images\/proxy.png\" alt=\"PIC\"\/><\/figure>\n\n\n\n<p>Ce serveur Apache peut \u00eatre localis\u00e9 soit sur le serveur CAS lui-m\u00eame, soit d\u00e9localis\u00e9 sur un autre serveur.<\/p>\n\n\n\n<p>Dans les deux cas, la configuration du proxy se fait au niveau de la configuration d\u2019Apache&nbsp;:<strong><\/strong>ProxyPass&nbsp;\/cas&nbsp;http:\/\/127.0.0.1:8443\/cas&nbsp;<br><strong><\/strong>ProxyPassReverse&nbsp;\/cas&nbsp;http:\/\/127.0.0.1:8443\/cas<\/p>\n\n\n\n<p>\u201c127.0.0.1\u201d correspond \u00e0 l\u2019adresse du serveur CAS.<\/p>\n\n\n\n<p>Il est conseill\u00e9\/n\u00e9cessaire&nbsp;:<\/p>\n\n\n\n<ul><li>d\u2019activer les modules PROXY et SSL d\u2019Apache<\/li><li>de configurer le certificat du nom du serveur CAS pour passer en HTTPs<\/li><\/ul>\n\n\n\n<p>L\u2019exemple suiviant montre une configuration possible en passant par l\u2019interface AJP de Tomcat&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-very-dark-gray-background-color\">ProxyRequests&nbsp;Off&nbsp;<br>&lt;Location&nbsp;\/cas&gt;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyPass&nbsp;ajp:\/\/localhost:8009\/cas&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ProxyPassReverse&nbsp;http:\/\/192.168.73.24\/cas&nbsp;<br>&lt;\/Location&gt;&nbsp;<br>SSLEngine&nbsp;on&nbsp;<br>SSLCertificateFile&nbsp;&nbsp;&nbsp;&nbsp;\/etc\/apache2\/ssl\/cas.nosland.com.pem&nbsp;<br>SSLCertificateKeyFile&nbsp;\/etc\/apache2\/ssl\/cas.nosland.com.key<\/p>\n\n\n\n<h4>3.2&nbsp;SKIN<\/h4>\n\n\n\n<p>Sur le serveur CAS, pour modifier sensiblement les pages JSP, il faut directement modifier les vues dans \/var\/lib\/tomcat6\/webapps\/cas\/WEB-INF\/view\/jsp\/default\/ui.<\/p>\n\n\n\n<p>Il faut donc faire une copie de sauvegarde pr\u00e9alable de ces fichiers.<\/p>\n\n\n\n<p>Voila la liste des vues modifi\u00e9es&nbsp;:<\/p>\n\n\n\n<ul><li>includes\/bottom.jsp<\/li><li>includes\/top.jsp<\/li><li>casLoginView.jsp<\/li><\/ul>\n\n\n\n<p>Il faut de plus modifier le CSS \u201ccss\/cas.css\u201d.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" width=\"384\" height=\"343\" src=\"http:\/\/blog.nosland.com\/wp-content\/uploads\/2018\/12\/image-1.png\" alt=\"\" class=\"wp-image-70\"\/><\/figure>\n\n\n\n<h3>4&nbsp;CLIENTS<\/h3>\n\n\n\n<h4>4.1&nbsp;APACHE-MODCAS<\/h4>\n\n\n\n<p>Sur le serveur web Apache, il est facile de configurer une authentification CAS.<\/p>\n\n\n\n<p>On installe le module adequat et on l\u2019active&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-luminous-vivid-amber-color has-very-dark-gray-background-color\">#&nbsp;apt\u2212get&nbsp;install&nbsp;libapache2\u2212mod\u2212auth\u2212cas&nbsp;<br>#&nbsp;a2enmod&nbsp;auth_cas<\/p>\n\n\n\n<p>Dans la configuration de l\u2019h\u00f4te virtuel, on ajoute les directives&nbsp;:&nbsp;<br><strong>:&nbsp;<\/strong><em><strong>\/etc\/apache2\/sites-enabled\/default-ssl.conf<\/strong><\/em>&#8230;&nbsp;<br><\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-very-dark-gray-background-color\"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASDebug&nbsp;On&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASRootProxiedAs&nbsp;https:\/\/proxy.nosland.com&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASValidateServer&nbsp;Off&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASLoginURL&nbsp;https:\/\/cas.nosland.com\/cas\/login&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CASValidateURL&nbsp;https:\/\/cas.nosland.com\/cas\/serviceValidate&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;LocationMatch&nbsp;\u00ab\u00a0\/cas\/.\u2217\u00a0\u00bb&gt;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AuthType&nbsp;CAS&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;require&nbsp;valid\u2212user&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;\/LocationMatch&gt;&nbsp;<br><br>&#8230;<\/p>\n\n\n\n<p>Si l\u2019on souhaite autoriser que quelques personnes authentifi\u00e9es, il faut compl\u00e9ter la ligne \u201crequire valid-user\u201d par&nbsp;:&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-very-dark-gray-background-color\">require&nbsp;user&nbsp;nospheratus Zorky&nbsp;<\/p>\n\n\n\n<h4>4.2&nbsp;PHPCAS<\/h4>\n\n\n\n<p>Il est possible d\u2019utiliser la librairie PHPCAS disponible sur le site du d\u00e9veloppeur du CAS&nbsp;:<\/p>\n\n\n\n<ul><li>https&nbsp;:\/\/wiki.jasig.org\/display\/casc\/phpcas<\/li><\/ul>\n\n\n\n<p>Ce dessous le code pour forcer le passage de la page index.php par l\u2019authentification aupr\u00e8s du serveur CAS, et r\u00e9cup\u00e9ration de l\u2019identifiant de connexion&nbsp;:&nbsp;<br><em><strong>:index.php<\/strong><\/em><\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-very-dark-gray-background-color\">&lt;?php&nbsp;<br><br>\/\/&nbsp;Initialisation&nbsp;de&nbsp;l\u2019authentification&nbsp;CAS&nbsp;<br>require_once&nbsp;\u2019cas\/CAS.php\u2019;&nbsp;<br>\/\/phpCAS::setDebug();&nbsp;<br>phpCAS::client(CAS_VERSION_2_0,\u00a0\u00bbcas.nosland.com\u00a0\u00bb,&nbsp;443,\u00a0\u00bb\/cas\u00a0\u00bb);&nbsp;<br>phpCAS::setLang(PHPCAS_LANG_FRENCH);&nbsp;<br>phpCAS::setNoCasServerValidation();&nbsp;<br><br>\/\/&nbsp;Pour&nbsp;forcer&nbsp;l\u2019authentification&nbsp;<br>phpCAS::forceAuthentication();&nbsp;<br><br>\/\/&nbsp;Recuperation&nbsp;de&nbsp;l\u2019identifiant&nbsp;de&nbsp;l\u2019individu&nbsp;connecte&nbsp;<br>echo&nbsp;\u00ab\u00a0identifiant&nbsp;:&nbsp;\u00ab\u00a0.&nbsp;phpCAS::getUser();&nbsp;<br>?&gt;<\/p>\n\n\n\n<h4>4.3&nbsp;PAM_CAS<\/h4>\n\n\n\n<p>On utilise la version Pam_cas-2.0.11-esup-2.0.5 disponible sur&nbsp;<a href=\"https:\/\/sourcesup.cru.fr\/frs\/?group_id=28\">https:\/\/sourcesup.cru.fr\/frs\/?group_id=28<\/a><\/p>\n\n\n\n<p>Apr\u00e8s avoir d\u00e9compil\u00e9 l\u2019archive, on effectue les compilations&nbsp;:<\/p>\n\n\n\n<p class=\"has-text-color has-background has-luminous-vivid-amber-color has-very-dark-gray-background-color\">#&nbsp;cd&nbsp;Pam_cas\u22122.0.11\u2212esup\u22122.0.5\/sources&nbsp;<br>#&nbsp;make&nbsp;<br>#&nbsp;make&nbsp;castest&nbsp;<br>#&nbsp;cp&nbsp;pam_cas.so&nbsp;\/lib\/security\/pam_cas.so&nbsp;\u2212&gt;&nbsp;sur&nbsp;32&nbsp;bits&nbsp;<br>#&nbsp;cp&nbsp;pam_cas.so&nbsp;\/lib\/x86_64\u2212linux\u2212gnu\/security\/&nbsp;\u2212&gt;&nbsp;sur&nbsp;64&nbsp;bits&nbsp;<br>#&nbsp;ldd&nbsp;pam_cas.so<\/p>\n\n\n\n<p>On cr\u00e9e le fichier de configuration&nbsp;:&nbsp;<br><strong><em>\/etc\/pam_cas.conf <\/em><\/strong>:&nbsp;<\/p>\n\n\n\n<p class=\"has-text-color has-background has-very-light-gray-color has-very-dark-gray-background-color\">#&nbsp;le&nbsp;nom&nbsp;du&nbsp;serveur&nbsp;CAS&nbsp;<br>host&nbsp;cas.nosland.com&nbsp;<br><br>#&nbsp;le&nbsp;port&nbsp;<br>port&nbsp;443&nbsp;<br><br>#&nbsp;uri&nbsp;de&nbsp;validation&nbsp;des&nbsp;tickets&nbsp;<br>uriValidate&nbsp;\/cas\/proxyValidate&nbsp;<br><br>#&nbsp;on&nbsp;utilise&nbsp;https&nbsp;<br>ssl&nbsp;on&nbsp;<br><br>#&nbsp;debug&nbsp;<br>debug&nbsp;off&nbsp;<br><br>#&nbsp;adresses&nbsp;autorisees&nbsp;s\u2019authentifier&nbsp;sur&nbsp;le&nbsp;pam_cas&nbsp;<br>proxy&nbsp;https:\/\/cas.nosland.com\/webmail\/casimap.php&nbsp;<br>proxy&nbsp;https:\/\/cas.nosland.com\/webmail\/rc\/?_action=pgtcallback&nbsp;<br>proxy&nbsp;https:\/\/cas.nosland.com\/webmail\/rc\/?_task=mail&nbsp;<br>proxy&nbsp;https:\/\/cas.nosland.com\/webmail\/rc\/?_action=caslogin&nbsp;<br>proxy&nbsp;https:\/\/cas.nosland.com\/webmail\/rc\/&nbsp;<br><br><br>#&nbsp;chaine&nbsp;de&nbsp;certification&nbsp;<br>trusted_ca&nbsp;\/etc\/ssl\/tcschain.pem<\/p>\n\n\n\n<p>Il faut placer le fichier de cha\u00eene de certification utilis\u00e9e par le serveur CAS dans \/etc\/ssl\/tcschain.pem<\/p>\n\n\n\n<p>On modifie ensuite la pile PAM&nbsp;:&nbsp;<br><strong>:&nbsp;<\/strong>\/etc\/pam.d\/imapauth&nbsp;sufficient&nbsp;\/lib\/security\/pam_cas.so&nbsp;\\&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2212simap:\/\/mail.nosland.com \\&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2212f\/etc\/pam_cas.conf&nbsp;<br><br>@include&nbsp;common\u2212auth&nbsp;<br>@include&nbsp;common\u2212account&nbsp;<br>@include&nbsp;common\u2212session&nbsp;<br>&#8230;<\/p>\n\n\n\n<p>\\&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2212simap:\/\/mail.nosland.com \\&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\u2212f\/etc\/pam_cas.conf&nbsp;<br><br>@include&nbsp;common\u2212auth&nbsp;<br>@include&nbsp;common\u2212account&nbsp;<br>@include&nbsp;common\u2212session&nbsp;<br>&#8230;<\/p>\n\n\n<p><!--EndFragment--><br \/><br \/><\/p>","protected":false},"excerpt":{"rendered":"<p>1&nbsp;CAS&nbsp;: Central Authentication Service CAS est un syst\u00e8me d\u2019authentification unique&nbsp;: on s\u2019authentifie sur un site Web, et on est alors&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[6],"tags":[],"_links":{"self":[{"href":"http:\/\/blog.nosland.com\/index.php?rest_route=\/wp\/v2\/posts\/71"}],"collection":[{"href":"http:\/\/blog.nosland.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.nosland.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.nosland.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.nosland.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=71"}],"version-history":[{"count":3,"href":"http:\/\/blog.nosland.com\/index.php?rest_route=\/wp\/v2\/posts\/71\/revisions"}],"predecessor-version":[{"id":74,"href":"http:\/\/blog.nosland.com\/index.php?rest_route=\/wp\/v2\/posts\/71\/revisions\/74"}],"wp:attachment":[{"href":"http:\/\/blog.nosland.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=71"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.nosland.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=71"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.nosland.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}