<?xml version="1.0" encoding="utf-8"?>
<creole>
    <files>
        <service servicelist="sso">eole-sso</service>
        <service_access service='sso'>
            <port port_type="SymLinkOption">eolesso_port</port>
            <port>8443</port>
        </service_access>
        <service method='apache' servicelist='sso_apache'>eolesso</service>
        <file name='/etc/apache2/sites-available/eolesso.conf' filelist='sso_apache' source="apache-eolesso.conf" rm="True"/>
        <file name='/etc/nginx/web.d/eolesso.conf' filelist='sso_nginx' source="nginx-eolesso.conf" mkdir="True" rm="True"/>
        <file name='/etc/eolesso/sso.conf' filelist="sso" mkdir="True"/>
    </files>
    <variables>
        <family name='eole sso' icon='group'>
            <!-- Configuration -->
            <variable name='eolesso_session_timeout' type='number' description="Durée de vie d'une session sur le serveur SSO (en secondes)">
                <value>7200</value>
            </variable>
            <variable name='eolesso_css' type='string' description="CSS par défaut du service SSO (sans le .css)"/>

            <!-- LDAP -->
            <variable name='eolesso_ldap' type='domain' description='Adresse du serveur LDAP utilisé par EoleSSO' multi='True'>
                <value>localhost</value>
            </variable>
            <variable name='eolesso_port_ldap' type='port' description='Port du serveur LDAP utilisé par EoleSSO'>
                <value>389</value>
            </variable>
            <variable name='eolesso_ldap_use_tls' type='oui/non' description="Le serveur LDAP supporte TLS" mode='expert'>
                <value>non</value>
            </variable>
            <variable name='eolesso_base_ldap' type='string' description="Chemin de recherche dans l'annuaire" mandatory='True'/>
            <variable name='eolesso_ldap_label' type='string' description="Libellé à présenter aux utilisateurs en cas d'homonymes" mandatory='True'/>
            <variable name='eolesso_ldap_infos' type='string' description="Informations supplémentaire dans le cadre d'information sur les homonymes">
                <value></value>
            </variable>
            <variable name='eolesso_ldap_reader' type='string' description='Utilisateur de lecture des comptes LDAP (nécessaire pour la fédération)'/>
            <variable name='eolesso_ldap_reader_passfile' type='filename' description="Fichier de mot de passe de l'utilisateur de lecture">
                <value>/root/.reader</value>
            </variable>
            <variable name='eolesso_ldap_match_attribute' type='string' description="Attribut de recherche des utilisateurs">
                <value>uid</value>
            </variable>
            <variable name='eolesso_ldap_login_otp' type='string' description="Identifiants OTP pour cet annuaire">
                <value>inactifs</value>
            </variable>
            <variable name='eolesso_ldap_filter_user' type='string' description="Filtre d'utilisateurs">
                <value>objectClass=person</value>
            </variable>
            <variable name='eolesso_ldap_filter_group' type='string' description="Filtre de groupes">
                <value>objectClass=posixGroup</value>
            </variable>
            <variable name='eolesso_ldap_dntree_user' type='string' description="DN racine de l'arbre utilisateurs">
                <value></value>
            </variable>
            <variable name='eolesso_ldap_dntree_group' type='string' description="DN racine de l'arbre groupes">
                <value></value>
            </variable>
            <variable name='eolesso_ldap_fill_displayname' type='string' description="Champ 'nom d'affichage' de l'utilisateur">
                <value>displayName</value>
            </variable>
            <variable name='eolesso_ldap_fill_mail' type='string' description="Champ 'mail' de l'utilisateur">
                <value>mail</value>
            </variable>
            <variable name='eolesso_ldap_fill_fonction' type='string' description="Champ 'fonction' de l'utilisateur">
                <value></value>
            </variable>
            <variable name='eolesso_ldap_fill_categorie' type='string' description="Champ 'categorie' de l'utilisateur">
                <value></value>
            </variable>
            <variable name='eolesso_ldap_fill_rne' type='string' description="Champ 'rne' de l'utilisateur">
                <value></value>
            </variable>
            <variable name='eolesso_ldap_fill_fredurne' type='string' description="Champ 'fredurne' de l'utilisateur">
                <value></value>
            </variable>
            <variable name='eolesso_ldap_fill_displaygroup' type='string' description="Champ 'nom d'affichage' du groupe">
                <value>cn</value>
            </variable>
            <variable name='eolesso_ldap_apps_params' type='oui/non' description="Information LDAP supplémentaires (applications)">
                <value>non</value>
            </variable>

            <!-- AD -->
            <variable name='eolesso_ad' type="oui/non" description="Permettre le changement de mot de passe sur un serveur AD">
                <value>non</value>
            </variable>
            <variable name='eolesso_ad_domain' type='string' description='Nom du domaine Active Directory sur lequel changer le mot de passe'/>
            <variable name='eolesso_ad_server' type='hostname' description='Nom du serveur Active Directory sur lequel changer le mot de passe'/>

            <!-- SSO parent -->
            <variable name='eolesso_adresse_parent' type='string' description='Adresse du serveur SSO parent'/>
            <variable name='eolesso_port_parent' type='number' description='Port du serveur SSO parent'>
                <value>8443</value>
            </variable>

            <!-- federation -->
            <variable name='eolesso_entity_name' type='string' description="Nom d'entité SAML du serveur eole-sso (ou rien)"/>
            <variable name='federation_transparente' type='oui/non' description="Cacher le formulaire lors de l'envoi des informations de fédération">
                <value>non</value>
            </variable>

            <!-- OTP -->
            <variable name='eolesso_pam_securid' type='oui/non' description="Gestion de l'authentification OTP (RSA SecurID)">
                <value>non</value>
            </variable>
            <variable name='eolesso_otppass_minsize' type='number' description="Taille minimum du passcode OTP">
                <value>10</value>
            </variable>
            <variable name='eolesso_otppass_maxsize' type='number' description="Taille maximum du passcode OTP">
                <value>12</value>
            </variable>
            <variable name='eolesso_otppass_regx' type='string' description="Expression régulière de détection des passcodes OTP">
                <value>^[0-9]{10,12}$</value>
            </variable>
            <variable name='eolesso_otp_desync' type='oui/non' description="Gestion locale des clés OTP désynchronisées">
                <value>non</value>
            </variable>
            <variable name='eolesso_otp_portal' type='string' description="Adresse de la mire OTP en cas désynchronisation de clé"/>

            <!-- Certificats -->
            <variable name='eolesso_cert' type='string' description='Chemin du certificat SSL'/>
            <variable name='eolesso_key' type='string' description='Chemin de la clé privée liée au certificat SSL'/>

            <!-- Autres -->
            <variable name='eolesso_cookie_name' type='string' description="Nom du cookie EoleSSO" mode="expert">
                <value>EoleSSOServer</value>
            </variable>
            <variable name='eolesso_cookie_domain' type='string' description= "Domaine du cookie EoleSSO" mode="expert">
                <value></value>
            </variable>
            <variable name='eolesso_responsive' type='oui/non' description="Activer la balise meta viewport (CSS responsive)" mode="expert">
                <value>non</value>
            </variable>
            <variable name='eolesso_metrics' type='oui/non' description="Générer des statistiques d'usage du service" mode="expert">
                <value>non</value>
            </variable>
            <variable name='cas_send_logout' type='oui/non' description="Activer le logout centralisé du serveur SSO" hidden='True'>
                <value>oui</value>
            </variable>
            <variable name='cas_verify_service' type='oui/non' description="Ne pas répondre aux demandes CAS des applications inconnues" mode="expert">
                <value>non</value>
            </variable>
            <variable name='eolesso_backlog' type='number' description="Nombre maximum de sessions en attente (backlog)" mode="expert">
                <value>5</value>
            </variable>
            <variable name='sso_saml_time_adjust' type='number' description="Décalage de temps (en secondes) dans les messages de fédération SAML" mode="expert">
                <value>-300</value>
            </variable>
            <variable name='eolesso_thread_pool_size' type='number' description="Taille du pool de traitement (thread pool size)" mode="expert">
                <value>10</value>
            </variable>
            <variable name='test_activer_nginx'>Vérifie que le mode conteneur est actif ou qu’apache est désactivé.</variable>

        </family>

        <separators>
            <separator name='eolesso_ldap'>Configuration LDAP</separator>
            <separator name='eolesso_adresse_parent'>Serveur SSO parent</separator>
            <separator name='eolesso_entity_name'>Fédération d'identité</separator>
            <separator name='eolesso_pam_securid'>Authentification par clé OTP</separator>
            <separator name='eolesso_cert'>Certificats</separator>
            <separator name='eolesso_cas_folder'>Autres options</separator>
        </separators>

    </variables>

    <constraints>
        <fill name='calc_val_first_value' target='eolesso_adresse'>
            <param type='eole' optional='True' hidden='False'>web_url</param>
            <param type='eole'>nom_domaine_machine</param>
        </fill>
        <fill name='calc_val_first_value' target='eolesso_base_ldap'>
            <param type='eole' optional='True' hidden='False'>ldap_base_dn</param>
            <param>o=gouv,c=fr</param>
        </fill>
        <fill name='concat' target='eolesso_ldap_reader'>
            <param>cn=reader,</param>
            <param type='eole'>eolesso_base_ldap</param>
        </fill>
        <fill name='calc_val' target='eolesso_cert'>
            <param type='eole' name='valeur'>server_full_chain_pem</param>
        </fill>
        <fill name='calc_val' target='eolesso_key'>
            <param type='eole' name='valeur'>server_key</param>
        </fill>
        <condition name='disabled_if_in' source='eolesso_ad'>
            <param>non</param>
            <target type='variable'>eolesso_ad_domain</target>
            <target type='variable'>eolesso_ad_server</target>
        </condition>
        <condition name='disabled_if_not_in' source='activer_sso'>
            <param>local</param>
            <target type='servicelist'>sso</target>
            <target type='filelist'>sso</target>
            <target type='variable'>eolesso_ldap</target>
            <target type='variable'>eolesso_port_ldap</target>
            <target type='variable'>eolesso_ldap_use_tls</target>
            <target type='variable'>eolesso_base_ldap</target>
            <target type='variable'>eolesso_ldap_label</target>
            <target type='variable'>eolesso_ldap_infos</target>
            <target type='variable'>eolesso_ldap_reader</target>
            <target type='variable'>eolesso_ldap_reader_passfile</target>
            <target type='variable'>eolesso_ldap_match_attribute</target>
            <target type='variable'>eolesso_ad</target>
            <target type='variable'>eolesso_adresse_parent</target>
            <target type='variable'>eolesso_port_parent</target>
            <target type='variable'>eolesso_cert</target>
            <target type='variable'>eolesso_key</target>
            <target type='variable'>eolesso_ca_location</target>
            <target type='variable'>eolesso_css</target>
            <target type='variable'>eolesso_responsive</target>
            <target type='variable'>federation_transparente</target>
            <target type='variable'>eolesso_entity_name</target>
            <target type='variable'>eolesso_pam_securid</target>
            <target type='variable'>eolesso_ldap_apps_params</target>
            <target type='filelist'>sso_apache</target>
            <target type='filelist'>sso_nginx</target>
            <target type='servicelist'>sso_apache</target>
        </condition>
        <condition name='disabled_if_in' source='eolesso_pam_securid'>
            <param>non</param>
            <target>eolesso_otp_desync</target>
            <target>eolesso_ldap_login_otp</target>
            <target>eolesso_otppass_minsize</target>
            <target>eolesso_otppass_maxsize</target>
            <target>eolesso_otppass_regx</target>
        </condition>
        <condition name='disabled_if_in' source='eolesso_otp_desync'>
            <param>oui</param>
            <target>eolesso_otp_portal</target>
        </condition>
        <condition name='disabled_if_in' source='eolesso_ldap_apps_params'>
            <param>non</param>
            <target>eolesso_ldap_filter_user</target>
            <target>eolesso_ldap_filter_group</target>
            <target>eolesso_ldap_dntree_user</target>
            <target>eolesso_ldap_dntree_group</target>
            <target>eolesso_ldap_fill_displayname</target>
            <target>eolesso_ldap_fill_mail</target>
            <target>eolesso_ldap_fill_fonction</target>
            <target>eolesso_ldap_fill_categorie</target>
            <target>eolesso_ldap_fill_rne</target>
            <target>eolesso_ldap_fill_fredurne</target>
            <target>eolesso_ldap_fill_displaygroup</target>
        </condition>

        <!-- Do not configure Nginx if we use Apache -->
        <condition name='disabled_if_in' source='test_activer_nginx' fallback='True'>
            <param>non</param>
            <target type='filelist'>sso_nginx</target>
        </condition>
        <auto name='calc_multi_condition' target='test_activer_nginx'>
            <param>['non', 'oui']</param>
            <param type='eole' name='condition_1'>mode_conteneur_actif</param>
            <param type='eole' name='condition_2'>activer_apache</param>
            <param name='match'>non</param>
            <param name='mismatch'>oui</param>
        </auto>


        <!-- Do not configure Apache if we use Nginx -->
        <condition name='disabled_if_in' source='activer_nginx_web' fallback='True'>
            <param>oui</param>
            <target type='filelist'>sso_apache</target>
            <target type='servicelist'>sso_apache</target>
        </condition>

        <!-- Do not configure Apache if Apache is disabled -->
        <condition name='disabled_if_in' source='activer_apache' fallback='True'>
            <param>non</param>
            <target type='filelist'>sso_apache</target>
            <target type='servicelist'>sso_apache</target>
        </condition>

        <check name='valid_enum' target='activer_sso'>
            <param>['non', 'local', 'distant']</param>
        </check>
        <check name='valid_enum' target='eolesso_ldap_login_otp'>
            <param>['inactifs','identiques','configurables']</param>
        </check>
        <fill name='calc_libelle_annuaire' target='eolesso_ldap_label'>
            <param type='eole'>eolesso_ldap</param>
            <param type='eole'>nom_machine</param>
            <param type='eole'>nom_domaine_local</param>
        </fill>

        <group master='eolesso_ldap'>
            <slave>eolesso_port_ldap</slave>
            <slave>eolesso_ldap_use_tls</slave>
            <slave>eolesso_base_ldap</slave>
            <slave>eolesso_ldap_label</slave>
            <slave>eolesso_ldap_infos</slave>
            <slave>eolesso_ldap_reader</slave>
            <slave>eolesso_ldap_reader_passfile</slave>
            <slave>eolesso_ldap_match_attribute</slave>
            <slave>eolesso_ldap_login_otp</slave>
            <slave>eolesso_ldap_filter_user</slave>
            <slave>eolesso_ldap_filter_group</slave>
            <slave>eolesso_ldap_dntree_user</slave>
            <slave>eolesso_ldap_dntree_group</slave>
            <slave>eolesso_ldap_fill_displayname</slave>
            <slave>eolesso_ldap_fill_mail</slave>
            <slave>eolesso_ldap_fill_fonction</slave>
            <slave>eolesso_ldap_fill_categorie</slave>
            <slave>eolesso_ldap_fill_rne</slave>
            <slave>eolesso_ldap_fill_fredurne</slave>
            <slave>eolesso_ldap_fill_displaygroup</slave>
        </group>
    </constraints>

    <help>
        <family name='eole sso'>Configuration du serveur d'authentification EoleSSO</family>
        <variable name='eolesso_session_timeout'>Durée de la validité du cookie utilisé par le serveur SSO</variable>
        <variable name='eolesso_cookie_name'>Nom du cookie identifiant la session SSO</variable>
        <variable name='eolesso_cookie_domain'>Domaine du cookie SSO ( si rien: utilise le nom d'hôte du serveur)</variable>
        <variable name='eolesso_cert'>Certificat utilisé par le serveur SSO</variable>
        <variable name='eolesso_key'>Valeur ignorée si le certificat n'est pas défini. si rien et certificat défini: 'nom_certificat.key' dans le même répertoire.</variable>
        <variable name='eolesso_css'>CSS par défaut pour les pages du service SSO (sans le .css, le fichier est à placer dans /usr/share/sso/interface/[nom_fichier].css)</variable>
        <variable name='eolesso_responsive'>Inclut la balise meta 'viewport' dans les pages de l'application (avec content="width=device-width, initial-scale=1"). A activer en cas d'utilisation d'une CSS 'responsive'.</variable>
        <variable name='federation_transparente'>Lors de l'envoi d'attributs de l'utilisateur à un fournisseur tiers dans le cadre d'une fédération d'identité, un formulaire est présenté pour le prévenir. En choisissant 'oui', le formulaire sera envoyé automatiquement sans être affiché.</variable>
        <variable name='eolesso_ldap_label'>Dans le cas ou un utilisateur aurait un homonyme dans un des annuaires configurés, une liste déroulante lui permet de choisir sa provenance (un des annuaires configurés, ou un établissement en cas d'annuaire multi établissements). Ce libellé est utilisé pour décrire cet annuaire. (si rien: Annuaire de 'adresse_serveur')</variable>
        <variable name='eolesso_ldap_infos'>Dans le cas ou des homonymes sont détectés, le contenu du fichier indiqué sera ajouté au code html du cadre affiché (seulement si l'utilisateur est présent dans cet annuaire). Le fichier doit être dans le répertoire /usr/share/sso/interface/infos_homonymes</variable>
        <variable name='eolesso_ldap_reader'>La fédération nécessite un compte LDAP ayant accès en lecture aux attributs de tous les utilisateurs. Dans le cas de l'utilisation d'un annuaire fourni par le paquet eole-annuaire, l'utilisateur "cn=reader,o=gouv,c=fr" est disponible</variable>
        <variable name='eolesso_ldap_reader_passfile'>Fichier contenant le mot de passe de l'utilisateur de lecture des comptes LDAP. si le fichier ou le compte n'existent pas, la recherche d'attributs en cas de fédération se fera de façon anonyme</variable>
        <variable name='eolesso_ldap_match_attribute'>Attribut utilisé comme identifiant des utilisateurs pour cet annuaire ('uid' par défaut. Si autre valeur, les groupes de l'utilisateur ne seront pas détectés)</variable>
        <variable name='eolesso_ldap_filter_user'>Sans élément de substitution, par exemple "objectClass=person".</variable>
        <variable name='eolesso_ldap_filter_group'>Sans élément de substitution, par exemple "objectClass=posixGroup".</variable>
        <variable name='eolesso_ldap_fill_displayname'>Attribut utilisé comme nom complet pour l'utilisateur</variable>
        <variable name='eolesso_ldap_fill_mail'>Attribut utilisé comme mail pour l'utilisateur</variable>
        <variable name='eolesso_ldap_fill_fonction'>Attribut utilisé comme fonction pour l'utilisateur</variable>
        <variable name='eolesso_ldap_fill_categorie'>Attribut utilisé comme catégorie pour l'utilisateur</variable>
        <variable name='eolesso_ldap_fill_rne'>Attribut utilisé comme rne pour l'utilisateur</variable>
        <variable name='eolesso_ldap_fill_fredurne'>Attribut utilisé comme fredurne pour l'utisateur</variable>
        <variable name='eolesso_ldap_fill_displaygroup'>Attribut utilisé comme nom du groupe de l'utilisateur</variable>
        <variable name='eolesso_ldap_apps_params'>Permet de configurer des paramètres supplémentaires pour chaque annuaire LDAP. Utilisé par les applications accédant directement aux annuaires (ex: ownCloud)</variable>
        <variable name='eolesso_ldap_login_otp'>Type d'identifiants OTP gérés pour les utilisateurs de cet annuaire. Inactifs : OTP non disponible; identiques : identifiant identique à l'identifiant LDAP; configurables : identifiant personnalisé renseigné par l'utilisateur à la première connexion en mode OTP</variable>
        <variable name='eolesso_otppass_minsize'>Taille minimum des mots de passe OTP (code PIN + clé)</variable>
        <variable name='eolesso_otppass_maxsize'>Taille maximum des mots de passe OTP (code PIN + clé)</variable>
        <variable name='eolesso_otppass_regx'>Expression régulière pour valider que le mot de passe saisi est de type OTP (vérifié quand la longueursaisie correspond au tailles min/max). Comprend le code PIN + la clé. Par défaut : chaîne de 12 caractères numériques.</variable>
        <variable name='eolesso_otp_desync'>Choix du mode de fonctionnement en cas de clé OTP désynchronisée (par ex. suite à plusieurs tentatives échouées).Si non, l'utilisateur est invité à débloquer la situation en allant sur une URL particulière. Si oui, EoleSSO va demander la saisie d'un deuxième mot de passe pour débloquer la situation</variable>
        <variable name='eolesso_otp_portal'>En cas de désynchronisation d'une clé OTP, l'utilisateur sera redirigé sur cette adresse pour débloquer la situation. Si vide, un message par défaut est affiché</variable>
        <variable name='eolesso_entity_name'>Nom d'entité du serveur EoleSSO local à indiquer dans les messages SAML (si rien, une valeur est calculée depuis le nom de l'académie et le nom de machine)</variable>
        <variable name='sso_saml_time_adjust'>Décalage en secondes appliqué aux dates dans les messages de fédération SAML. Permet d'éviter le rejet des messages lorsque le serveur partenaire n'est pas tout à fait synchrone (par défaut, on décale de 5 minutes dans le passé). Ce délai est aussi pris en compte pour la validation des messages reçus.</variable>
        <variable name='cas_verify_service'>Si ce paramètre est à oui, seules les applications renseignées dans les fichiers d'applications (/usr/share/sso/app_filters/*_apps.ini) sont autorisées à recevoir des réponses du serveur en mode CAS. Si il est à non, le filtre par défaut leur sera appliqué</variable>
        <variable name='eolesso_metrics'>Génère des statistiques d'usage du service sur l'URL /metrics</variable>
    </help>

</creole>
<!-- vim: ts=4 sw=4 expandtab
-->

