nomCookieSSO = $conteneur->getParametre('auth.nomCookieSSO'); //$this->urlServiceAnnuaire = $conteneur->getParametre('baseUrlServicesAnnuaireTpl'); $this->urlConnexionSite = $conteneur->getParametre('auth.baseUrlConnexionSite'); $this->lireCookieSSO(); } /** * Retourne l'adresse email de l'utilisateur actuellement identifié */ public function getCourriel() { return $this->courriel; } /** * Retourne true si l'utilisateur est en possession d'un cookie qui * l'identifie */ public function estIdentifie() { return $this->identifie; } /** * Retourne l'URL de connexion au SSO */ public function getUrlConnexion() { return $this->urlConnexionSite; } protected function lireCookieSSO() { if (isset($_COOKIE[$this->nomCookieSSO])) { $jeton = $_COOKIE[$this->nomCookieSSO]; // On ne valide pas le jeton car il vient directement du cookie // (supposé être sur HTTPS uniquement) $jetonDecode = $this->decoderJeton($jeton); //var_dump($jetonDecode); echo "

"; if ($jetonDecode && ! empty($jetonDecode['sub'])) { $this->courriel = $jetonDecode['sub']; $this->identifie = true; } } } /** * Décode un jeton SSO et retourne son contenu */ protected function decoderJeton($jeton) { $parts = explode('.', $jeton); $payload = $parts[1]; $payload = $this->urlsafeB64Decode($payload); $payload = json_decode($payload, true); return $payload; } /** * Décode le base64 de manière "urlsafe" (copié de la lib JWT) */ protected function urlsafeB64Decode($input) { $remainder = strlen($input) % 4; if ($remainder) { $padlen = 4 - $remainder; $input .= str_repeat('=', $padlen); } return base64_decode(strtr($input, '-_', '+/')); } }