GuillaumeSmaha.gluu-configuration

Ansible Gluu : rôle de configuration

Le gluu-configuration est un rôle Ansible permettant de configurer facilement Gluu en créant ou en mettant à jour les entrées dans le serveur LDAP.

Avec ce rôle, vous pouvez créer ou mettre à jour :

  • Paramètres globaux (appliances)
  • Configuration JSON d'oxAuth
  • Configuration JSON d'oxTrust
  • Attributs
  • Portées OpenId Connect
  • Clients OpenId Connect
  • Groupes
  • Utilisateurs
  • Scripts personnalisés

En mode cluster, ce rôle met également à jour le mode d'authentification par défaut pour utiliser tous les serveurs avec le module 'LDAP'. Pour cela automatiquement, le rôle utilisera la variable gluu_internal_hostname de chaque serveur avec le module 'LDAP'.

Ce rôle ne peut être utilisé que sur un seul nœud du cluster.

Pour utiliser les fonctionnalités du mode cluster dans ce rôle, tous les serveurs Gluu doivent être dans le groupe gluu-servers et le Gluu Cluster Manager doit être dans le groupe gluu-cluster-manager.

Historique

Le serveur de gestion d'authentification open source de Gluu permet aux organisations d'offrir un accès unique, une authentification forte, et de centraliser.

Exigences

Pour déployer, vous aurez besoin de :

$ pip install -r requirements.txt

Installation

gluu-configuration est un rôle Ansible distribué globalement via Ansible Galaxy. Pour installer le rôle gluu-configuration, vous pouvez utiliser la commande suivante.

$ ansible-galaxy install GuillaumeSmaha.gluu-configuration

Mise à jour

Si vous souhaitez mettre à jour le rôle, vous devez utiliser le paramètre --force lors de l'installation. Veuillez vérifier la commande suivante :

$ ansible-galaxy install --force GuillaumeSmaha.gluu-configuration

Voir CHANGELOG.md

Variables du rôle

vars:

  # Définir une version personnalisée du paquet à installer.
  # Pour obtenir une liste des versions de paquet disponibles, consultez : https://gluu.org/docs/ce/
  gluu_version: 3.1.7


  # Paramètres globaux :
  #   - **gluuScimEnabled** : Activer SCIM ? (activé/désactivé)
  #   - **gluuPassportEnabled** : Activer Passport ? (activé/désactivé)
  #   - **passwordResetAllowed** : Autoriser les utilisateurs à réinitialiser le mot de passe ? (activé/désactivé)
  #   - **gluuOrgProfileMg**t : Autoriser les utilisateurs à modifier leur propre profil ? (activé/désactivé)
  #   - **gluuVdsCacheRefreshPollingInterval** : Intervalle de synchronisation du rafraîchissement du cache (valeur en minutes)
  #   - **gluuVdsCacheRefreshEnabled** : Activer le rafraîchissement du cache ? (activé/désactivé)
  #   - **oxTrustCacheRefreshServerIpAddress** : Adresse IP du serveur destinataire pour le rafraîchissement du cache
  #   - **oxAuthenticationMode** : Mode d'authentification pour l'authentification commune (par défaut : auth_ldap_server)
  #   - **oxTrustAuthenticationMode** : Mode d'authentification pour l'authentification de l'interface oxTrust (par défaut : auth_ldap_server)
  # *Voir https://github.com/GluuFederation/community-edition-setup/blob/3.1.4/templates/appliance.ldif*
  # Exemple pour activer SCIM et définir un script personnalisé pour l'authentification :
  # gluu_appliances:
  #   gluuScimEnabled: 'enabled'
  #   oxAuthenticationMode: 'basic_multi_ldap_auth'
  gluu_appliances:


  # Ce paramètre permet d'appliquer une opération JSON sur la configuration d'oxTrust pour un attribut défini.
  #
  # Il est possible d'utiliser ces opérations :
  # - insert : Insérer une nouvelle clé. Erreur si la clé existe déjà
  # - replace : Mettre à jour une clé. Erreur si la clé n'existe pas
  # - delete : Supprimer une clé
  # - insertOrReplace : Insérer ou mettre à jour une clé.
  #
  # Liste des attributs et des clés (non exhaustive):
  # - oxTrustConfApplication *(Voir https://github.com/GluuFederation/community-edition-setup/blob/3.1.4/templates/oxtrust-config.json)*
  #   - oxAuthIssuer
  #   - umaIssuer
  #   - clientWhiteList
  #   - clientBlackList
  # - oxTrustConfCacheRefresh *(Voir https://github.com/GluuFederation/community-edition-setup/blob/3.1.4/templates/oxtrust-cache-refresh.json)*
  #   - sourceConfigs
  #   - inumConfig
  #   - targetConfig
  #   - keyAttributes
  #   - keyObjectClasses
  #   - sourceAttributes
  #   - customLdapFilter
  #   - updateMethod
  #   - keepExternalPerson
  #   - useSearchLimit
  #   - attributeMapping
  #   - snapshotFolder
  #   - snapshotMaxCount
  # - oxTrustConfImportPerson *(Voir https://github.com/GluuFederation/community-edition-setup/blob/3.1.4/templates/oxtrust-import-person.json)*
  #   - mappings
  #
  # Exemple pour mettre à jour la limite de taille de recherche LDAP sur la configuration de rafraîchissement du cache :
  # gluu_oxtrust_json_operations:
  #   oxTrustConfCacheRefresh:
  #     - insertOrReplace:
  #         path: '/ldapSearchSizeLimit'
  #         value: 1000
  gluu_oxtrust_json_operations:


  # Ce paramètre permet d'appliquer une opération JSON sur la configuration d'oxAuth pour un attribut défini.
  #
  # Il est possible d'utiliser ces opérations :
  # - insert : Insérer une nouvelle clé. Erreur si la clé existe déjà
  # - replace : Mettre à jour une clé. Erreur si la clé n'existe pas
  # - delete : Supprimer une clé
  # - insertOrReplace : Insérer ou mettre à jour une clé.
  #
  # Liste des attributs et des clés (non exhaustive) :
  # - oxAuthConfDynamic *(Voir https://github.com/GluuFederation/community-edition-setup/blob/3.1.4/templates/oxauth-config.json)*
  #   - shortLivedAccessTokenLifetime
  #   - umaIssuer
  #   - clientWhiteList
  #   - clientBlackList
  # - oxAuthConfStatic *(Voir https://github.com/GluuFederation/community-edition-setup/blob/3.1.4/templates/oxauth-static-conf.json)*
  # - oxAuthConfErrors *(Voir https://github.com/GluuFederation/community-edition-setup/blob/3.1.4/static/oxauth/oxauth-errors.json)*
  # - oxAuthConfWebKeys
  #
  # Exemple pour mettre à jour la durée de vie des tokens d'identification :
  # gluu_oxauth_json_operations:
  #   oxAuthConfDynamic:
  #     - insertOrReplace:
  #         path: '/idTokenLifetime'
  #         value: 1000
  gluu_oxauth_json_operations:


  # Permet d'ajouter ou de mettre à jour des attributs.
  #
  # Exemple pour ajouter la date de dernière connexion :
  # gluu_attributes:
  #   -
  #     inum: '2213'
  #     displayName: Date de dernière connexion
  #     gluuAttributeName: oxLastLogonTime
  #     gluuAttributeOrigin: gluuPerson
  #     gluuAttributeType: generalizedTime
  #     gluuAttributeViewType:
  #       - user
  #       - admin
  #     gluuAttributeEditType:
  #       - user
  #     gluuStatus: active
  #     oxAuthClaimName: lastConnectionAt
  #     oxMultivaluedAttribute: false
  #     oxSCIMCustomAttribute: false
  #     gluuSAML1URI: urn:mace:dir:attribute-def:oxLastLogonTime
  #     gluuSAML2URI: oxAttribute:210
  #     description: Date de dernière connexion
  #
  # Si `inum` n'est pas défini, l'attribut `gluuAttributeName` sera utilisé pour rechercher et mettre à jour une entrée existante.
  # _Remarque :_ Le `inum` n'a besoin que de la partie valeur du inum. L'organisation et le type de inum seront ajoutés automatiquement.
  gluu_attributes:


  # Permet d'ajouter ou de mettre à jour des portées OpenId Connect.
  #
  # Exemple pour mettre à jour la portée `openid` en ajoutant les attributs `inum` et `lastConnectionAt` ( `lastConnectionAt` vient de l'attribut précédemment ajouté) :
  # gluu_openid_connect_scopes:
  #   -
  #     displayName: openid
  #     inum: 'F0C4'
  #     oxAuthClaim:
  #       - '29DA'
  #       - '2213'
  #
  # Si `inum` n'est pas défini, l'attribut `displayName` sera utilisé pour rechercher et mettre à jour une entrée existante.
  # _Remarque :_ Le `inum` n'a besoin que de la partie valeur du inum. L'organisation et le type de inum seront ajoutés automatiquement.
  # _Remarque 2 :_ La liste des inum pour `oxAuthClaim` est disponible ici : https://github.com/GluuFederation/community-edition-setup/blob/3.1.4/templates/attributes.ldif
  gluu_openid_connect_scopes:


  # Permet d'ajouter ou de mettre à jour des clients OpenId Connect.
  #
  # Exemple pour ajouter un client :
  # gluu_openid_connect_clients:
  #   -
  #     displayName: Client Admin
  #     oxAuthClientSecret: admin
  #     inum: '2212.0010'
  #     oxAuthGrantType: implicit
  #     oxAuthAppType: native
  #     oxAuthResponseType:
  #       - id_token
  #       - token
  #     oxAuthScope:
  #       - '341A'
  #       - '764C'
  #       - 'F0C4'
  #       - 'C4F5.F66C'
  #       - '43F1'
  #       - '6D98'
  #       - '6D99'
  #       - '10B2'
  #     oxAuthTokenEndpointAuthMethod: client_secret_basic
  #     oxAuthTrustedClient: true
  #     oxAuthSubjectType: public
  #     oxAuthLogoutSessionRequired: false
  #     oxPersistClientAuthorizations: false
  #
  # Si `inum` n'est pas défini, l'attribut `displayName` sera utilisé pour rechercher et mettre à jour une entrée existante.
  # _Remarque :_ Le `inum` n'a besoin que de la partie valeur du inum. L'organisation et le type de inum seront ajoutés automatiquement.
  # _Remarque 2 :_ La liste des inum pour `oxAuthScope` est disponible ici : https://github.com/GluuFederation/community-edition-setup/blob/3.1.4/templates/scopes.ldif
  gluu_openid_connect_clients:


  # Permet d'ajouter ou de mettre à jour des groupes.
  #
  # Exemple pour ajouter un groupe :
  # gluu_groups:
  #   -
  #     inum: '0010'
  #     displayName: Utilisateurs Admin
  #     gluuGroupVisibility: private
  #     gluuStatus: active
  #     member:
  #       - '0000.1111.0010'
  #
  # Si `inum` n'est pas défini, l'attribut `displayName` sera utilisé pour rechercher et mettre à jour une entrée existante.
  # _Remarque :_ Le `inum` n'a besoin que de la partie valeur du inum. L'organisation et le type de inum seront ajoutés automatiquement.
  # _Remarque 2 :_ Pour ajouter un utilisateur dans un groupe, vous devez l'ajouter dans le groupe et le définir comme membre du groupe.
  # _Remarque 3 :_ Même si le membre n'est pas encore créé, vous pouvez l'ajouter dans la liste `member`.
  gluu_groups:


  # Permet d'ajouter ou de mettre à jour des utilisateurs.
  #
  # Exemple pour ajouter un utilisateur :
  # gluu_users:
  #   -
  #     inum: '0000.1111.0010'
  #     uid: monUtilisateur
  #     userPassword: test
  #     displayName: Mon Utilisateur
  #     givenName: Guillaume
  #     sn: Smaha
  #     mail: [email protected]
  #     gluuStatus: active
  #     memberOf:
  #       - '0010'
  #
  # Si `inum` n'est pas défini, l'attribut `uid` sera utilisé pour rechercher et mettre à jour une entrée existante.
  # _Remarque :_ Le `inum` n'a besoin que de la partie valeur du inum. L'organisation et le type de inum seront ajoutés automatiquement.
  # _Remarque 2 :_ Pour ajouter un utilisateur dans un groupe, vous devez l'ajouter au groupe et le définir comme membre du groupe.
  gluu_users:


  # Permet d'ajouter ou de mettre à jour des scripts.
  #
  # Exemple pour activer, mettre à jour et ajouter des scripts :
  #   - Activer le script `basic_lock` et définir 10 essais de connexion invalides maximum
  #   - Mettre à jour l'autorisation UMA pour actualiser les clients autorisés (`Client Admin` créé précédemment)
  #   - Ajouter un script pour l'authentification multiple LDAP
  # gluu_scripts:
  #   -
  #     displayName: basic_lock
  #     description: Authentification de base avec verrouillage
  #     gluuStatus: 'true'
  #     oxConfigurationProperty:
  #       - value1: invalid_login_count_attribute
  #         value2: oxCountInvalidLogin
  #         description: ""
  #       - value1: maximum_invalid_login_attemps
  #         value2: 10
  #         description: ""
  #   -
  #     displayName: uma_rpt_policy
  #     description: Politique d'autorisation UMA
  #     gluuStatus: 'true'
  #     oxConfigurationProperty:
  #       - value1: allowed_clients
  #         value2: "{{ gluu_inum_org }}!0008!2212.0010"
  #         description: ""
  #   -
  #     inum: '2212.0010'
  #     displayName: basic_multi_ldap_auth_lock
  #     description: Authentification multiple LDAP de base avec verrouillage
  #     gluuStatus: 'true'
  #     oxModuleProperty:
  #       - value1: location_type
  #         value2: ldap
  #         description: ""
  #     oxConfigurationProperty:
  #       - value1: auth_configuration_file
  #         value2: /etc/gluu/conf/basic_multi_ldap_auth.json
  #         description: ""
  #     oxLevel: 100
  #     programmingLanguage: python
  #     oxScriptType: person_authentication
  #     oxScript: "{{ lookup('template', 'templates/scripts/PersonAuthentication/BasicMultipleLdapAuthWithLock.py') }}"
  #
  # Si `inum` n'est pas défini, l'attribut `displayName` sera utilisé pour rechercher et mettre à jour une entrée existante.
  # _Remarque :_ Le `inum` n'a besoin que de la partie valeur du inum. L'organisation et le type de inum seront ajoutés automatiquement.
  # _Remarque 2 :_ Après Gluu 3.1.x, `uma_authorization_policy` devient `uma_rpt_policy`.
  gluu_scripts:


  # ===================================
  # Gluu sur plusieurs nœuds (cluster)
  # ===================================


  # Définir si le serveur est dans un cluster.
  # Lorsque gluu_cluster = True, le mode d'authentification par défaut utilise tous les serveurs avec le module 'LDAP' ou la liste définie.
  gluu_cluster: False


  # Lorsque gluu_cluster = True, vous pouvez définir les noms d'hôtes des serveurs LDAP externes de Gluu.
  # Par défaut, une liste de tous les serveurs ayant le module LDAP installé
  # Par exemple, un serveur consommateur simple installé uniquement avec le module oxauth utilisera ce paramètre avec le nom d'hôte des deux principaux serveurs.
  # Exemple :
  #   gluu_ldap_hostname: 192.168.1.101:1636,192.168.1.102:1636
  gluu_ldap_hostname:


  # Seulement lorsque gluu_cluster = True.
  # L'objectif de ce paramètre est de distinguer le nom d'hôte interne et le nom d'hôte externe (gluu_hostname).
  # Le nom d'hôte externe sera appelé de l'extérieur et c'est un équilibreur de charge comme nginx. Tous les serveurs Gluu seront configurés avec le nom d'hôte externe.
  # Mais pour connecter tous les nœuds du cluster aux serveurs LDAP, il est nécessaire d'avoir un nom d'hôte interne qui ne fera pas appel au nom d'hôte externe.
  # Par défaut, il est égal à gluu_hostname
  gluu_internal_hostname: '{{ gluu_hostname }}'

Déploiement

Pour déployer, vous devez suivre certaines étapes :

  • Créez un nouveau fichier hosts. Consultez la documentation sur l'inventaire Ansible si vous avez besoin d'aide.
  • Créez un nouveau playbook pour déployer votre application, par exemple, deploy.yml
  • Configurez les variables de rôle (voir Variables du rôle)
  • Incluez le rôle GuillaumeSmaha.gluu-configuration comme partie d'un play
  • Exécutez le playbook de déploiement

ansible-playbook -i hosts deploy.yml

Si tout est configuré correctement, cette commande installera Gluu Cluster Manager sur l'hôte.

Exemple de Playbook

Dans le dossier exemple, vous pouvez vérifier un projet exemple qui montre comment déployer.

Pour l'exécuter, vous devrez avoir Vagrant et le rôle installés. Veuillez consulter https://www.vagrantup.com pour plus d'informations sur Vagrant et notre section Installation.

$ cd example
$ vagrant plugin install vagrant-lxc
$ vagrant plugin install vagrant-hostmanager
$ vagrant up --provider=lxc
$ ansible-galaxy install GuillaumeSmaha.gluu-setup GuillaumeSmaha.gluu-configuration
$ ansible-playbook -i env/ubuntu deploy.yml
$ ansible-playbook -i env/centos deploy.yml

Accédez à Gluu en allant sur :

https://gluu-configuration-ubuntu/

ou

https://gluu-configuration-centos/

Vous pouvez vous connecter à Gluu avec ces identifiants utilisateur :

  • Nom d'utilisateur : myUser
  • Mot de passe : test

Projets exemples

Vous pouvez trouver un exemple complet d'un playbook ici :

https://github.com/GuillaumeSmaha/ansible-gluu-playbook

À propos du projet

Gluu Configuration for main Gluu server

Installer
ansible-galaxy install GuillaumeSmaha.gluu-configuration
Licence
gpl-3.0
Téléchargements
159
Propriétaire