informatique:securite:authentic

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
informatique:securite:authentic [2021/10/07 14:36] – [Authentic] bn8informatique:securite:authentic [2022/02/16 19:06] (Version actuelle) – [Mise en place de rôles synchronisés depuis des groupes LDAP] bn8
Ligne 1: Ligne 1:
 ====== Authentic ====== ====== Authentic ======
 +
 +**Doc officielle (en partie obsolète) :** https://authentic2.readthedocs.io/en/latest/
  
 ===== Configuration d'une application cliente CAS ===== ===== Configuration d'une application cliente CAS =====
Ligne 21: Ligne 23:
       * ''LDAP'' : attributs récupérés directement depuis l'annuaire LDAP qui peuvent être mono-valués ou multi-valués.       * ''LDAP'' : attributs récupérés directement depuis l'annuaire LDAP qui peuvent être mono-valués ou multi-valués.
       * pas de suffixe entre parenthèses : il s'agit le plus souvent d'attributs générés à la voler par Authentic, soit en fonction d'une méthode issue de la configuration (voir paramètre ''ATTRIBUTE_SOURCES''), soit d'attributs standard prévus par Authentic.       * pas de suffixe entre parenthèses : il s'agit le plus souvent d'attributs générés à la voler par Authentic, soit en fonction d'une méthode issue de la configuration (voir paramètre ''ATTRIBUTE_SOURCES''), soit d'attributs standard prévus par Authentic.
 +
 +===== Génération d'attributs à la volée =====
 +
 +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 :
 +
 +<code python>
 +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
 +    }),
 +]
 +</code>
 +
 +<note tip>''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()'' : <code python>attrs = ctx['user'].get_attributes(None, ctx)
 +return attrs.get('edupersonaffiliation', [])</code>
 +</note>
 +
 +**Exemple complet pour la génération de l'attribut //eduPersonScopedAffiliation// :**
 +<code python>
 +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
 +    }),
 +]
 +</code>
 +
  
  
Ligne 48: Ligne 101:
 Utilisé l'outil en ligne : http://rnd.feide.no/simplesaml/module.php/saml2debug/debug.php Utilisé l'outil en ligne : http://rnd.feide.no/simplesaml/module.php/saml2debug/debug.php
  
 +===== Mise en place de rôles synchronisés depuis des groupes LDAP =====
 +
 +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 :
 +
 +  * Créez le groupe dans l'annuaire LDAP
 +  * Créez le rôle dans Authentic :
 +    * Dans l'interface ''/manage/'', allez dans **Rôles** puis cliquez sur le bouton **Ajouter un rôle** :
 +      * Nom : ''Salariés''
 +      * Description : ''Rôle synchronisé depuis le groupe "Salaries" de l'annuaire LDAP''
 +    * Cliquez sur le bouton **Sauvegarder**
 +    * Récupérez l'identifiant court (=slug) du rôle (dans notre cas ''salaries'')
 +  * Éditez le fichier de configuration d'Authentic (''/etc/authentic2/config.py'' le plus souvent)
 +    * Dans la configuration LDAP (''LDAP_AUTH_SETTINGS''), pour chaque bloc concerné, ajoutez une entrée dans la clé ''group_to_role_mapping'' : <code python>
 +LDAP_AUTH_SETTINGS=[
 +    {
 +        "realm": "ldap_users",
 +        [...]
 +        "group_to_role_mapping": [
 +            ('cn=salaries,ou=dyngroups,o=enercoop', ['salaries']),
 +        ],
 +    },
 +    [...]
 +]</code>
 +<note important>**Le DN du groupe** doit être saisi ici en **minuscule** !</note>
 +  * Pour prise en compte à la prochaine connexion d'un utilisateur, rechargez la configuration du service : <code bash>service authentic2 reload</code>
 +
 +<note tip>Pour une alimentation immédiate de la liste des membres, vous pouvez également lancer une synchronisation LDAP manuellement à l'aide de la commande : <code bash>authentic2-manage sync-ldap-users</code></note>
 +
 +Il est ensuite possible par exemple de restreindre l'accès à un service :
 +  * Dans l'interface ''/manage/'', aller dans **Services** puis sélectionner le service de votre choix
 +  * Sous **Rôles autorisés à se connecter à ce service** / **Ajouter un rôle**, sélectionnez un rôle et cliquer sur le bouton **Ajouter**
  • informatique/securite/authentic.txt
  • Dernière modification : 2022/02/16 19:06
  • de bn8