diff --git a/authentication.php b/authentication.php index 66be594..dfc7beb 100644 --- a/authentication.php +++ b/authentication.php @@ -44,22 +44,6 @@ class authentication /** The authentication methods. Can be ldap, sympa...*/ public $authMethods = array (); - /** Add the server key used to create the JSON Web Token. - * Without it, the JWT is not added to the valid authentication page - */ - public $jwtServerKey = null; - - /** The name of the JSON Web Token set in localStorage of the client browser - * if the authentication is valid. Will be used later by JS on client with - * Bearer authentication for REST API. - */ - public $jwtName = "DFKJWT"; - - /** The JST Algorithm used to sign the JWT - * Allowed algorithms : HS256, HS512, HS384 - */ - public $jwtAlgorithm = "HS256"; - /** The authentication servers configuration * array ("authXXXX" => array ( * array ("ldapserver" => "ldaps://server.domain.fr", @@ -132,12 +116,15 @@ class authentication "Logout for '".$param["email"]."'"); $authsession->logout (); unset ($_SESSION["domframework"]["authentication"]); - if ($this->jwtServerKey !== null) + if (isset ($this->authServers["authjwt"]["serverKey"])) { + $tokenName = "DFKJWT"; + if (isset ($this->authServers["authjwt"]["tokenName"])) + $tokenName = $this->authServers["authjwt"]["tokenName"]; // Unset the JSON Web Token as the authentication if ($this->route->debug) - echo "Unset the JSON Web Token '$this->jwtName'
\n"; - echo "\n"; + echo "Unset the JSON Web Token '$tokenName'
\n"; + echo "\n"; } if ($this->debug) echo "Redirect to authentication page"; if ($this->debug) $this->route->debug = $this->debug; @@ -252,11 +239,14 @@ class authentication $session = new authsession (); $session->savedata ($authparams->email, $authparams->password, $res["lastname"], $res["firstname"]); - if ($this->jwtServerKey !== null) + if (isset ($this->authServers["authjwt"]["serverKey"])) { // Set the JSON Web Token as the authentication is valid + $tokenName = "DFKJWT"; + if (isset ($this->authServers["authjwt"]["tokenName"])) + $tokenName = $this->authServers["authjwt"]["tokenName"]; $token = $this->createJwtToken ($authparams->email); - echo "\n"; } if ($url === "") @@ -301,15 +291,19 @@ class authentication public function createJwtToken ($email) // {{{ { - if ($this->jwtServerKey !== null) + if (isset ($this->authServers["authjwt"]["serverKey"])) { // Set the JSON Web Token as the authentication is valid require_once ("domframework/jwt.php"); + $algorithm = "HS256"; + if (isset ($this->authServers["authjwt"]["algorithm"])) + $algorithm = $this->authServers["authjwt"]["algorithm"]; $payloadArray = array(); $payloadArray["email"] = $email; $jwt = new jwt (); - $token = $jwt->encode ($payloadArray, $this->jwtServerKey, - $this->jwtAlgorithm); + $token = $jwt->encode ($payloadArray, + $this->authServers["authjwt"]["serverKey"], + $algorithm); return $token; } } @@ -379,6 +373,7 @@ class authentication echo "verifAuth : using auth cache (push in debug=2 to skip)\n"; return $_SESSION["domframework"]["authentication"]["authcache"]; } + $authServers = $this->authServers; foreach ($this->authMethods as $method) { @@ -388,23 +383,23 @@ class authentication throw new \Exception ("The authentication method is not a string", 500); $classname = "auth$method"; require_once ("domframework/$classname.php"); - if (! array_key_exists ($classname, $this->authServers)) + if (! array_key_exists ($classname, $authServers)) throw new \Exception ("No authentication server '$classname' enabled", 500); // If only one server is defined, the parameters can directely be pushed // to the classname - if (! is_array (reset ($this->authServers[$classname]))) + if (! is_array (reset ($authServers[$classname]))) { - $this->authServers[$classname] = array ($this->authServers[$classname]); + $authServers[$classname] = array ($authServers[$classname]); } if ($this->debug >= 2) echo "Authentication method=$method : authServers=". - var_export ($this->authServers[$classname])."\n"; - if (! is_array ($this->authServers[$classname]) || - count ($this->authServers[$classname]) === 0) + var_export ($authServers[$classname])."\n"; + if (! is_array ($authServers[$classname]) || + count ($authServers[$classname]) === 0) throw new \Exception ("No authentication server defined for method ". "'$method'", 500); - foreach ($this->authServers[$classname] as $key=>$serversParam) + foreach ($authServers[$classname] as $key=>$serversParam) { if ($this->debug) echo "Test auth server $method # $classname # $key\n";