Sélectionner une page


Étend l’API WP REST à l’aide de l’authentification par jeton Web JSON comme méthode d’authentification.

Les jetons Web JSON sont une norme industrielle ouverte RFC 7519 Méthode de présentation sécurisée des créances entre deux parties.

Assistance et demandes de renseignements sur Github: https://github.com/Tmeister/wp-api-jwt-auth

CONDITIONS

WP REST API V2

Ce plugin est conçu pour étendre cela WP REST API V2 Le plugin fonctionne et a bien sûr été construit dessus.

Alors pour utiliser ça wp-api-jwt-auth Vous devez installer et activer API WP REST.

PHP

Version minimale de PHP: 5.3.0

Activer l’en-tête d’autorisation HTTP PHP

La plupart des hébergements mutualisés l’ont désactivé En-tête d’autorisation HTTP Par défaut.

Pour activer cette option, vous devrez modifier la vôtre .htaccess Fichier qui ajoute ce qui suit

RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

WPENGINE

Pour activer cette option, vous devrez modifier la vôtre .htaccess Fichier qui ajoute ce qui suit

Voir https://github.com/Tmeister/wp-api-jwt-auth/issues/1

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

CONSTRUCTION

Configurer la clé secrète

Le JWT a besoin d’un clef secrète signer le jeton clef secrète doit être unique et jamais révélé.

Ajout du clef secrète Modifiez votre fichier wp-config.php et ajoutez une nouvelle constante nommée JWT_AUTH_SECRET_KEY

define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');

Vous pouvez utiliser une chaîne ici: https://api.wordpress.org/secret-key/1.1/salt/

Configurer la prise en charge des COR

le wp-api-jwt-auth Le plugin a la possibilité d’activer COR Support.

Pour activer le support CORs, éditez votre fichier wp-config.php et ajoutez une nouvelle constante avec le nom JWT_AUTH_CORS_ENABLE

define('JWT_AUTH_CORS_ENABLE', true);

Enfin, activez le plugin dans votre wp-admin.

Espace de noms et points de terminaison

Lorsque le plugin est activé, un nouvel espace de noms est ajouté

/jwt-auth/v1

Deux nouveaux points de terminaison sont également ajoutés à cet espace de noms

Endpoint | Verbe HTTP
/ wp-json / jwt-auth / v1 / jeton | PUBLIER
/ wp-json / jwt-auth / v1 / token / valider | PUBLIER

UTILISER

/ wp-json / jwt-auth / v1 / jeton

C’est le point d’entrée pour l’authentification JWT.

Vérifie les informations d’identification de l’utilisateur. Nom d’utilisateur et le mot de passeet renvoie un jeton à utiliser dans une demande future à l’API si l’authentification est correcte, ou une erreur si l’authentification échoue.

Exemple de demande avec AngularJS

( function() {

  var app = angular.module( 'jwtAuth', [] );

  app.controller( 'MainController', function( $scope, $http ) {

    var apiHost="http://yourdomain.com/wp-json";

    $http.post( apiHost + '/jwt-auth/v1/token', {
        username: 'admin',
        password: 'password'
      } )

      .then( function( response ) {
        console.log( response.data )
      } )

      .catch( function( error ) {
        console.error( 'Error', error.data[0] );
      } );

  } );

} )();

Réponse réussie du serveur

{
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9qd3QuZGV2IiwiaWF0IjoxNDM4NTcxMDUwLCJuYmYiOjE0Mzg1NzEwNTAsImV4cCI6MTQzOTE3NTg1MCwiZGF0YSI6eyJ1c2VyIjp7ImlkIjoiMSJ9fX0.YNe6AyWW4B7ZwfFE5wJ0O6qQ8QFcYizimDmBy6hCH_8",
    "user_display_name": "admin",
    "user_email": "admin@localhost.dev",
    "user_nicename": "admin"
}

Réponse d’erreur du serveur

{
    "code": "jwt_auth_failed",
    "data": {
        "status": 403
    },
    "message": "Invalid Credentials."
}

Une fois que vous avez obtenu le jeton, vous devez l’enregistrer quelque part dans votre application, par exemple. dans une biscuit ou avec mémoire locale.

À partir de ce moment, vous devez transmettre ce jeton à chaque appel d’API

Exemple d’appel avec l’en-tête d’autorisation avec AngularJS

app.config( function( $httpProvider ) {
  $httpProvider.interceptors.push( [ '$q', '$location', '$cookies', function( $q, $location, $cookies ) {
    return {
      'request': function( config ) {
        config.headers = config.headers || {};
        //Assume that you store the token in a cookie.
        var globals = $cookies.getObject( 'globals' ) || {};
        //If the cookie has the CurrentUser and the token
        //add the Authorization header in each request
        if ( globals.currentUser && globals.currentUser.token ) {
          config.headers.Authorization = 'Bearer ' + globals.currentUser.token;
        }
        return config;
      }
    };
  } ] );
} );

le wp-api-jwt-auth intercepte chaque appel au serveur et recherche l’en-tête d’autorisation. Si l’en-tête d’autorisation est présent, il essaie de décoder le jeton et définit l’utilisateur en fonction des données qui y sont stockées.

Si le jeton est valide, le flux d’appels d’API se poursuit comme toujours.

Exemples d’en-têtes

POST /resource HTTP/1.1
Host: server.example.com
Authorization: Bearer mF_s9.B5f-4.1JqM

ERREUR

Si le jeton n’est pas valide, une erreur est renvoyée. Voici quelques exemples d’erreurs.

les informations d’identification invalides

[
  {
    "code": "jwt_auth_failed",
    "message": "Invalid Credentials.",
    "data": {
      "status": 403
    }
  }
]

Signature non valide

[
  {
    "code": "jwt_auth_invalid_token",
    "message": "Signature verification failed",
    "data": {
      "status": 403
    }
  }
]

Jeton expiré

[
  {
    "code": "jwt_auth_invalid_token",
    "message": "Expired token",
    "data": {
      "status": 403
    }
  }
]

/ wp-json / jwt-auth / v1 / token / valider

Il s’agit d’un simple point de terminaison d’assistance pour vérifier un jeton. Tout ce que vous avez à faire est de faire une demande POST pour envoyer l’en-tête d’autorisation.

Réponse de jeton valide

{
  "code": "jwt_auth_valid_token",
  "data": {
    "status": 200
  }
}

CROCHETS DISPONIBLES

le wp-api-jwt-auth est compatible avec les développeurs et dispose de cinq filtres pour remplacer les paramètres par défaut.

jwt_auth_cors_allow_headers

le jwt_auth_cors_allow_headers Cette option vous permet de modifier les en-têtes disponibles lorsque la prise en charge COR est activée.

Valeur par défaut:

'Access-Control-Allow-Headers, Content-Type, Authorization'

jwt_auth_not_before

le jwt_auth_not_before vous permet de changer cela nbf Valeur avant la création du jeton.

Valeur par défaut:

Creation time - time()

jwt_auth_expire

le jwt_auth_expire Cette option vous permet de changer la valeur exp avant la création du jeton.

Valeur par défaut:

time() + (DAY_IN_SECONDS * 7)

jwt_auth_token_before_sign

le jwt_auth_token_before_sign Cette option vous permet de modifier toutes les données de jeton avant qu’elles ne soient codées et signées.

valeur par défaut

<?php
$token = array(
    'iss' => get_bloginfo('url'),
    'iat' => $issuedAt,
    'nbf' => $notBefore,
    'exp' => $expire,
    'data' => array(
        'user' => array(
            'id' => $user->data->ID,
        )
    )
);

jwt_auth_token_before_dispatch

le jwt_auth_token_before_dispatch Cette option vous permet de modifier l’ensemble du tableau de réponses avant de l’envoyer au client.

Valeur par défaut:

<?php
$data = array(
    'token' => $token,
    'user_email' => $user->data->user_email,
    'user_nicename' => $user->data->user_nicename,
    'user_display_name' => $user->data->display_name,
);



Source link

Recent Posts