Doc officielle (en partie obsolète) : https://authentic2.readthedocs.io/en/latest/
Pour cela, il faut accéder à l'interface d'admin d'Authentic : https://connexion.exenple.fr/admin/ (par exemple)
Puis, aller dans : Authentic2_Idp_Cas / Applications / Ajouter et renseigner le formulaire comme suit :
service
lors de la redirection de l'utilisateur vers le serveur CAS pour connexion. Plusieurs URLs peuvent être renseignées en les séparant par des retours à la ligneidentifiant (django_user_username)
correspondant à l'attribut LDAP considéré comme le login de l'utilisateur dans sa version synchronisée dans la base de données d'Authentic. Pour certaines applications, il pourra être utile dans sélectionner un autre, comme l'adresse email (courriel (django_user_email)
).<img>
. Le plus souvent, tester sans et cocher la case si cela ne fonctionne pas correctement. Remarque : l'inclusion dans une iframe
peut également être bloqué par l'application cliente, notamment via l'entête HTTP X-Frame-Options
.django_*
: il s'agit des attributs synchronisés régulièrement (et à chaque connexion) depuis l'annuaire LDAP et stockés en base de données par Authentic. Il est préférable de les utiliser en priorité lorsqu'il existe. Note : attribut mono-valué uniquement pour le monent du fait d'un bug.LDAP
: attributs récupérés directement depuis l'annuaire LDAP qui peuvent être mono-valués ou multi-valués.ATTRIBUTE_SOURCES
), soit d'attributs standard prévus par Authentic.
Authentic permet d'écrire soi-même la méthode de génération d'attributs qui seront ensuite diffusables aux services utilisant le SSO. Pour cela, il faut les déclarer dans la variable de configuration ATTRIBUTE_SOURCES
comme suit :
def generate_fullname(ctx): return ctx['user'].attributes.first_name + " " + ctx['user'].attributes.last_name ATTRIBUTE_SOURCES = [ ('function', { 'name': 'fullname', 'dependencies': ['user'], 'function': generate_fullname }), ]
ctx['user'].attributes
permet d'accéder uniquement aux attributs synchronisés dans Authentic, pas aux attributs LDAP. Pour accéder à un attribut LDAP, il faut passer par la méthode get_attributes()
: attrs = ctx['user'].get_attributes(None, ctx) return attrs.get('edupersonaffiliation', [])
Exemple complet pour la génération de l'attribut eduPersonScopedAffiliation :
import logging log = logging.getLogger('config') def generate_eduPersonScopedAffiliation(ctx): attrs = ctx['user'].get_attributes(None, ctx) if 'edupersonaffiliation' not in attrs: log.warning('generate_eduPersonScopedAffiliation: no edupersonaffiliation attribute found') return [] domain = os.environ.get('EDU_SCOPED_AFFILIATION_DOMAIN') if not domain: log.warning('generate_eduPersonScopedAffiliation: EDU_SCOPED_AFFILIATION_DOMAIN not found in env') return [] log.debug('generate_eduPersonScopedAffiliation: edupersonaffiliation = %s / domain = %s', attrs['edupersonaffiliation'], domain) return ["%s@%s" % (aff, domain) for aff in attrs['edupersonaffiliation']] ATTRIBUTE_SOURCES = [ ('function', { 'name': 'eduPersonScopedAffiliation', 'dependencies': ['user'], 'function': generate_eduPersonScopedAffiliation }), ]
Sous Debian Jessie, erreur au démarrage d'authentic :
File "/usr/lib/python2.7/dist-packages/authentic2/settings.py", line 82, in <module> MIDDLEWARE_CLASSES = plugins.register_plugins_middleware(MIDDLEWARE_CLASSES) File "/usr/lib/python2.7/dist-packages/authentic2/plugins.py", line 84, in register_plugins_middleware for plugin in get_plugins(group_name): File "/usr/lib/python2.7/dist-packages/authentic2/plugins.py", line 38, in get_plugins raise PluginError('unable to load entrypoint %s' % entrypoint, e) PluginError: ('unable to load entrypoint authentic2-idp-saml2 = authentic2.idp.saml:Plugin', VersionConflict(django-import-export 0.2.7.4.g7225dff (/usr/lib/python2.7/dist-packages), Requirement.parse('django-import-export>=0.2.7')))
Cela viens du fait que le paquet python-setuptools proviens des backports et n'apprécie pas la syntaxe des numéros de version des librairies python fournis avec Authentic.
Utilisé l'outil en ligne : http://rnd.feide.no/simplesaml/module.php/saml2debug/debug.php
Authentic dispose d'une fonctionnalité de rôle permettant de restreindre à des fonctionnalités d'Authentic et/ou à l'accès à des services utilisant le SSO.
Pour mettre en œuvre un rôle “Salariés” synchronisé depuis un groupe du même nom dans l'annuaire, il faut :
/manage/
, allez dans Rôles puis cliquez sur le bouton Ajouter un rôle :Salariés
Rôle synchronisé depuis le groupe “Salaries” de l'annuaire LDAP
salaries
)/etc/authentic2/config.py
le plus souvent)LDAP_AUTH_SETTINGS
), pour chaque bloc concerné, ajoutez une entrée dans la clé group_to_role_mapping
: LDAP_AUTH_SETTINGS=[ { "realm": "ldap_users", [...] "group_to_role_mapping": [ ('cn=salaries,ou=dyngroups,o=enercoop', ['salaries']), ], }, [...] ]
service authentic2 reload
authentic2-manage sync-ldap-users
Il est ensuite possible par exemple de restreindre l'accès à un service :
/manage/
, aller dans Services puis sélectionner le service de votre choix