Line 45... |
Line 45... |
45 |
}
|
45 |
}
|
46 |
return $arrHttpHeaders;
|
46 |
return $arrHttpHeaders;
|
47 |
}
|
47 |
}
|
48 |
}
|
48 |
}
|
Line -... |
Line 49... |
- |
|
49 |
|
- |
|
50 |
// Attention bien v�rifier la pr�sence des variables suivantes :
|
- |
|
51 |
// IDEN_UTILISE_SSO, IDEN_URL_SSO, IDEN_COOKIE_SSO, IDEN_SSO_SYNC
|
49 |
|
52 |
// dans le fichier iden_config.inc.php
|
- |
|
53 |
class identificationSso {
|
- |
|
54 |
/**
|
- |
|
55 |
* si la valeur est vraiment vide, le cookie n'est pas posé, alors on met
|
- |
|
56 |
* une valeur vide pas vide :)
|
- |
|
57 |
*/
|
- |
|
58 |
public static $VALEUR_JETON_VIDE = "jeton-vide";
|
- |
|
59 |
|
- |
|
60 |
protected $cookie_mandataire = "";
|
- |
|
61 |
/** le cookie qui dure jusqu'à Vladivostok, si synchro partielle seulement */
|
- |
|
62 |
protected $duree_cookie_mandataire = (3600 * 24 * 365);
|
- |
|
63 |
|
- |
|
64 |
/**
|
- |
|
65 |
* lorsqu'appelé par un client non-navigateur (qui n'envoie et ne reçoit pas
|
- |
|
66 |
* de cookies), permet de ne pas rediriger en boucle, en fournissant le
|
- |
|
67 |
* paramètre GET "non_interactif"
|
- |
|
68 |
*/
|
- |
|
69 |
protected $mode_non_interactif = false;
|
- |
|
70 |
|
- |
|
71 |
/** voir IDEN_SSO_SYNC dans iden_config.inc.php */
|
- |
|
72 |
protected $synchro_complete;
|
- |
|
73 |
|
- |
|
74 |
protected $annuaire_url = '';
|
- |
|
75 |
protected $bdd_annuaire = '';
|
- |
|
76 |
protected $table_annuaire = '';
|
- |
|
77 |
protected $champ_login = '';
|
Line 50... |
Line -... |
50 |
class identificationSso {
|
- |
|
51 |
|
- |
|
52 |
// Attention bien v�rifier la pr�sence des variables suivantes :
|
- |
|
53 |
// IDEN_UTILISE_SSO, IDEN_URL_SSO, IDEN_HEADER_SSO, IDEN_COOKIE_SSO
|
- |
|
54 |
// dans le fichier iden_config.inc.php
|
- |
|
55 |
private $cookie_tentative_identification = "";
|
- |
|
56 |
/** Une tentative par minute pour s'identifier suffit largement */
|
- |
|
57 |
private $delai_tentative_identification = 60;
|
- |
|
58 |
|
- |
|
59 |
private $auth_header = 'Authorization';
|
- |
|
60 |
|
- |
|
61 |
private $annuaire_url = '';
|
- |
|
62 |
|
- |
|
63 |
private $bdd_annuaire = '';
|
- |
|
64 |
private $table_annuaire = '';
|
- |
|
65 |
private $champ_login = '';
|
- |
|
66 |
private $champ_mdp = '';
|
78 |
protected $champ_mdp = '';
|
Line 67... |
Line 79... |
67 |
|
79 |
|
68 |
private $communs_papyrus = null;
|
80 |
protected $communs_papyrus = null;
|
Line 69... |
Line 81... |
69 |
|
81 |
|
70 |
public function __construct() {
|
82 |
public function __construct() {
|
71 |
$this->communs_papyrus = $GLOBALS['_GEN_commun'];
|
83 |
$this->communs_papyrus = $GLOBALS['_GEN_commun'];
|
- |
|
84 |
|
- |
|
85 |
$this->cookie_mandataire = IDEN_COOKIE_SSO;
|
- |
|
86 |
$this->auth_header = IDEN_HEADER_SSO;
|
- |
|
87 |
$this->annuaire_url = IDEN_URL_SSO;
|
- |
|
88 |
$this->synchro_complete = IDEN_SSO_SYNC;
|
- |
|
89 |
|
- |
|
90 |
// gestion des clients qui ne gèrent pas les cookies (file_get_contents...)
|
- |
|
91 |
if (isset($_GET['non_interactif'])) {
|
- |
|
92 |
$this->mode_non_interactif = true;
|
- |
|
93 |
}
|
- |
|
94 |
|
- |
|
95 |
// si on est en mode synchro complète, on vérifie périodiquement l'état
|
Line 72... |
Line 96... |
72 |
|
96 |
// du SSO, en utilisant un cookie qui ne dure pas jusqu'à Vladivostok
|
73 |
$this->cookie_tentative_identification = IDEN_COOKIE_SSO;
|
97 |
if ($this->synchro_complete === true) {
|
74 |
$this->auth_header = IDEN_HEADER_SSO;
|
98 |
$this->duree_cookie_mandataire = 60; // une fois par minute (ça ou autre chose)
|
75 |
$this->annuaire_url = IDEN_URL_SSO;
|
99 |
}
|
Line 83... |
Line 107... |
83 |
$this->table_annuaire = $this->communs_papyrus['info_auth_bdd']->gsab_nom_table;
|
107 |
$this->table_annuaire = $this->communs_papyrus['info_auth_bdd']->gsab_nom_table;
|
84 |
$this->champ_login = $this->communs_papyrus['info_auth_bdd']->gsab_nom_champ_login;
|
108 |
$this->champ_login = $this->communs_papyrus['info_auth_bdd']->gsab_nom_champ_login;
|
85 |
$this->champ_mdp = $this->communs_papyrus['info_auth_bdd']->gsab_nom_champ_mdp;
|
109 |
$this->champ_mdp = $this->communs_papyrus['info_auth_bdd']->gsab_nom_champ_mdp;
|
86 |
}
|
110 |
}
|
Line 87... |
Line -... |
87 |
|
- |
|
88 |
function getToken() {
|
- |
|
89 |
// Premier essai, dans le header
|
- |
|
90 |
$headers = @apache_request_headers();
|
- |
|
91 |
$token = !empty($headers['Authorization']) ? $headers['Authorization'] : null;
|
- |
|
92 |
// Eventuellement, le jeton a pu �tre pass� dans un header non standard, comme dans
|
- |
|
93 |
// le cas o� le header Authorization est supprim� par le mod cgi d'apache
|
- |
|
94 |
// Dans ce cas l� on v�rifie aussi dans un header alternatif si celui ci a �t� renseign�
|
- |
|
95 |
if($token == null && $this->auth_header != 'Authorization') {
|
- |
|
96 |
$token = !empty($headers[$this->auth_header]) ? $headers[$this->auth_header] : null;
|
- |
|
97 |
}
|
- |
|
98 |
|
- |
|
99 |
// Sinon dans $_REQUEST ?
|
- |
|
100 |
if($token == null) {
|
- |
|
101 |
$token = !empty($_REQUEST['Authorization']) ? $_REQUEST['Authorization'] : null;
|
- |
|
102 |
}
|
- |
|
103 |
|
- |
|
104 |
// Sinon dans $_COOKIE ?
|
- |
|
105 |
if($token == null) {
|
- |
|
106 |
$token = !empty($_COOKIE['tb_auth']) ? $_COOKIE['tb_auth'] : null;
|
- |
|
107 |
}
|
- |
|
108 |
|
- |
|
109 |
return $token;
|
- |
|
110 |
}
|
- |
|
111 |
|
- |
|
112 |
public function decoderToken($token) {
|
- |
|
113 |
$token_parts = explode('.', $token);
|
- |
|
114 |
return json_decode(base64_decode($token_parts[1]), true);
|
- |
|
115 |
}
|
- |
|
116 |
|
111 |
|
117 |
// http://stackoverflow.com/questions/1251582/beautiful-way-to-remove-get-variables-with-php?lq=1
|
112 |
// http://stackoverflow.com/questions/1251582/beautiful-way-to-remove-get-variables-with-php?lq=1
|
118 |
function supprimerUrlVar($url, $var) {
|
113 |
protected function supprimerUrlVar($url, $var) {
|
119 |
return rtrim(preg_replace('/([?&])'.$var.'=[^&]+(&|$)/','$1',$url), '&?');
|
114 |
return rtrim(preg_replace('/([?&])'.$var.'=[^&]*(&|$)/','$1',$url), '&?');
|
120 |
}
|
115 |
}
|
- |
|
116 |
|
- |
|
117 |
/**
|
- |
|
118 |
* Se connecte au SSO : redirige vers le service d'authentification, qui pose
|
- |
|
119 |
* le cookie tb_auth, puis re-redirige vers Papyrus avec le jeton en GET, puis
|
- |
|
120 |
* Papyrus stocke ce jeton dans son cookie mandataire, puis se re-redirige
|
- |
|
121 |
* vers lui-même pour éliminer le paramètre GET de l'URL (ouf !)
|
121 |
|
122 |
*/
|
- |
|
123 |
public function connecterEtRediriger() {
|
- |
|
124 |
//echo "JE CONNECTE<br/>";
|
122 |
function connecterEtRediriger() {
|
125 |
// sauvegarde de l'URL courante
|
123 |
$url_redirect = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
|
126 |
$url_redirect = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
|
124 |
$params = 'login='.$_POST['username'].'&password='.$_POST['password'].'&redirect_url='.urlencode($url_redirect);
|
127 |
$params = 'login='.$_POST['username'].'&password='.$_POST['password'].'&redirect_url='.urlencode($url_redirect);
|
125 |
$connexion_url = $this->annuaire_url."connexion?".$params;
|
- |
|
- |
|
128 |
$connexion_url = $this->annuaire_url."connexion?".$params;
|
- |
|
129 |
// redirection vers l'annuaire, qui va nous connecter au SSO et nous
|
126 |
|
130 |
// renvoyer un jeton en GET
|
127 |
header('Location: '.$connexion_url);
|
131 |
header('Location: '.$connexion_url);
|
128 |
exit;
|
132 |
exit;
|
129 |
}
|
133 |
}
|
- |
|
134 |
|
- |
|
135 |
/**
|
- |
|
136 |
* Se déconnecte du SSO : redirige vers le service d'authentification, qui
|
- |
|
137 |
* supprime le cookie tb_auth, puis re-redirige vers Papyrus avec un jeton
|
- |
|
138 |
* vide en GET; Papyrus stocke ce jeton vide dans son cookie mandataire,
|
- |
|
139 |
* puis se re-redirige vers lui-même pour éliminer le paramètre GET de l'URL
|
130 |
|
140 |
*/
|
- |
|
141 |
public function deconnecterEtRediriger() {
|
- |
|
142 |
//echo "JE DECONNECTE<br/>";
|
131 |
function deconnecterEtRediriger() {
|
143 |
// sauvegarde de l'URL courante
|
132 |
$url_redirect = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
|
144 |
$url_redirect = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
|
133 |
$url_redirect = $this->supprimerUrlVar($url_redirect, 'logout');
|
- |
|
134 |
|
145 |
$url_redirect = $this->supprimerUrlVar($url_redirect, 'logout');
|
135 |
$deconnexion_url = $this->annuaire_url."deconnexion?".'redirect_url='.urlencode($url_redirect);
|
- |
|
- |
|
146 |
$deconnexion_url = $this->annuaire_url."deconnexion?".'redirect_url='.urlencode($url_redirect);
|
- |
|
147 |
// redirection vers l'annuaire, qui va nous déconnecter du SSO et nous
|
136 |
|
148 |
// renvoyer un jeton vide en GET
|
137 |
header('Location: '.$deconnexion_url);
|
149 |
header('Location: '.$deconnexion_url);
|
138 |
exit;
|
150 |
exit;
|
Line -... |
Line 151... |
- |
|
151 |
}
|
- |
|
152 |
|
- |
|
153 |
protected function synchroniserDepuisEtatSso() {
|
- |
|
154 |
//echo "JE SYNCHRONISE<br/>";
|
- |
|
155 |
// sauvegarde de l'URL courante
|
- |
|
156 |
$url_redirect = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
|
- |
|
157 |
$params = 'redirect_url='.urlencode($url_redirect);
|
- |
|
158 |
$identite_url = $this->annuaire_url."identite?".$params;
|
- |
|
159 |
// redirection vers l'annuaire, qui va nous donner l'état du SSO et nous
|
- |
|
160 |
// renvoyer un jeton en GET
|
- |
|
161 |
header('Location: '.$identite_url);
|
- |
|
162 |
exit;
|
- |
|
163 |
}
|
- |
|
164 |
|
- |
|
165 |
/**
|
139 |
}
|
166 |
* Appelée à chaque chargement de page
|
140 |
|
167 |
*/
|
141 |
function verifierIdentiteEtRediriger() {
|
168 |
public function verifierIdentiteEtRediriger() {
|
142 |
// si on fait autre chose qu'un GET, on ne vérifie pas l'identité, car
|
169 |
// si on fait autre chose qu'un GET, on ne vérifie pas l'identité, car
|
143 |
// cela conduirait à une redirection en GET (avec le jeton), qui
|
170 |
// cela conduirait à une redirection en GET (avec le jeton), qui
|
144 |
// supprimerait les données du corps de la requête
|
- |
|
145 |
if ($_SERVER['REQUEST_METHOD'] == "GET") {
|
- |
|
146 |
if(empty($_COOKIE['sso_tentative_identification'])) {
|
- |
|
Line 147... |
Line 171... |
147 |
|
171 |
// supprimerait les données du corps de la requête
|
- |
|
172 |
if ($_SERVER['REQUEST_METHOD'] == "GET") {
|
148 |
if($this->communs_papyrus['pear_auth']->getAuth()) {
|
173 |
|
149 |
|
174 |
// lecture jeton en GET si on vient de l'annuaire
|
150 |
$cookie_persistant_nom = session_name().'-memo';
|
175 |
if (isset($_GET['Authorization'])) {
|
151 |
$cookie_utilisateur_nom = session_name().'-utilisateur';
|
176 |
//echo "Re-Redirection pour éliminer le GET<br/>";
|
152 |
|
- |
|
153 |
// Si l'utilisateur est d�j� connect� par pear
|
177 |
|
154 |
// on fait tout de m�me une op�ration de logout
|
- |
|
155 |
// pour coordonner la d�connection depuis une autre application
|
- |
|
156 |
$this->communs_papyrus['pear_auth']->logout();
|
- |
|
157 |
// Destruction du cookie de session de Papyrus : est ce utile?
|
178 |
// création / mise à jour du cookie mandataire (le jeton peut être
|
158 |
setcookie(session_name(), session_id(), time()-3600, '/');
|
179 |
// vide en cas de déconnexion)
|
159 |
// Destruction du cookie de permanence de l'identitification de Papyrus
|
180 |
$jetonRecu = $_GET['Authorization'];
|
- |
|
181 |
if ($jetonRecu == '') {
|
- |
|
182 |
$jetonRecu = self::$VALEUR_JETON_VIDE;
|
- |
|
183 |
}
|
- |
|
184 |
$this->setCookieMandataire($jetonRecu);
|
Line -... |
Line 185... |
- |
|
185 |
//echo "JETON REÇU: " . $_GET['Authorization'];
|
160 |
setcookie($cookie_persistant_nom, '', time()-3600, '/');
|
186 |
//echo "JETON POSÉ: "; var_dump($jetonRecu);
|
161 |
setcookie($cookie_utilisateur_nom, '', time()-3600, '/');
|
187 |
//exit;
|
162 |
}
|
- |
|
163 |
|
188 |
|
164 |
$url_redirect = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
|
- |
|
165 |
$url = $this->annuaire_url."identite?redirect_url=".urlencode($url_redirect);
|
- |
|
166 |
|
189 |
// redirection pour éliminer le paramètre GET
|
167 |
// une tentative toutes les $this->delai_tentative_identification
|
- |
|
168 |
setcookie($this->cookie_tentative_identification, 1, time() + $this->delai_tentative_identification, '/');
|
190 |
$url_redirect = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
|
169 |
|
- |
|
170 |
header('Location: '.$url);
|
- |
|
171 |
|
- |
|
172 |
} else {
|
- |
|
173 |
$jeton = $this->getToken();
|
- |
|
174 |
|
- |
|
175 |
if($jeton != null) {
|
- |
|
176 |
// Verification du jeton aupres de l'annuaire
|
- |
|
177 |
$valide = $this->verifierToken($jeton);
|
- |
|
178 |
if ($valide === true) {
|
- |
|
179 |
$jeton_decode = $this->decoderToken($jeton);
|
- |
|
180 |
|
- |
|
181 |
// R�cup�ration du mot de passe pour remplir les infos de l'objet PEAR Auth
|
- |
|
182 |
$requete = 'SELECT '.$this->champ_mdp.' '.
|
- |
|
183 |
'FROM '.$this->bdd_annuaire.'.'.$this->table_annuaire.' '.
|
- |
|
184 |
'WHERE '.$this->champ_login.' = "'.$jeton_decode['sub'].'" ';
|
191 |
$url_redirect = $this->supprimerUrlVar($url_redirect, 'Authorization');
|
185 |
|
- |
|
186 |
// TODO: normalement �a n'est jamais le cas mais que fait t'on si l'utilisateur n'existe pas
|
- |
|
Line 187... |
Line 192... |
187 |
// dans notre base de donn�es ? (au pire il ne sera pas connect�)
|
192 |
//echo "URL Redirect: $url_redirect"; exit;
|
- |
|
193 |
header('Location: ' . $url_redirect);
|
- |
|
194 |
exit;
|
- |
|
195 |
}
|
- |
|
196 |
|
- |
|
197 |
// une fois qu'on a fait une connexion ou une déconnexion, on se base
|
188 |
|
198 |
// sur le cookie mandataire pour gérer l'identité dans Papyrus
|
- |
|
199 |
//var_dump($_COOKIE); echo "<br/>";
|
- |
|
200 |
// lecture cookie mandataire de Papyrus
|
- |
|
201 |
$jeton = null;
|
- |
|
202 |
$cookiePresent = false;
|
- |
|
203 |
if (isset($_COOKIE[$this->cookie_mandataire])) {
|
- |
|
204 |
$cookiePresent = true;
|
- |
|
205 |
$jeton = $_COOKIE[$this->cookie_mandataire];
|
- |
|
206 |
}
|
- |
|
207 |
//echo "Cookie Présent: "; var_dump($cookiePresent);
|
- |
|
208 |
//echo "JETON: "; var_dump($jeton); echo "<br/>";
|
- |
|
209 |
//exit;
|
- |
|
210 |
|
- |
|
211 |
// s'il y a un cookie, qu'il contienne un jeton valide ou vide
|
- |
|
212 |
if ($cookiePresent) {
|
- |
|
213 |
// s'il contient un jeton non-vide
|
- |
|
214 |
if ($jeton != self::$VALEUR_JETON_VIDE) {
|
- |
|
215 |
// reconnexion PEAR (l'utilisateur peut avoir changé)
|
- |
|
216 |
//echo "RECONNEXION!<br/>"; exit;
|
- |
|
217 |
$this->deconnexionPear();
|
- |
|
218 |
$this->connexionPear($jeton);
|
189 |
$this->communs_papyrus['pear_auth']->username = $jeton_decode['sub'];
|
219 |
|
- |
|
220 |
// prolonge le cookie de 30 secondes si on est connecté, pour
|
- |
|
221 |
// minimiser les synchros avec le SSO
|
- |
|
222 |
$this->setCookieMandataire($jeton, 30);
|
- |
|
223 |
|
- |
|
224 |
// si mode synchro partielle, le cookie mandataire dure logntemps,
|
- |
|
225 |
// on rafraîchit donc le jeton pour... euh... on sait jamais :-/
|
- |
|
226 |
if (! $this->synchro_complete) {
|
- |
|
227 |
// appel annuaire / identité avec jeton en GET
|
- |
|
228 |
$infosJson = $this->rafraichirJeton($jeton);
|
190 |
$this->communs_papyrus['pear_auth']->password = $this->communs_papyrus['pear_db']->getOne($requete);
|
229 |
$infos = json_decode($infosJson, true);
|
- |
|
230 |
//echo "INFOS: "; var_dump($infos); echo "<br/>";
|
- |
|
231 |
$jetonRafraichi = null;
|
- |
|
232 |
if (isset($infos['token'])) {
|
- |
|
233 |
$jetonRafraichi = $infos['token'];
|
- |
|
234 |
}
|
- |
|
235 |
//echo "JETON Rafraîchi: "; var_dump($jetonRafraichi); echo "<br/>";
|
- |
|
236 |
//exit;
|
- |
|
237 |
// si jeton rafraîchi reçu
|
- |
|
238 |
if ($jetonRafraichi != null) {
|
- |
|
239 |
// màj cookie avec jeton rafraîchi
|
- |
|
240 |
$this->setCookieMandataire($jetonRafraichi);
|
191 |
|
241 |
// reconnexion PEAR (l'utilisateur peut avoir changé)
|
- |
|
242 |
$this->deconnexionPear();
|
192 |
// Le mot de passe est d�j� crypt� dans la bdd donc il faut indiquer � pear de ne pas le re crytper
|
243 |
$this->connexionPear($jetonRafraichi);
|
- |
|
244 |
//exit;
|
- |
|
245 |
} else {
|
193 |
if (isset($this->communs_papyrus['pear_auth']->storage_options)) {
|
246 |
// sinon (non connecté ou problème annuaire / jeton)
|
194 |
$this->communs_papyrus['pear_auth']->storage_options['cryptType'] = 'none';
|
247 |
// écriture cookie avec jeton vide
|
- |
|
248 |
$this->setCookieMandataire(self::$VALEUR_JETON_VIDE);
|
- |
|
249 |
// déconnexion PEAR
|
- |
|
250 |
$this->deconnexionPear();
|
- |
|
251 |
}
|
- |
|
252 |
}
|
- |
|
253 |
} else {
|
- |
|
254 |
// déconnexion PEAR ?
|
- |
|
255 |
$this->deconnexionPear();
|
- |
|
256 |
}
|
- |
|
257 |
} else { // sinon (aucun cookie mandataire)
|
195 |
}
|
258 |
// en mode synchro complète, on vérifie chaque minute (lorsque le
|
196 |
if (isset($this->communs_papyrus['pear_auth']->storage->options)) {
|
259 |
// cookie mandataire n'est plus présent) si on n'est pas connecté
|
197 |
$this->communs_papyrus['pear_auth']->storage->options['cryptType'] = 'none';
|
260 |
// sur le SSO, sauf si on est en mode non interactif
|
198 |
}
|
261 |
if ($this->synchro_complete && (! $this->mode_non_interactif)) {
|
Line -... |
Line 262... |
- |
|
262 |
$this->synchroniserDepuisEtatSso();
|
- |
|
263 |
}
|
- |
|
264 |
}
|
- |
|
265 |
}
|
- |
|
266 |
}
|
- |
|
267 |
|
- |
|
268 |
protected function setCookieMandataire($valeur, $duree=null) {
|
199 |
}
|
269 |
if ($duree === null) {
|
200 |
}
|
270 |
$duree = $this->duree_cookie_mandataire;
|
201 |
}
|
271 |
}
|
202 |
}
|
272 |
setcookie($this->cookie_mandataire, $valeur, time() + $duree);
|
203 |
}
|
273 |
}
|
- |
|
274 |
|
- |
|
275 |
/**
|
204 |
|
276 |
* Connecte l'utilisateur à Papyrus avec le système traditionnel fourni par PEAR
|
- |
|
277 |
*/
|
- |
|
278 |
protected function connexionPear($jeton) {
|
- |
|
279 |
$jeton_decode = $this->decoderToken($jeton);
|
- |
|
280 |
|
- |
|
281 |
// R�cup�ration du mot de passe pour remplir les infos de l'objet PEAR Auth
|
- |
|
282 |
$requete = 'SELECT '.$this->champ_mdp.' '.
|
- |
|
283 |
'FROM '.$this->bdd_annuaire.'.'.$this->table_annuaire.' '.
|
- |
|
284 |
'WHERE '.$this->champ_login.' = "'.$jeton_decode['sub'].'" ';
|
- |
|
285 |
|
- |
|
286 |
// TODO: normalement �a n'est jamais le cas mais que fait t'on si l'utilisateur n'existe pas
|
- |
|
287 |
// dans notre base de donn�es ? (au pire il ne sera pas connect�)
|
- |
|
288 |
$this->communs_papyrus['pear_auth']->username = $jeton_decode['sub'];
|
- |
|
289 |
$this->communs_papyrus['pear_auth']->password = $this->communs_papyrus['pear_db']->getOne($requete);
|
- |
|
290 |
|
- |
|
291 |
// Le mot de passe est d�j� crypt� dans la bdd donc il faut indiquer � pear de ne pas le re crytper
|
- |
|
292 |
if (isset($this->communs_papyrus['pear_auth']->storage_options)) {
|
- |
|
293 |
$this->communs_papyrus['pear_auth']->storage_options['cryptType'] = 'none';
|
- |
|
294 |
}
|
- |
|
295 |
if (isset($this->communs_papyrus['pear_auth']->storage->options)) {
|
Line -... |
Line 296... |
- |
|
296 |
$this->communs_papyrus['pear_auth']->storage->options['cryptType'] = 'none';
|
- |
|
297 |
}
|
205 |
/**
|
298 |
|
- |
|
299 |
// si on fait pas ça, ça marche pas (régénération de session apparemment)
|
206 |
* Vérifie un jeton auprès de l'annuaire
|
300 |
//$this->communs_papyrus['pear_auth']->setAuth($jeton_decode['sub']);
|
- |
|
301 |
}
|
Line -... |
Line 302... |
- |
|
302 |
|
- |
|
303 |
/**
|
- |
|
304 |
* Supprime tout ce qui a trait à PEAR afin de déconnecter l'utilisateur du
|
- |
|
305 |
* système d'authentification traditionnel de Papyrus
|
- |
|
306 |
*/
|
- |
|
307 |
protected function deconnexionPear() {
|
- |
|
308 |
$this->communs_papyrus['pear_auth']->logout();
|
- |
|
309 |
|
- |
|
310 |
$cookie_persistant_nom = session_name().'-memo';
|
- |
|
311 |
$cookie_utilisateur_nom = session_name().'-utilisateur';
|
- |
|
312 |
// Destruction du cookie de session de Papyrus : est ce utile?
|
- |
|
313 |
setcookie(session_name(), session_id(), time()-3600, '/');
|
- |
|
314 |
// Destruction du cookie de permanence de l'identitification de Papyrus
|
- |
|
315 |
setcookie($cookie_persistant_nom, '', time()-3600, '/');
|
- |
|
316 |
setcookie($cookie_utilisateur_nom, '', time()-3600, '/');
|
- |
|
317 |
}
|
- |
|
318 |
|
- |
|
319 |
/**
|
- |
|
320 |
* Fournit un jeton à l'annuaire (jeton provenant du cookie mandataire
|
- |
|
321 |
* de Papyrus), le fait rafraîchir puis met à jour le cookie mandataire avec
|
- |
|
322 |
* le jeton rafraîchi
|
- |
|
323 |
*/
|
- |
|
324 |
protected function rafraichirJeton($jeton) {
|
- |
|
325 |
$identiteServiceURL = $this->annuaire_url . "identite";
|
- |
|
326 |
$identiteServiceURL .= "?token=" . $jeton;
|
- |
|
327 |
//echo "URL: $identiteServiceURL<br/>";
|
207 |
*/
|
328 |
$ch = curl_init($identiteServiceURL);
|
- |
|
329 |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
- |
|
330 |
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
|
- |
|
331 |
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
|
- |
|
332 |
$jetonRafraichi = curl_exec($ch);
|
- |
|
333 |
//var_dump($jetonRafraichi);
|
208 |
protected function verifierToken($token) {
|
334 |
//var_dump(curl_error($ch)); exit;
|
209 |
$verificationServiceURL = $this->annuaire_url . "verifytoken";
|
335 |
|
210 |
$verificationServiceURL .= "?token=" . $token;
|
336 |
return $jetonRafraichi;
|
211 |
|
337 |
}
|