Subversion Repositories Applications.annuaire

Rev

Rev 536 | Rev 540 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 536 Rev 537
Line 107... Line 107...
107
	 * les paramètres GET sont ignorés
107
	 * les paramètres GET sont ignorés
108
	 * 
108
	 * 
109
	 * @param array $ressources les éléments d'URL
109
	 * @param array $ressources les éléments d'URL
110
	 */
110
	 */
111
	public function getElement($ressources) {
111
	public function getElement($ressources) {
112
		// Achtétépéèch portouguech
112
		// Achtétépéèch portouguech lolch
113
		$this->verifierSSL();
113
		$this->verifierSSL();
114
		//echo "get element\n";
114
		//echo "get element\n";
115
		//var_dump($ressources);
115
		//var_dump($ressources);
116
		// le premier paramètre d'URL définit la méthode (non-magique)
116
		// le premier paramètre d'URL définit la méthode (non-magique)
117
		if (count($ressources) > 0) {
117
		if (count($ressources) > 0) {
Line 209... Line 209...
209
		// création du cookie
209
		// création du cookie
210
		$this->creerCookie($jwt);
210
		$this->creerCookie($jwt);
211
		// envoi
211
		// envoi
212
		$this->envoyerJson(array(
212
		$this->envoyerJson(array(
213
			"session" => true,
213
			"session" => true,
214
			"token" => $jwt
214
			"token" => $jwt,
-
 
215
			"duration" => intval($this->dureeJeton),
-
 
216
			"token_id" => $this->nomCookie
215
		));
217
		));
216
	}
218
	}
Line 217... Line 219...
217
 
219
 
218
	/**
220
	/**
Line 234... Line 236...
234
		);
236
		);
235
		$jwt = JWT::encode($jetonVide, $this->clef);*/
237
		$jwt = JWT::encode($jetonVide, $this->clef);*/
236
		$jwt = null;
238
		$jwt = null;
237
		$this->envoyerJson(array(
239
		$this->envoyerJson(array(
238
			"session" => false,
240
			"session" => false,
239
			"token" => $jwt
241
			"token" => $jwt,
-
 
242
			"token_id" => $this->nomCookie
240
		));
243
		));
241
	}
244
	}
Line 242... Line 245...
242
 
245
 
243
	/**
246
	/**
244
	 * Renvoie un jeton rafraîchi (durée de validité augmentée de $this->dureeJeton
247
	 * Renvoie un jeton rafraîchi (durée de validité augmentée de $this->dureeJeton
245
	 * si l'utilisateur est reconnu comme détenteur d'une session active (cookie valide
248
	 * si l'utilisateur est reconnu comme détenteur d'une session active (cookie valide
-
 
249
	 * ou jeton valide); renvoie une erreur si le cookie et/ou le jeton sont expirés;
-
 
250
	 * cela permet en théorie de forger des cookies avec des jetons expirés pour se les
-
 
251
	 * faire rafraîchir franduleusement, mais le canal HTTPS fait qu'un client ne peut
-
 
252
	 * être en possession que de ses propres jetons... au pire on peut se faire prolonger
246
	 * ou jeton valide); renvoie une erreur si le cookie et/ou le jeton sont expirés;
253
	 * à l'infini même si on n'est plus inscrit à l'annuaire... @TODO faire mieux un jour
247
	 * le cookie est prioritaire sur le paramètre "token" @TODO vérifier cette stratégie
254
	 * Le cookie est prioritaire sur le paramètre "token" @TODO vérifier cette stratégie
248
	 */
255
	 */
249
	protected function identite() {
256
	protected function identite() {
250
		$cookieAvecJetonValide = false;
257
		$cookieAvecJetonValide = false;
251
		$jetonRetour = null;
258
		$jetonRetour = null;
Line 287... Line 294...
287
		if ($jetonRetour === null) {
294
		if ($jetonRetour === null) {
288
			$this->erreur($erreur);
295
			$this->erreur($erreur);
289
		} else {
296
		} else {
290
			$this->envoyerJson(array(
297
			$this->envoyerJson(array(
291
				"session" => true,
298
				"session" => true,
292
				"token" => $jetonRetour
299
				"token" => $jetonRetour,
-
 
300
				"duration" => intval($this->dureeJeton),
-
 
301
				"token_id" => $this->nomCookie
293
			));
302
			));
294
		}
303
		}
295
	}
304
	}
Line 296... Line 305...
296
 
305
 
Line 387... Line 396...
387
		if ($exp === null) {
396
		if ($exp === null) {
388
			$exp = time() + $this->dureeJeton;
397
			$exp = time() + $this->dureeJeton;
389
		}
398
		}
390
		$jeton = array(
399
		$jeton = array(
391
			"iss" => "https://www.tela-botanica.org",
400
			"iss" => "https://www.tela-botanica.org",
-
 
401
			"token_id" => $this->nomCookie,
392
			//"aud" => "http://example.com",
402
			//"aud" => "http://example.com",
393
			"sub" => $sub,
403
			"sub" => $sub,
394
			"iat" => time(),
404
			"iat" => time(),
395
			"exp" => $exp,
405
			"exp" => $exp,
396
			//"nbf" => time() + 60,
406
			//"nbf" => time() + 60,
Line 446... Line 456...
446
		}
456
		}
447
	}
457
	}
Line 448... Line 458...
448
 
458
 
449
	protected function getParamChain($names) {
459
	protected function getParamChain($names) {
450
		if (! is_array($names)) {
-
 
-
 
460
		if (! is_array($names)) {
451
			
461
			// Hou ? (cri de chouette solitaire)
452
		}
462
		}
Line 453... Line 463...
453
	}
463
	}
454
 
464