===== Idpv3x ===== ==== references ===== * https://services.renater.fr/federation/docs/installation/idp3/index * https://wiki.shibboleth.net/confluence/display/IDP30/Installation * https://www.switch.ch/aai/guides/idp/installation/ * https://spaces.internet2.edu/pages/viewpage.action?pageId=49841792#LinuxIdentityProviderIdPv3(Centos7)-5 * https://www.testshib.org/ ===== contexte ===== Exemple de deploiement d'un fournisseur d'IDP (V3.0) sur une centos7 avec les produits natifs de cette distribution ⇒ JVM openjdk et tomcat7 et/ou jetty9 . https://wiki.shibboleth.net/confluence/display/IDP30/SystemRequirements Oracle Java or OpenJDK versions 7 and 8 are supported, and the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files are required. Only Tomcat 8 and Jetty 9.2 - Jetty 9.3 are officially supported by the project at this time. [root@idp34 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@idp3 ~]# arch x86_64 ===== java jdk ===== [root@idp34 ~]# yum install java-1.8.0-openjdk-devel.x86_64 Installation 1 Paquet (+33 Paquets en dépendance) Taille totale des téléchargements : 48 M Taille d'installation : 163 M Is this ok [y/d/N]: y Installé : java-1.8.0-openjdk-devel.x86_64 1:1.8.0.191.b12-1.el7_6 Dépendances installées : alsa-lib.x86_64 0:1.1.6-2.el7 copy-jdk-configs.noarch 0:3.3-10.el7_5 dejavu-fonts-common.noarch 0:2.33-6.el7 dejavu-sans-fonts.noarch 0:2.33-6.el7 fontconfig.x86_64 0:2.13.0-4.3.el7 fontpackages-filesystem.noarch 0:1.44-8.el7 freetype.x86_64 0:2.8-12.el7 giflib.x86_64 0:4.1.6-9.el7 java-1.8.0-openjdk.x86_64 1:1.8.0.191.b12-1.el7_6 java-1.8.0-openjdk-headless.x86_64 1:1.8.0.191.b12-1.el7_6 javapackages-tools.noarch 0:3.4.1-11.el7 libICE.x86_64 0:1.0.9-9.el7 libSM.x86_64 0:1.2.2-2.el7 libX11.x86_64 0:1.6.5-2.el7 libX11-common.noarch 0:1.6.5-2.el7 libXau.x86_64 0:1.0.8-2.1.el7 libXcomposite.x86_64 0:0.4.4-4.1.el7 libXext.x86_64 0:1.3.3-3.el7 libXi.x86_64 0:1.7.9-1.el7 libXrender.x86_64 0:0.9.10-1.el7 libXtst.x86_64 0:1.2.3-1.el7 libfontenc.x86_64 0:1.1.3-3.el7 libjpeg-turbo.x86_64 0:1.2.90-6.el7 libpng.x86_64 2:1.5.13-7.el7_2 libxcb.x86_64 0:1.13-1.el7 libxslt.x86_64 0:1.1.28-5.el7 lksctp-tools.x86_64 0:1.0.17-2.el7 python-javapackages.noarch 0:3.4.1-11.el7 python-lxml.x86_64 0:3.2.1-4.el7 ttmkfdir.x86_64 0:3.0.9-42.el7 tzdata-java.noarch 0:2018g-1.el7 xorg-x11-font-utils.x86_64 1:7.5-21.el7 xorg-x11-fonts-Type1.noarch 0:7.5-9.el7 Terminé ! test java version [root@idp34 ~]# java -version openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode) ===== tomcat ===== [root@idp3 ~]# yum install tomcat tomcat-admin-webapps Installé : tomcat.noarch 0:7.0.76-8.el7_5 tomcat-admin-webapps.noarch 0:7.0.76-8.el7_5 ==== parametrage compte admin tomcat ===== compte admin d'acces au l'appli manager/html [root@idp3 tomcat]# diff -ur tomcat-users.xml.orig tomcat-users.xml --- tomcat-users.xml.orig 2016-05-11 22:26:59.631449352 +0200 +++ tomcat-users.xml 2016-05-11 22:29:33.294032465 +0200 @@ -34,13 +34,13 @@ --> - - - - - - - - - + + + + + + + + + ==== activation au boot ==== [root@idp3 tomcat]# systemctl enable tomcat.service Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service. [root@idp3 tomcat]# systemctl start tomcat.service ==== acces tomcat ==== le serveur est maintenant acessible , exemple http://idp3.tem-tsp.eu:8080/manager/html (login/pass definit plus haut) ==== proxy-ajp et TLS via apache ===== mise en place d'un proxy ajp pour une gestion de TLS et ports par defaut (80/443) par apache il faut installer le mod_ssl d'apache pour disposer d'https [root@idp34 tomcat]# yum install mod_ssl Installé : mod_ssl.x86_64 1:2.4.6-88.el7.centos et le configurer avec nos certificats [root@idp34 certs]#grep ^SSL /etc/httpd/conf.d/ssl.conf | tail -3 SSLCertificateFile /etc/pki/tls/certs/idp.imtbstsp_eu.pem SSLCertificateKeyFile /etc/pki/tls/private/idp.imtbstsp.key SSLCertificateChainFile /etc/pki/tls/certs/chain-dc-TR1-CA2-idp-imtbstsp.pem enfin configurer le proxy-ajp pour rediriger les requetes https d'apache vers tomcat [root@idp3' ~]# cat /etc/httpd/conf.d/shibboleth.conf ProxyPass /idp/ ajp://127.0.0.1:8009/idp/ retry=0 ProxyPass /manager/ ajp://127.0.0.1:8009/manager/ acces sans le port 8080 : http://idp3.tem-tsp.eu/manager/html puis en https via le proxy-ajp sans precision du port 443 https://idp3.tem-tsp.eu/manager/html ===== ntp ==== s'assurer que la machine est a l'heure, si VM c'est la machine hote qui fournie l'heure ===== shibboleth IDP ====== ref https://services.renater.fr/federation/docs/installation/idp3/chap03 ==== download ==== telechargement de la derniere version depuis http://shibboleth.net/downloads/identity-provider/ [root@idp34 ~]# wget https://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-3.4.2.tar.gz --2019-01-02 14:18:15-- https://shibboleth.net/downloads/identity-provider/latest/shibboleth-identity-provider-3.4.2.tar.gz [root@idp34 ~]# mkdir /opt/src [root@idp34 ~]# mv shibboleth-identity-provider-3.4.2.tar.gz /opt/src/ [root@idp34 ~]# cd /opt/src/ ; tar xvfz shibboleth-identity-provider-3.4.2.tar.gz [root@idp34 src]# cd shibboleth-identity-provider-3.4.2 [root@idp34 shibboleth-identity-provider-3.4.2]# ls bin conf credentials doc flows LICENSE.txt logs messages metadata system views webapp ==== install ==== fresh install ici, attention en cas d'update ne pas tout ecraser ! [root@idp34 shibboleth-identity-provider-3.4.2]# export JAVA_HOME=/usr/lib/jvm/java [root@idp34 shibboleth-identity-provider-3.4.2]# ./bin/install.sh Source (Distribution) Directory (press to accept default): [/opt/src/shibboleth-identity-provider-3.4.2] Installation Directory: [/opt/shibboleth-idp] Hostname: [idp34.int-evry.fr] idp3.imtbstsp.eu SAML EntityID: [https://idp3.imtbstsp.eu/idp/shibboleth] Attribute Scope: [int-evry.fr] imtbstsp.eu Backchannel PKCS12 Password: O gl Back d Re-enter password: Cookie Encryption Key Password: O gl Cookie d Re-enter password: Warning: /opt/shibboleth-idp/bin does not exist. Warning: /opt/shibboleth-idp/edit-webapp does not exist. Warning: /opt/shibboleth-idp/dist does not exist. Warning: /opt/shibboleth-idp/doc does not exist. Warning: /opt/shibboleth-idp/system does not exist. Generating Signing Key, CN = idp3.imtbstsp.eu URI = https://idp3.imtbstsp.eu/idp/shibboleth ... ...done Creating Encryption Key, CN = idp3.imtbstsp.eu URI = https://idp3.imtbstsp.eu/idp/shibboleth ... ...done Creating Backchannel keystore, CN = idpr3.imtbs-tsp.eu URI = https://idp3.imtbstsp.eu/idp/shibboleth ... ...done Creating cookie encryption key files... ...done Rebuilding /opt/shibboleth-idp/war/idp.war ... ...done BUILD SUCCESSFUL Total time: 2 minutes 14 seconds fichier de credentials créés [root@idp34 shibboleth-identity-provider-3.4.2]# ls -l /opt/shibboleth-idp/credentials/ total 32 -rw-r--r-- 1 root root 1517 2 janv. 14:23 idp-backchannel.crt -rw-r--r-- 1 root root 3399 2 janv. 14:23 idp-backchannel.p12 -rw-r--r-- 1 root root 1517 2 janv. 14:23 idp-encryption.crt -rw------- 1 root root 2455 2 janv. 14:23 idp-encryption.key -rw-r--r-- 1 root root 1517 2 janv. 14:23 idp-signing.crt -rw------- 1 root root 2459 2 janv. 14:23 idp-signing.key -rw-r--r-- 1 root root 502 2 janv. 14:23 sealer.jks -rw-r--r-- 1 root root 47 2 janv. 14:23 sealer.kver l'arborescence d'installation doit appartenir a tomcat [root@idp34 shibboleth-identity-provider-3.4.2]# chown -R tomcat /opt/shibboleth-idp/ ==== context tomcat pour l'IDP ==== le fichier idp.xml permet de déployer automatiquement la brique IdP sans avoir à recopier l'archive « .war » dans le répertoire webapps/ de Tomcat. [root@idp3 localhost]# cat /etc/tomcat/Catalina/localhost/idp.xml quelques secondes apres grace a l'auto-deploy [root@idp34 shibboleth-identity-provider-3.4.2]# ls -l /var/lib/tomcat/webapps/idp/ total 32 drwxr-xr-x 2 tomcat tomcat 4096 2 janv. 14:28 css drwxr-xr-x 2 tomcat tomcat 4096 2 janv. 14:28 images -rw-r--r-- 1 tomcat tomcat 1008 2 janv. 14:23 index.jsp drwxr-xr-x 2 tomcat tomcat 4096 2 janv. 14:28 js drwxr-xr-x 2 tomcat tomcat 4096 2 janv. 14:28 META-INF drwxr-xr-x 5 tomcat tomcat 4096 2 janv. 14:28 WEB-INF -rw-r--r-- 1 tomcat tomcat 5389 2 janv. 14:23 x509-prompt.jsp ==== status et jstl ==== test acces sur http://idp3.tem-tsp.eu:8080/idp/status au premier abord, cette page ne s'est pas affichée java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config org.springframework.web.servlet.support.JstlUtils.exposeLocalizationContext(JstlUtils.java:101) en effet il faut ajouter la librairie jstl (cf http://stackoverflow.com/tags/jstl/info) qui n'est pas fournie par defaut (risque de conflit avec jboss) cf aussi https://www.switch.ch/aai/guides/idp/installation/#shibbolethidp sous chapitre 6.13 IdP status URL configuration ou https://services.renater.fr/federation/docs/installation/idp3/chap02#installation_d_un_serveur_d_applications_java jstl . [root@idp34 shibboleth-identity-provider-3.4.2]# cd /var/lib/tomcat/webapps/idp/WEB-INF/lib/ [root@idp34 lib]# wget http://central.maven.org/maven2/javax/servlet/jstl/1.2/jstl-1.2.jar 2019-01-02 14:34:08 (9,27 MB/s) - «jstl-1.2.jar» sauvegardé [414240/414240] [root@idp34 lib]# systemctl restart tomcat Pour l'acces en https au status il faut autorise l'IP source du navigateur d'admin # vim /opt/shibboleth-idp/conf/access-control.xml ... ... maintenant accessible en https://idp3.imtbstsp.eu/idp/status acces status possible en shell également [root@idp34 bin]# /opt/shibboleth-idp/bin/status.sh ### Operating Environment Information operating_system: Linux operating_system_version: 3.10.0 operating_system_architecture: amd64 jdk_version: 1.8.0_191 available_cores: 12 used_memory: 137 MB maximum_memory: 455 MB ### Identity Provider Information idp_version: 3.4.2 start_time: 2019-01-02T14:35:21Z current_time: 2019-01-02T14:36:42Z uptime: 80907 ms ==== NTP ==== il faut que le systeme soit a l'heure (echanges SAML horodaté ) si on utilise une VM openvz, cf VZ capabilities: http://unix.stackexchange.com/questions/68016/error-when-running-ntpd-on-openvz-host-cap-set-proc-failed-to-drop-root-privi [root@hardnode ~]# vzctl set 1033 --capability sys_time:on --save CT configuration saved to /etc/vz/conf/1033.conf ===== Configuration ===== * ref: https://services.renater.fr/federation/docs/installation/idp3/chap04 depuis la version 3 la configuration est eclatée en plusieurs fichiers, il est recommandé de faire un backup des originaux/distribution [root@idp3 conf]# cp -p relying-party.xml relying-party.xml.dist [root@idp3 conf]# cp -p attribute-resolver.xml attribute-resolver.xml.dist [root@idp3 conf]# cp -p attribute-filter.xml attribute-filter.xml.dist ==== metadata federations ===== * ref : https://services.renater.fr/federation/docs/installation/idp3/chap04#gestion_des_meta-donnees enregistrement dans la fédération de test renater , recuperation du certificats de signature des metadonnées renater . [root@idp34]# cd /opt/shibboleth-idp/credentials/ [root@idp34 credentials]# /usr/bin/curl -O https://metadata.federation.renater.fr/certs/renater-metadata-signing-cert-2016.pem ajout du chargement des metadata test-renater [root@idp3 conf]# tail -18 metadata-providers.xml La premiere fois on recharge tomcat pour que le téléchargement initial du fichier soit réalisé [root@idp34 conf]# systemctl restart tomcat.service [root@idp34 conf]# ls -ltr ../metadata/ total 31308 -rw-r--r-- 1 tomcat root 14590 2 janv. 14:23 idp-metadata.xml -rw-r--r-- 1 tomcat tomcat 6787283 2 janv. 14:47 preview-sps-renater-test-metadata.xml ensuite on pourra faire un simple rechargement du service metadata pour cette federation [root@idp3 conf]# /opt/shibboleth-idp/bin/reload-metadata.sh -id=RenaterTestMetadata Metadata reloaded. idp-process.log : 2019-01-02 14:48:18,248 - 127.0.0.1 - INFO [org.opensaml.saml.metadata.resolver.impl.AbstractReloadingMetadataResolver:574] - Metadata Resolver FileBackedHTTPMetadataResolver RenaterTestMetadata: New metadata successfully loaded for 'https://metadata.federation.renater.fr/test/preview/preview-sps-renater-test-metadata.xml' 2019-01-02 14:48:18,250 - 127.0.0.1 - INFO [org.opensaml.saml.metadata.resolver.impl.AbstractReloadingMetadataResolver:384] - Metadata Resolver FileBackedHTTPMetadataResolver RenaterTestMetadata: Next refresh cycle for metadata provider 'https://metadata.federation.renater.fr/test/preview/preview-sps-renater-test-metadata.xml' will occur on '2019-01-02T15:33:16.891Z' ('2019-01-02T15:33:16.891Z' local time) 2019-01-02 14:48:18,268 - 127.0.0.1 - INFO [Shibboleth-Audit.Reload:275] - 20190102T144818Z||||http://shibboleth.net/ns/profiles/reload-metadata||||||||| ==== URL metadata idp locale ==== URL de visualisation des metadata de notre IDP * http://idp3.domain.fr/idp/shibboleth ==== authentification ===== * ref https://services.renater.fr/federation/docs/installation/idp3/chap05 1er test en simple auth ldap [root@idp3 conf]# diff ldap.properties ldap.properties.dist 8,9c8,9 < idp.authn.LDAP.ldapURL = ldap://ldap.int.eu:389 < idp.authn.LDAP.useStartTLS = true --- > idp.authn.LDAP.ldapURL = ldap://localhost:10389 > #idp.authn.LDAP.useStartTLS = true 16c16 < idp.authn.LDAP.trustCertificates = %{idp.home}/credentials/chain-29966-_.int.eu.pem --- > idp.authn.LDAP.trustCertificates = %{idp.home}/credentials/ldap-server.crt 18c18 < #idp.authn.LDAP.trustStore = %{idp.home}/credentials/ldap-server.truststore --- > idp.authn.LDAP.trustStore = %{idp.home}/credentials/ldap-server.truststore 28c28 < idp.authn.LDAP.baseDN = ou=people,dc=int,dc=fr --- > idp.authn.LDAP.baseDN = ou=people,dc=example,dc=org 33,34c33,34 < idp.authn.LDAP.bindDN = uid=binduser,dc=int,dc=fr < idp.authn.LDAP.bindDNCredential = secret --- > idp.authn.LDAP.bindDN = uid=myservice,ou=system > idp.authn.LDAP.bindDNCredential = myServicePassword 38c38 < idp.authn.LDAP.dnFormat = uid=%s,ou=people,dc=int,dc=fr --- > idp.authn.LDAP.dnFormat = uid=%s,ou=people,dc=example,dc=org [root@idp3 conf]# systemctl restart tomcat.service ==== personnaliser la page de login interne ==== il est possible de personnaliser la page de login intégré a l'IDP cf: * https://wiki.shibboleth.net/confluence/display/IDP30/PasswordAuthnConfiguration * https://spaces.internet2.edu/pages/viewpage.action?pageId=49841792#LinuxIdentityProviderIdPv3(RHEL7)-1.CustomizetheIdP'sLoginPage * http://shibboleth.1660669.n2.nabble.com/Customising-login-page-in-IdP-v3-td7616265.html # vim /opt/src/shibboleth-identity-provider-3.3.0/system/messages/messages.properties ... idp.logo = /images/etablissement-logo-site.png ... root.title = Shibboleth IdP Etablissement.fr ... mettre le logo dans le repertoire source images, curieusement un bin/install.sh a bien deployé le nouveau messages.properties mais pas le png du logo dans /var/lib/tomcat/webapps/idp/images/ que j'ai du faire à la main (cp) . ===== Attribute resolver ===== attribute-resolver-ldap.xml s'appui sur le varaible definit plus haut dans ldap.properties , ici one ne fait qu'une simple deactivation de StartTLSTrustCredential (commentaires) [root@idp3 conf]# cp attribute-resolver-ldap.xml attribute-resolver-ldap.xml.dist [root@idp3 conf]# diff attribute-resolver-ldap.xml attribute-resolver-ldap.xml.dist 92d91 < et declaration de l'usage de l'attribute-resolver-ldap dans services.xml [root@idp3 conf]# diff services.xml services.xml.dist 113c113 < %{idp.home}/conf/attribute-resolver-ldap.xml --- > %{idp.home}/conf/attribute-resolver.xml ==== attribute-filter ==== on reprend l'exemple et on l'etend a tout SP (ANY) [root@idp3 conf]# diff attribute-filter.xml attribute-filter.xml.dist 18,19c18 < < --- > [root@idp3 conf]# /opt/shibboleth-idp/bin/reload-service.sh -id shibboleth.AttributeFilterService Configuration reloaded. ==== schema name change v2/v3 ==== attention quand on reprend des attribute-filter maisons de la v2 vers le v3 , les schemas ont changés, exempe "basic:OR" deviens tout simplement "OR" cf https://wiki.shibboleth.net/confluence/display/IDP30/AttributeFilterLegacyNameSpaceMapping et https://wiki.shibboleth.net/confluence/display/IDP30/AttributeFilterConfiguration#AttributeFilterConfiguration-SchemaName exemple de remplacement automatique syntaxte v2 vs v3 via "vi" dans attribute-resolver.xml :1,$s/basic:AttributeRequesterString/Requester/g :1,$s/basic:AttributeValueString/Value/g :1,$s/basic:Rule/Rule/g :1,$s/saml:AttributeRequesterInEntityGroup/InEntityGroup/g :1,$s/basic:ANY/ANY/g :1,$s/basic:OR/OR/g === service.xml ==== * https://www.switch.ch/aai/guides/idp/installation/#shibbolethidp 6.2 * https://portal.nordu.net/display/SWAMID/Example+of+a+standard+attribute+filter+for+Shibboleth+IdP ==== test attributes cli ===== [root@idp3 shibboleth-idp]# ./bin/aacli.sh --requester=https://test.federation.renater.fr/test/ressource --configDir=conf/ --principal=etudiant1 { "requester": "https://test.federation.renater.fr/test/ressource", "principal": "etudiant1", "attributes": [ { "name": "uid", "values": [ "StringAttributeValue{value=etudiant1}" ] }, { "name": "mail", "values": [ "StringAttributeValue{value=etudiant1@example.org}" ] }, { "name": "eduPersonPrincipalName", "values": [ "ScopedStringAttributeValue{value=etudiant1, scope=int.eu}" ] } ] } ===== Enregistrement dans une federation ===== dans un premier temps dans la fédération de test Renater https://federation.renater.fr/registry ===== Test login ldap interne ===== ayant positionné par defaut le password scheme via ldap, l'usage d'un login/password de l'annuaire ldap d'etablissement configuré permet d'acceder à la ressource de test renater https://test.federation.renater.fr/test/ressource qui affiche la liste d'attributs envoyés et demande maintenant en v3 la consentement (addon uApprove en v2) Information to be Provided to Service eduPersonPrincipalName teststud@int.fr mail teststud@example.org uid teststud Ask me again at next login Ask me again if information to be provided to this service changes Do not ask me again idp-process.log : 2016-07-03 14:45:51,638 - INFO [net.shibboleth.idp.authn.impl.ValidateUsernamePasswordAgainstLDAP:139] - Profile Action ValidateUsernamePasswordAgainstLDAP: Login by 'teststud' succeeded C2016-07-03 14:51:14,116 - INFO [Shibboleth-Consent-Audit.SSO:241] - 20160703T125114Z|https://test.federation.renater.fr/test/ressource|AttributeReleaseConsent|teststud|eduPersonPrincipalName,mail,uid||true,true,true 2016-07-03 14:51:14,861 - INFO [Shibboleth-Audit.SSO:241] - 20160703T125114Z|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect|_05d30b93263d3dbca128a0d1bdb5272d|https://test.federation.renater.fr/test/ressource|http://shibboleth.net/ns/profiles/saml2/sso/browser|https://idp3.int.eu/idp/shibboleth|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST|_afd5c50a6363cebb0030af5e220dce18|teststud|urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport|uid,mail,eduPersonPrincipalName|AAdzZWNyZXQxvKd8LuQ9/WK6sRwUecDTulilU/xNcE1LRr2tf2P8S97xNb9mu4uVLASdS+D5MlyZAWt5NYNLGBuyVeD8n441NlUDVO7uCO8B6PxjUANyWOYmM6UOP7b9jpAC9ED70JLXoz2Bztm4VKeQ9Ia5FxgKJzh37Q==|_c861303bf16b99871bcac75ecca3703b| ===== SSO CAS ===== https://services.renater.fr/federation/docs/installation/idp3/chap08 [root@idp34 src]# wget https://github.com/Unicon/shib-cas-authn3/releases/download/3.2.3/shib-cas-authn3-3.2.3.tar [root@idp34 src]# tar xvf shib-cas-authn3-3.2.3.tar ... shib-cas-authn3-3.2.3/edit-webapp/WEB-INF/lib/cas-client-core-3.4.1.jar shib-cas-authn3-3.2.3/edit-webapp/WEB-INF/lib/shib-cas-authenticator-3.2.3.jar shib-cas-authn3-3.2.3/edit-webapp/no-conversation-state.jsp .. [root@idp34 src]# cp shib-cas-authn3-3.2.3/edit-webapp/WEB-INF/lib/shib-cas-authenticator-3.2.3.jar /opt/shibboleth-idp/edit-webapp/WEB-INF/lib [root@idp34 src]# cp -R shib-cas-authn3-3.2.3/flows/authn/Shibcas/ /opt/shibboleth-idp/flows/authn/ [root@idp34 src]# ls -ltr /opt/shibboleth-idp/flows/authn/Shibcas/ total 8 -rw-r--r-- 1 root root 2290 2 janv. 21:23 shibcas-authn-flow.xml -rw-r--r-- 1 root root 3241 2 janv. 21:23 shibcas-authn-beans.xml [root@idp34 src]# wget http://central.maven.org/maven2/org/jasig/cas/client/cas-client-core/3.5.1/cas-client-core-3.5.1.jar [root@idp34 src]# cp cas-client-core-3.5.1.jar /opt/shibboleth-idp/edit-webapp/WEB-INF/lib/ Modification du Web flow pour utiliser le plugin CAS via /opt/shibboleth-idp/conf/idp.properties [root@idp3 conf]# diff idp.properties idp.properties.dist 100,114c100 < #idp.authn.flows= Password < idp.authn.flows= Shibcas < < # CAS Client properties (usage loosely matches that of the Java CAS Client) < ## CAS Server Properties < shibcas.casServerUrlPrefix = https://cas16.int.eu/cas < shibcas.casServerLoginUrl = ${shibcas.casServerUrlPrefix}/login < < ## Shibboleth Server Properties < shibcas.serverName = https://cas16.int.eu < < # La partie ci-dessous est une fonctionnalité avancée de l'extention shib-cas en question (optionnelle) < # By default you always get the AuthenticatedNameTranslator, add additional code to cover your custom needs. < # Takes a comma separated list of fully qualified class names < # shibcas.casToShibTranslators = com.your.institution.MyCustomNamedTranslatorClass --- > idp.authn.flows= Password declaration du bean Shibcas dans general-auth.xml : [root@idp34 conf]# cd /opt/shibboleth-idp/conf/authn/ [root@idp34 authn]# cp general-authn.xml general-authn.xml.dist [root@idp3 authn]# diff general-authn.xml general-authn.xml.dist 93,98d92 < < < et reconstruction du idp.war + stop / start tomcat [root@idp3 bin]# systemctl start tomcat.service [root@idp3 bin]# /opt/shibboleth-idp/bin/build.sh Installation Directory: [/opt/shibboleth-idp] RETURN (!?) Rebuilding /opt/shibboleth-idp/war/idp.war ... ...done BUILD SUCCESSFUL # on remove tout le deploiement dans l'arboresence tomcat webapps afin d'etre sur que le nouveau idp.war remplace tout [root@idp3 bin]# rm -rf /var/lib/tomcat/webapps/idp [root@idp3 bin]# systemctl start tomcat.service un nouveau test sur https://test.federation.renater.fr/test/ressource montre bien que nous passons par CAS maintenant . ===== attribute filter ===== https://services.renater.fr/federation/docs/installation/idp3/chap10 le nombre important de SP et leur mouvement reguliers dans une large fédération comme celle de Renater impose l'usage d'automatisme pour le gestion des filtre . "Depuis 2015 et l'IDP 2.4 , Shibboleth introduit une nouvelle règle PermitValueRule de type AttributeInMetadata utilisable dans votre fichier de configuration attribute-filter.xml. Cette fonctionnalité vous permet, pour un ensemble de SPs, d'autoriser la diffusion au plus juste des attributs utilisateur, uniquement s'ils sont déclarés comme demandés par le SP dans les méta-données de la fédération. L'option onlyIfRequired permet par ailleurs de ne diffuser l'attribut que s'il est indiqué comme obligatoire." on ajoute les regles proposé sur la doc renater .... puis redeploiement [root@idp3 conf]# vim attribute-filter.xml [root@idp3 shibboleth-idp]# cd ../bin/ [root@idp3 bin]# systemctl stop tomcat.service [root@idp3 bin]# rm -rf /var/lib/tomcat/webapps/idp [root@idp3 bin]# ./build.sh Installation Directory: [/opt/shibboleth-idp] Rebuilding /opt/shibboleth-idp/war/idp.war ... ...done BUILD SUCCESSFUL Total time: 4 seconds [root@idp3 bin]# [root@idp3 bin]# systemctl start tomcat.service un nouveau test sur https://test.federation.renater.fr/test/ressource montre maintenant plus d'attributs . ==== script attibute definition entitlement ==== l'attribut "entitlement" est construit a partir d'un script , cela change entre idp v2 et v3 sur plusieurs points en terme de schema et moteur de script java 1.7 (Rhino) vs 1.8 (Nashorn) ref : https://wiki.shibboleth.net/confluence/display/SHIB2/IdPJava1.8 https://wiki.shibboleth.net/confluence/display/IDP30/ScriptedAttributeDefinition exemple ===== newcerts ===== nouvelle generation de certificats de metadata (autosignés) en cas de changement de hostname et/ou de clonage de VM afin de publier des metadata avec les bon certificats internes pour SAML . ref * https://shib.kuleuven.be/docs/ssl_commands.shtml * https://www.switch.ch/aai/guides/idp/certificate-rollover/ * https://wiki.umbc.edu/display/MW/Updating+the+Shibboleth+IdP's+SSL+Certificate [root@idp3 credentials]# openssl req -x509 -new -out idp3-signing.crt -keyout idp3-signing.key -days 3650 writing new private key to 'idp3-signing.key' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: Country Name (2 letter code) [XX]:FR State or Province Name (full name) []:Essonne Locality Name (eg, city) [Default City]:Evry Organization Name (eg, company) [Default Company Ltd]:IMT Organizational Unit Name (eg, section) []:DISI Common Name (eg, your name or your server's hostname) []:idp3.int.eu Email Address []:admin@int.eu retrait passphrase [root@idp3 credentials]# openssl rsa -in idp3-signing.key -out idp3-signing-np.key Enter pass phrase for idp3-signing.key: writing RSA key idem avec l'encryption et backchannel [root@idp3 credentials]# openssl req -x509 -new -out idp3-encryption.crt -keyout idp3-encryption.key -days 3650 # openssl rsa -in idp3-encryption.key -out idp3-encryption-np.key [root@idp3 credentials]# openssl req -x509 -new -out idp3-backchannel.crt -keyout idp3-backchannel.key -days 3650 # openssl rsa -in idp3-backchannel.key -out idp3-backchannel-np.key retrait de passphrase du p12 : http://blog.armbruster-it.de/2010/03/remove-the-passphrase-from-a-pkcs12-certificate/ [root@idp3 credentials]# openssl pkcs12 -in idp3-backchannel.p12 -nodes -out idp3-p12-p-temp.pem Enter Import Password: MAC verified OK [root@idp3 credentials]# openssl pkcs12 -export -in idp3-p12-p-temp.pem -out idp3-backchannel-np.p12 Enter Export Password: rien Verifying - Enter Export Password: rien bien que cela ne semble pas tres utile dans le cadre de la federation, il convient de mettre a jour le fichier local metadata/idp-metadata.xml afin d'etre consistent avec ces nouveau certificat et entityID + hostname d'URL de services