8722 sujets

Développement web côté serveur, CMS

Bonjour,

Petite question concernant les token, j'ai lu que c'était nécessaire notamment pour de l'ajax, j'ai trouvé ce code pour créer un token, mais après quel est le principe, quand est-ce que je dois le modifier? dois-je le passer dans tous mes formulaires dans un champ "hidden" ?
j'avoue ne pas trop comprendre le principe...

$p = new OAuthProvider();
$t = $p->generateToken(20);
$_SESSION['token']=bin2hex($t);

Merci !
Modérateur
Bonjour,

Si tu parles des tokens d'accès, le principe (version simplifiée) est le suivant.

Etape 1:
L'utilisateur se connecte à un site avec un identifiant et un mot de passe
Le serveur du site vérifie son profil (ce que l'utilisateur a le droit de faire sur le site), et renvoie un token au navigateur de l'utilisateur (le client).

Etape 2:
L'utilisateur cherche à utiliser une partie du site sécurisée. Le client envoie au serveur le token qui va servir de preuve comme quoi l'utilisateur s'est bien identifié/authentifié au préalable.

Ceci évite que l'utilisateur se re-identifie/authentifie à chaque fois, et évite aussi de transmettre l'identifiant et le mot de passe de l'utilisateur à chaque fois. Par ailleurs les tokens peuvent avoir une durée de vie limitée et/ou un nombre d'utilisation limité.

Il y a éventuellement des mécanismes plus compliqués.

L'utilisation des tokens va souvent de pair avec l'utilisation du protocole OAuth 2.0. Il y a trois étapes au lieu de deux.

Etape 1:
L'utilisateur se connecte à un site avec un identifiant et un mot de passe
Le serveur vérifie son profil (ce que l'utilisateur a le droit de faire sur le site), et renvoie un token dit "authorization grant" au client .

Etape 2:
L'utilisateur cherche à utiliser une partie du site sécurisée (plus généralement, on parle de ressource). Le client envoie une demande d'autorisation à un service d'autorisation installé sur le serveur, en fournissant le token "authorization grant" préalablement récupéré par le client. Le service renvoie au client un token dit "access token" qui va permettre à ce client d'accéder à la ressource.

Etape 3
Le client accède à la ressource en présentant son token d'accès.

Voir par exemple https://zestedesavoir.com/articles/1616/comprendre-oauth-2-0-par-lexemple/

Ces notions sont liées au concept de SSO (single sign on). Le principe est que l'utilisateur s'identifie/authentifie une seule fois en début de session, le client et et le serveur discutant ensuite entre eux pour permettre à l'utilisateur d'accéder à des ressources variées qui ont des systèmes d'accès divers.

Concernant Ajax, j'imagine que ce que tu as lu permettait de renforcer la sécurité d'une requête ajax en transmettant un token avec cette requête. Ceci étant, ce n'est pas obligation d'utiliser un token avec ajax. Tout dépend de ce que tu fais.

Amicalement,
Bonjour,

Merci pour cette réponse parsimonhi, en fait c'est pour un formulaire de connexion à une interface d'administration web, avec des accès différents selon les utilisateurs, alors je ne sais pas si il est utile de créer un token ?
Et si oui comment procéder? je ne trouve pas de petit code tout fait sur Google qui me servirai de base. Je ne comprends pas comment faire, comment et à quel moment générer le token, où le stocker, quand et comment comparer les token ? Je suis dans le flou complet...

merci encore !
Modérateur
Bonjour,

Mon conseil : si ton site n'est pas sensible (genre une banque, un fabriquant de missiles, etc.) laisse tomber ces histoires de token.

Fais ton site en utilisant les sessions php et ce sera bien suffisant selon moi.

Amicalement,