===== Attr Filter ===== ===== Reference ===== * https://wiki.shibboleth.net/confluence/display/SHIB2/IdPAddAttributeFilter ===== EduPersonEntitlement ===== ==== references ==== * https://services.renater.fr/federation/docs/fiches/entitlement * https://wiki.shibboleth.net/confluence/display/SHIB2/ResolverScriptAttributeDefinition ==== Indications constructions d'attributs ==== === resolver script === exemple de script de provisioning de l'attribut eduPersonEntitlement servant à déterminer l'acces d'un invidu à differentes ressources. ici nous nous basons sur 3 attributs de l'annuaire * schacUserStatus * email * eduPersonPrimaryOrgUnitDN permettant respectivement de déterminer les droits applicatifs (schacUserStatus => multivalué, d'où la boucle "for ..." dans le script ci-dessous), l'identité personnelle basée sur le mail et l'appartenance à un structure organisationnelle. /opt/shibboleth-idp/conf/attribute-resolver.xml === Filter Rules === Les règles de filtrage permettent de définir suivant la ressource accédée (SP), quelles valeurs de l'attribut eduPersonEntitlement nous allons lui fournir. a titre d'exemple ici: La première règle (AttributeFilterPolicy id="releaseEPeToMinesTelecom") envoie aux SP de la fédé Mines-Telecom (groupID) les valeurs de l'attribut eduPersonEntitlement * value="urn:mace:it-sudparis.eu:it:personal-conges" * value="urn:mace:it-sudparis.eu:it:personal-webspace" * value="urn:mace:it-sudparis.eu:it:struc-dsi-user" Le 2eme (AttributeFilterPolicy id="releaseEPeToTCS") envoie au SP TCS de certif personnels et au SP www-public explicitements les valeurs de ce meme attribut les concernants plus spécifiquement: * value="urn:mace:terena.org:tcs:personal-user" * value="urn:mace:terena.org:tcs:personal-admin" ==== attribut entitlement UPSay ==== attribute filter ==== Attribut appartenance IT/DSI ==== Dans le cadre d'echanges intra communautaires, il peut etre souhaitable de distinguer par exemple les personnels faisant partie d'une DSI (ou autres services) afin de definir des autorisations de lecture et/ou ecriture granulaires par categorie de personnes. ainsi nous allons prendre l'exemple ci-dessous de contruction d'un attribut maison "depIT" (pour l'exemple) permettant d'aller chercher l'information d'appartenance d'une personne à une DSI dans le referentiel local et de pousser cet attribut dans la reponse de l'IDP au SP , permettant à ce dernier un conrole d'acces fin sur l'appartenance d'un utilisateur une DSI. Dans cet exemple nous basons la contruction de cet attribut maison sur l'attribut departmentNumber de notre referentiel local où un personnel de la DSI peut contenir plusieurs valeurs dans departmentNumber(DISI, et sous groupes fonctionnels: SRI, SI, SIA), on retournera pour tous la valeur "DSI". Configuration dans le fichier de l'IDP: attribute-resolver.xml IT DSI SIA DISI SRI SI ==== Controle d'acces Apache ==== il est possible au niveau du ServiceProvider de filter l'acces a une ressource sur la base d'expressions regulieres . cf https://spaces.internet2.edu/display/SHIB2/NativeSPhtaccess exemple: ... require entitlement ~ ^.+:struc-dsi-user ce qui donnera un acces au cas ou la valeur d'attribut d'EduPersonEntitlement match l'expression régulière, exemple de log du module shib (native.log) 2011-03-09 19:41:00 DEBUG Shibboleth.Apache [16794] shib_auth_checker: htaccess: expecting regexp ^.+:struc-dsi-user, got urn:mace:it-sudparis.eu:it:struc-dsi-user: acccepted 2011-03-09 19:41:00 DEBUG Shibboleth.Apache [16794] shib_auth_checker: htaccess: a rule was successful, granting access ==== Exemples d'acces ==== === Ressource fédé mines-telecom === * SP appartenant au groupID "mines-telecom" http://infopedia.it-sudparis.eu/test/shib/shibtest.php entitlement * urn:mace:it-sudparis.eu:it:personal-webspace * urn:mace:it-sudparis.eu:it:personal-conges * urn:mace:it-sudparis.eu:it:struc-dsi-user * SP appartenant à la fédé "Renater/TCS ..." http://www-public.it-sudparis.eu/test/shib/shibtest.php entitlement * urn:mace:terena.org:tcs:personal-user * urn:mace:terena.org:tcs:personal-admin * * * * === Debug Log IDP === on vois bien dans le reponse de l'IDP, quand on accede au SP de TCS, qu'il filtre les bonnes valeurs: $ tail -f /opt/shibboleth-idp/logs/idp-process.log | grep -i edupersonentitlement 17:39:21.459 - DEBUG [edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.ShibbolethAttributeResolver:316] - Resolved attribute eduPersonEntitlement containing 5 values 17:39:21.477 - DEBUG [edu.internet2.middleware.shibboleth.common.attribute.filtering.provider.ShibbolethAttributeFilteringEngine:156] - Processing permit value rule for attribute eduPersonEntitlement for principal procacci 17:39:21.477 - TRACE [edu.internet2.middleware.shibboleth.common.attribute.filtering.provider.ShibbolethAttributeFilteringEngine:168] - The following value for attribute eduPersonEntitlement does not meet permit value rule: urn:mace:it-sudparis.eu:it:personal-webspace 17:39:21.477 - TRACE [edu.internet2.middleware.shibboleth.common.attribute.filtering.provider.ShibbolethAttributeFilteringEngine:168] - The following value for attribute eduPersonEntitlement does not meet permit value rule: urn:mace:it-sudparis.eu:it:personal-conges 17:39:21.477 - TRACE [edu.internet2.middleware.shibboleth.common.attribute.filtering.provider.ShibbolethAttributeFilteringEngine:168] - The following value for attribute eduPersonEntitlement does not meet permit value rule: urn:mace:it-sudparis.eu:it:struc-dsi-user ==== Debug Mailing list ==== Messages utiles * http://shibboleth.1660669.n2.nabble.com/Accessing-a-SP-Entity-ID-into-a-Script-td3277300.html * https://lists.internet2.edu/sympa/arc/shibboleth-users/2011-01/msg00535.html * https://lists.internet2.edu/sympa/arc/shibboleth-users/2011-02/msg00020.html * ===== PrincipalName pour google ===== ==== references ==== * http://code.google.com/intl/fr/apis/apps/articles/shibboleth2.0.html#configuringgoogleapps * https://spaces.internet2.edu/display/SHIB/NameIdentifier * https://spaces.internet2.edu/display/SHIB2/ResolverPrincipalNameDefinition * https://spaces.internet2.edu/display/SHIB2/NativeSPAttributeDecoder#NativeSPAttributeDecoder-NameIDAttributeDecoder * https://spaces.internet2.edu/display/SHIB2/NameIDAttributes * https://spaces.internet2.edu/display/SHIB2/IdPNameIdentifier ==== Indications Mines-Telecom ==== ==== Google Metadata ==== Ajout des metadata google sur notre IdP pour le SP de notre site/domain google (ici tmsp.mines-telecom.fr) [root@shibidp1 /opt/shibboleth-idp/conf] $ cat ../metadata/google-metadata.xml urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified ==== RelyingParty google ==== specification du profile SSO et referencement aux metadata google créé ci-dessus [root@shibidp1 /opt/shibboleth-idp/conf] $ vim relying-party.xml ... .... === SSO shibboleth === Attention, l'exemple ci-dessus est valable pour un IdP qui authentifie sur la base d'un SSO externe a shibboleth , délégation à CAS via un filtre java en frontal de l'URL /Authn/RemoteUser. Si c'est le SSO shibboleth via le login handler UsernamePassword ; handler.xml : urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport il faut alors preciser dans le relying partY concernant google, le defaultAuthenticationMethod a PasswordProtectedTransport ( constat fait sur un site qui n'utilise pas CAS mais le SSO integré a shibboleth ). ==== resolver script ==== Définition d'un attribut "principal" basé sur le NameId avec un encodage de type SAML2StringNameID pour le SP google. Pour le SP de test https://www-public.it-sudparis.eu, encodage de type SAML1StringNameIdentifier (2eme ==== Filtre ==== Pour les SP google.com et notre SP de test (https://www-public.it-sudparis.eu) nous permettons toutes valeur (ANY) de l'attribut "principal" . Commenté dans le code ci-dessous, on retrouve un exemple du retrait du transientId => nameId (opaque) par défaut !. ==== Decoder sur le SP ==== Pour tester le resultat coté SP, l'attributeViewer sur http://www-public.it-sudparis.eu/test/shib/shibtest.php permet de visualiser le resultat de notre envoie de "principal" . Pour ce faire ce SP doit creer un attribute-map pour cet attribut. [root@wpublic /etc/shibboleth] $ vim attribute-map.xml ... ==== Debug ==== Ceci a été réalisé grace a un long thread avec les developpeurs shibboleth: * https://lists.internet2.edu/sympa/arc/shibboleth-users/2011-03/msg00302.html