17.9.3 Paramétrage Authenticator et Provider

L'Authenticator et les Provider utilisés sont paramétrés dans le fichier config/local-dbaccess.php.

Le fichier config/local-dbaccess.php permet de surcharger le fichier de configuration config/dbaccess.php livré par défaut par dynacase.

Exemple de fichier config/dbaccess.php livré par dynacase :

<?php
 
$pgservice_core = "dynacase";
$pgservice_freedom = "dynacase";
$freedom_context = "default";
$dbpsql = $pgservice_core;
$useIndexAsGuest = false;
 
/*
 * Authentication mode : apache / basic / html / open
 * --------------------------------------------------
 */
 
$freedom_authtype = 'html';
 
$freedom_authtypeparams = array(
    'html' => array(
        'cookie' => 'freedom_auth',
        'auth' => array(
            'app' => 'AUTHENT',
            'action' => 'LOGINFORM',
            'args' => ''
        ) ,
        'username' => 'auth_user',
        'password' => 'auth_pass',
    ) ,
    'open' => array() ,
    'basic' => array(
        'realm' => 'freedom',
    ) ,
);
 
/*
 * Providers : how username / password tuple is validated
 * ------------------------------------------------------
 */
 
$freedom_authprovider = 'freedom';
 
$freedom_providers = array(
    'freedom' => array(
        'connection' => 'service=' . $pgservice_core,
    ) ,
    'file' => array(
        'authfile' => '@prefix@/.freedompwd',
    ) ,
);
 
/*
 * Include local/override config
 * -----------------------------
 */
$local_dbaccess = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'local-dbaccess.php';
if (file_exists($local_dbaccess)) {
    include ($local_dbaccess);
}

Exemple de fichier config/local-dbaccess.php pour la surcharge du paramétrage :

<?php
 
$freedom_authprovider = 'freedom,freedomNu';
 
$freedom_providers['freedomNu'] = array(
    'allowAutoFreedomUserCreation' => 'no',
    'fix_euro' => 'no',
    'convert_to_utf8' => 'no',
    'options' => array(
        LDAP_OPT_REFERRALS => 0
    )
);

Les éléments de configuration utilisables dans ce fichier sont :

$freedom_authtype

L'authenticator.

Il permet de spécifier quel authenticator est utilisé pour demander les informations de connexion à l'utilisateur (login / password la plupart du temps) et lui transmettre le résultat de l'authentification.

Les différents authenticator disponibles par défaut sont :

html

Ce mode fournit une interface HTML pour la saisie des informations de connexion (login + mot de passe), et une session par cookie est ouverte afin de valider les accès ultérieurs.

C'est l'Authenticator utilisé par défaut.

apache

Ce mode spécifie que toute la mécanique d'authentification est déléguée à Apache. Dynacase ne s'occupe pas d'authentifier les utilisateurs, et Apache lui fournit les utilisateurs qui viennent de se connecter via la variable PHP $_SERVER['PHP_AUTH_USER'].

Dans ce mode, le paramètre $freedom_authprovider n'est pas utilisé.

basic

Ce mode fournit une authentification HTTP Basic.

Dans ce mode, dynacase gère lui même l'authentification au format HTTP Basic, et l'utilisateur rentre son login et son mot de passe dans la boite de dialogue native affichée par le navigateur.

open

Ce mode fournit une interface basée sur la validation de jetons (voir détails Authentification par jetons).

Ce mode ne présente pas d'interface pour la saisie du login et du mot de passe, mais se base sur un jeton présent dans l'URI.

Dans ce mode, le paramètre $freedom_authprovider n'est pas utilisé.

$freedom_authprovider

Ce paramètre spécifie le ou les Provider (séparés, le cas échéant, par des ,) à utiliser pour valider les logins et mots de passe.

Par défaut, dynacase fournit les Provider suivants :

freedom

Ce Provider implémente la validation du login et du mot de passe sur la base locale des utilisateurs de dynacase.

C'est le Provider utilisé par défaut.

17.9.3.1 Configuration des Authenticators

Chaque Authenticator peut avoir des paramètres pour définir son fonctionnement.

Les paramètres des Authenticator sont spécifiés dans la variable $freedom_authtypeparams.

html

L'Authenticator html dispose des paramètres suivants :

auth

un tableau définissant l'application et l'action (au sens dynacase) utilisées pour gérer la demande des informations de connexion (formulaire HTML) et la soumission/validation de ces informations.
Ce tableau est composé des clés :

app
L'application
action
l'action
args
les arguments
cookie
le nom du cookie de la session d'authentification ;
username
Le nom du champ dans lequel est envoyé le login ;
password
Le nom du champ dans lequel est envoyé le mot de passe.

Configuration par défaut :

<?php
 
$freedom_authtypeparams['html'] = array(
    'cookie' => 'freedom_auth',
    'auth' => array(
        'app' => 'AUTHENT',
        'action' => 'LOGINFORM',
        'args' => ''
    ) ,
    'username' => 'auth_user',
    'password' => 'auth_pass',
);
apache
L'Authenticator apache ne possède pas de paramètres.
basic

L'Authenticator basic dispose des paramètres suivants :

realm
le REALM de connexion pour l'authentification HTTP Basic.

Configuration par défaut :

<?php
 
$freedom_authtypeparams['basic'] = array(
    'realm' => 'freedom'
);
open
L'Authenticator open ne possède pas de paramètres.

17.9.3.2 Configuration des Providers

Chaque Provider peut avoir des paramètres pour définir son fonctionnement.

freedom

Le provider freedom dispose des paramètres suivants :

connection
la chaîne de connexion à la base de donnée PostgreSQL.

Configuration par défaut :

<?php
 
$freedom_providers['freedom'] = array(
    'connection' => 'service=' . $pgservice_core
);

17.9.3.3 Sélection dynamique de l'authenticator

Il a été vu que l'authentification passe par un unique Authenticator, couplé à plusieurs Providers.

Dans certains cas il peut-être utile de pouvoir se connecter sur un même contexte dynacase via deux Authenticator différents. Cela passe alors par la définition dynamique de $freedom_authtype.

Par exemple dans le cas d'un contexte dynacase authentifié par CAS, il peut-être utile de pouvoir se connecter sur ce système sous le compte admin local (Master Default) sans devoir avoir un compte admin existant sur CAS.

Pour cela, on peut implémenter un « aiguillage » dans le fichier config/local-dbaccess.php afin de sélectionner le mode d'authentification en fonctions d'éléments de la requête (comme le champ Host: des requêtes HTTP).

Exemple de fichier config/local-dbaccess.php avec « aiguillage » par VirtualHost :

<?php
 
if( $_SERVER['HTTP_HOST'] == 'admin-ged.example.net' ) {
  return;
}
 
$freedom_authtype = 'cas';
 
$freedom_authtypeparams['cas'] = array(
    'cookie' => 'freedom_auth',
    'cas_version' => 'CAS_VERSION_2_0',
    'cas_server' => 'localhost',
    'cas_port' => 8443,
    'cas_uri' => '/cas-server-webapp-3.4'
    );
 
$freedom_authprovider = 'freedomNu';
 
$freedom_providers['freedomNu'] = array(
    'allowAutoFreedomUserCreation' => 'yes',
    'fix_euro' => 'no',
    'convert_to_utf8' => 'no'
    );

Dans cet exemple, si on se connecte sur l'URL http://admin-ged.example.net, alors c'est le mécanisme d'authentification défini par défaut dans le config/dbaccess.php qui sera appliqué, et dans le cas contraire, on appliquera l'authentification CAS.

De cette manière, les utilisateurs se connectent par CAS sur leur URL habituelle (ged.example.net par ex.), et l'administrateur local peut se connecter sur l'hôte admin-ged.example.net.

×