78,7 → 78,7 |
$uri . "rafraichir", |
$uri . "refresh" |
), |
"description" => "confirme l'authentification et la session; rafraîchit le jeton fourni (dans le cookie " . $this->nomCookie . " ou en paramètre)" |
"description" => "confirme l'authentification et la session; rafraîchit le jeton fourni (dans le cookie " . $this->nomCookie . ", le header Authorization ou en paramètre)" |
), |
'verifierjeton' => array( |
"uri" => $uri . "verifierjeton", |
86,7 → 86,7 |
"token" => "jeton JWT", |
), |
"alias" => $uri . "verifytoken", |
"description" => "retourne true si le jeton fourni en paramètre est valide, une erreur sinon" |
"description" => "retourne true si le jeton fourni en paramètre ou dans le header Authorization est valide, une erreur sinon" |
) |
) |
); |
241,11 → 241,11 |
* header HTTP "Authorization" ou jeton valide); renvoie une erreur si le cookie |
* et/ou le jeton sont expirés; |
* cela permet en théorie de forger des cookies avec des jetons expirés pour se les |
* faire rafraîchir franduleusement, mais le canal HTTPS fait qu'un client ne peut |
* faire rafraîchir frauduleusement, mais le canal HTTPS fait qu'un client ne peut |
* être en possession que de ses propres jetons... au pire on peut se faire prolonger |
* à l'infini même si on n'est plus inscrit à l'annuaire... @TODO faire mieux un jour |
* Priorité : cookie > headers > paramètre "token" @TODO vérifier cette stratégie, l'inverse |
* est peut-être plus malin |
* Priorité : cookie > header "Authorization" > paramètre "token" @TODO vérifier cette |
* stratégie, l'inverse est peut-être plus malin |
*/ |
protected function identite() { |
$cookieAvecJetonValide = false; |
304,15 → 304,16 |
|
/** |
* Vérifie si un jeton est valide; retourne true si oui, une erreur avec |
* des détails si non |
* des détails si non; |
* Priorité : header "Authorization" > paramètre "token" |
*/ |
protected function verifierJeton() { |
// vérifie que le jeton provient bien d'ici, |
// et qu'il est encore valide (date) |
$jwt = $this->getParam('token'); |
if ($jwt == '') { |
$jwt = $this->lireJetonDansHeader(); |
if ($jwt == null) { |
$jwt = $this->lireJetonDansHeader(); |
if ($jwt == null) { |
$jwt = $this->getParam('token'); |
if ($jwt == '') { |
$this->erreur("parameter <token> or Authorization header required"); |
} |
} |
323,7 → 324,6 |
$this->erreur($e->getMessage()); |
exit; |
} |
//print_r($jeton); |
$this->envoyerJson(true); |
} |
|