Commit e1202132 authored by Bertrand Gauthier's avatar Bertrand Gauthier
Browse files

Nouvelle clé de config obligatoire pour l'authentification Shibboleth :...

Nouvelle clé de config obligatoire pour l'authentification Shibboleth : unicaen-auth.shibboleth.logout_url
parent c27761cb
......@@ -28,6 +28,22 @@ $settings = [
'enabled' => true,
],
/**
* Configuration de l'authentification Shibboleth.
*/
'shibboleth' => [
/**
* Affichage ou non du formulaire d'authentification via l'annuaire LDAP.
* NB: en réalité cela permet aussi l'authentification avec un compte local.
*/
'enable' => false,
/**
* URL de déconnexion.
*/
'logout_url' => '/Shibboleth.sso/Logout?return=', // NB: '?return=' semble obligatoire!
],
/**
* Flag indiquant si l'utilisateur authenitifié avec succès via l'annuaire LDAP doit
* être enregistré/mis à jour dans la table des utilisateurs de l'appli.
......
......@@ -2,6 +2,9 @@
namespace UnicaenAuth\Options;
use Assert\Assertion;
use Assert\AssertionFailedException;
use UnicaenApp\Exception\RuntimeException;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;
......@@ -24,6 +27,42 @@ class ModuleOptionsFactory implements FactoryInterface
$moduleConfig = isset($config['unicaen-auth']) ? $config['unicaen-auth'] : [];
$moduleConfig = array_merge($config['zfcuser'], $moduleConfig);
$this->validateConfig($moduleConfig);
return new ModuleOptions($moduleConfig);
}
/**
* @param array $config
*/
private function validateConfig(array $config)
{
$configKeyPath = ['unicaen-auth'];
//
// Config shibboleth.
//
$parentKey = 'shibboleth';
if (array_key_exists($parentKey, $config)) {
$shibConfig = $config[$parentKey];
$configKeyPath[] = $parentKey;
try {
Assertion::keyExists($shibConfig, $k = 'logout_url');
} catch (AssertionFailedException $e) {
throw new RuntimeException(sprintf(
"La clé de configuration '%s.$k' est absente (inspirez-vous du fichier de config " .
"unicaen-auth.global.php.dist du module unicaen/auth si besoin)",
join('.', $configKeyPath)
));
}
array_pop($configKeyPath);
}
//
// Autres.
//
}
}
\ No newline at end of file
......@@ -434,13 +434,13 @@ EOS;
return '/';
}
$logoutRelativeUrl = '/Shibboleth.sso/Logout?return='; // NB: '?return=' semble obligatoire!
$logoutUrl = $this->shibbolethConfig['logout_url'];
if ($returnAbsoluteUrl) {
$logoutRelativeUrl .= urlencode($returnAbsoluteUrl);
$logoutUrl .= urlencode($returnAbsoluteUrl);
}
return $logoutRelativeUrl;
return $logoutUrl;
}
/**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment