Fin 2021, Webmecanik Automation arrêtera le support de OAuth 1. Nous invitons nos utilisateurs à utiliser le protocole OAuth 2 en remplacement qui existait déjà par le passé, mais qui comporte une nouveauté facilitant la communication "machine to machine".
Notez que si vous utilisiez déjà OAuth2, vous pouvez maintenant utiliser le nouveau protocole OAuth 2 Client Credential pour gérer vos communications Machine to Machine.
Identifiants OAuth2
Commencez par créer une clé API OAuth2 pour remplacer votre clé OAuth1. Plus d'information à ce propos dans cet article sur la création de clé API.
Notez que si vous utilisiez déjà OAuth2 et que vous souhaitez mettre à jour votre authentification en utilisant le protocole Client Credential pour une communication Machine to Machine, il vous faudra créer une nouvelle clé API OAuth2.
OAuth2 Client Credentials
L'obtention du Client Credentials est utile lorsque vous avez besoin d'un access token qui ne dépend pas de droits utilisateurs. Lorsque vous utilisiez la version précédente et standard de OAuth 2, il vous était demandé d'obtenir votre access token grâce à la validation par les identifiant d'un utilisateur. Cet access token avait les mêmes droits et limitations que l'utilisateur qui avait donné son autorisation.
Access token
Pour créer un access token, envoyez une requête POST à la route oauth/v2/token en utilisant votre clé API, la clé secrète et le type d'autorisation client_credentials.
Comme expliqué, cet access token vous donnera accès à toutes les ressources de l'application, sans restriction de droits liés à un utilisateur.
curl --location --request POST 'https://your-automation.url/oauth/v2/token' \
--header 'Content-Type: application/json' \
--data-raw '{
"grant_type": "client_credentials",
"client_id": "",
"client_secret": ""
}'
La réponse devrait être :
{
"access_token": "OTJkNTFmMjJmNDFhGHZlOTZlNjI4YjJiNjdiYjFkNWNlMjczZWU0Zjc0MzZhYWQ1MWZjOWM4YWM5OTA5YjQ3NQ",
"expires_in": 3600,
"token_type": "bearer",
"scope": null
}
Authentification de la requête API
Choisissez parmi les méthodes suivantes selon votre besoin :
- Utiliser l'access token dans le header comme Authorization: Bearer
- Ou directement dans l'URL comme paramètre de la requête.
Authorization Header
curl --location --request GET 'https://automation.url/index_dev.php/api/contacts' \
--header 'Authorization: Bearer OTJkNTFmMjJmNDFhGHZlOTZlNjI4YjJiNjdiYjFkNWNlMjczZWU0Zjc0MzZhYWQ1MWZjOWM4YWM5OTA5YjQ3NQ'
Access token dans l'URL de la requête
curl --location --request GET 'https://automation.url/api/contacts?access_token=OTJkNTFmMjJmNDFhGHZlOTZlNjI4YjJiNjdiYjFkNWNlMjczZWU0Zjc0MzZhYWQ1MWZjOWM4YWM5OTA5YjQ3NQ'
ou
curl --location --request POST 'https://automation.url/api/contacts/new?firstname=test&lastname=test&email=test@test.com&access_token=OTJkNTFmMjJmNDFhGHZlOTZlNjI4YjJiNjdiYjFkNWNlMjczZWU0Zjc0MzZhYWQ1MWZjOWM4YWM5OTA5YjQ3NQ'
Utilisation de l'API Library
Commencez par installer l'API Library version 3.0.0 de Webmecanik Automation disponible ici qui intègre le support de l'OAuth2 Client Credentials.
Par la suite, procédez comme dans cet exemple :
<?php
// Bootup the Composer autoloader
include __DIR__ . '/vendor/autoload.php';
use Mautic\Auth\ApiAuth;
$settings = [
'AuthMethod' => 'TwoLeggedOAuth2',
'clientKey' => '',
'clientSecret' => '',
'baseUrl' => '',
];
// $settings['accessToken'] = 'your stored access token';
$initAuth = new ApiAuth();
$auth = $initAuth->newAuth($settings, $settings['AuthMethod']);
if (!isset($settings['accessToken'])) {
// store it for one hour and use it in $settings above
$accessToken = $auth->getAccessToken();
}
// Nothing else to do ... It's ready to use.
// Just pass the auth object to the API context you are creating.
Commentaires
0 commentaire
Vous devez vous connecter pour laisser un commentaire.