Avant de laisser quiconque agir sur un compte, il faut d’abord s’assurer de son identité : c’est le rôle de l’authentification, à distinguer de l’autorisation qui, elle, détermine ce que cette personne, une fois identifiée, a le droit de faire. On peut authentifier quelqu’un sans pour autant lui donner tous les droits.
Fonctionnement dans WordPress
Le formulaire de wp-login.php appelle la fonction wp_signon(), qui vérifie le mot de passe fourni contre le hachage stocké en base, puis établit un cookie de session valable sur le domaine du site. Des extensions ou des intégrations personnalisées peuvent s’appuyer sur les hooks wp_authenticate et authenticate pour ajouter une étape supplémentaire, comme un second facteur de vérification.
Exemple
$identifiants = ['user_login' => $login, 'user_password' => $mdp];
$utilisateur = wp_signon($identifiants, is_ssl());
if (is_wp_error($utilisateur)) {
// échec de l'authentification
}
Bon à savoir
WordPress permet d’authentifier un utilisateur autrement que par mot de passe, notamment via des clés d’application pour l’API REST, ou via des extensions qui délèguent l’authentification à un fournisseur externe (Google, Microsoft) par OAuth. Dans tous les cas, une authentification réussie ne doit jamais dispenser de vérifier ensuite les capacités de l’utilisateur avant d’exécuter une action sensible, les deux notions répondant à des questions distinctes : qui êtes-vous, puis qu’avez-vous le droit de faire une fois identifié. Un site qui ne limite pas les tentatives de connexion échouées expose aussi ce mécanisme à une attaque par force brute, chaque essai de mot de passe restant possible sans restriction tant qu’aucune protection supplémentaire n’a été ajoutée.