OAuth2
L'API Creads Partners utilise OAuth2 comme unique protocole d'authentification. Vous devez disposer d'un compte Creads Partners et d'identifiants pour votre application. Le compte Creads Partners est un couple email + mot de passe. Les identifiants d'application sont un Client ID et un Client Secret OAuth. Ses identifiants ne doivent jamais être partagés.
Si vous n'avez pas de compte Creads Partners ou pas d'identifiants d'application, veuillez contacter contact@creads-partners.com.
Workflow pour une application serveur
client_credentials grant type
Ce workflow permet d'authentifier une application qui ne nécessite pas d'authentification de plusieurs utilisateurs Partners différents.
Obtenir un access token:
curl -u CLIENT_ID:CLIENT_SECRET "https://api.creads-partners.com/oauth2/token" -d 'grant_type=client_credentials'
remplacer
CLIENT_IDpar votre Client ID remplacerCLIENT_SECRETpar votre Client Secret
Réponse:
{
"access_token": "MWFjYjgxZGRmMTRjMDA0MDUyYmNmODA5ZDRlNzFjYTc1NTZlYzc0ODMwYTc2OTE3NzIzYzY4ZDc0OGE4YWRhYg",
"expires_in": 3600,
"token_type": "bearer",
"scope": "base"
}
Workflow pour une application serveur avec authentification de chaque utilisateur Partners
password grant type
Ce workflow permet d'authentifier des utilisateurs Partners différents. Le serveur doit obtenir un access token et le stocker en l'associant à un utilisateur (en session par exemple). L'access token devra être associé à toutes les requêtes effectuées par l'utilisateur.
curl -u CLIENT_ID:CLIENT_SECRET "https://api.creads-partners.com/oauth2/token?grant_type=password' -d 'grant_type=password&username=USERNAME&password=PASSWORD'
remplacer
CLIENT_IDpar votre Client ID remplacerCLIENT_SECRETpar votre Client Secret remplacerUSERNAMEpar l'email de l'utilisateur à authentifier remplacerPASSWORDpar le mot de passe saisie par l'utilisateur à authentifier
Réponse:
{
"access_token": "NWE4MmVmZjgyYjA1NTBkODI5ZDY1ZmFlMGZlZmIyZTE1NDE1MWM2ZmQ0NjEwMjNlYmI0M2MxNDYxOTMyNmFlMQ",
"expires_in": 3600,
"token_type": "bearer",
"scope": "base",
"refresh_token": "ZWNmZWEwNjU0OTY5ZjUxMThjN2VlM2NkMjI5MDk1OWM3MGE1NTI2OTNmMzUwZWU3M2MzZTc0ZmFiMmVhYTk4Nw"
}
Refresh token (refresh_token grant type)
refresh_token grant type
Permet de raffraichir un access token OAuth2 sans redemander le mot de passe de l'utilisateur. A l'obtention d'un access token et son stockage sur le serveur, on peut également stocker un refresh token. Ce refresh token valable pour une plus longue durée permettra d'obtenir un nouvel access token pour un utilisateur Partners sans le forcer à resaisir son mot de passe.
curl -u CLIENT_ID:CLIENT_SECRET "https://api.creads-partners.com/oauth2/token?grant_type=password' -d 'grant_type=refresh_token&refresh_token=REFRESH_TOKEN'
remplacer
CLIENT_IDpar votre Client ID remplacerCLIENT_SECRETpar votre Client Secret remplacerREFRESH_TOKENpar le refresh token obtenu avec l'access token
Réponse:
{
"access_token": "NWE4MmVmZjgyYjA1NTBkODI5ZDY1ZmFlMGZlZmIyZTE1NDE1MWM2ZmQ0NjEwMjNlYmI0M2MxNDYxOTMyNmFlMQ",
"expires_in": 3600,
"token_type": "bearer",
"scope": "base",
"refresh_token": "ZWNmZWEwNjU0OTY5ZjUxMThjN2VlM2NkMjI5MDk1OWM3MGE1NTI2OTNmMzUwZWU3M2MzZTc0ZmFiMmVhYTk4Nw"
}
Scopes
L'API Partners permet de demander un access_token pour un scope particulier lors de l'authentification. Par défaut, cette valeur est définie à base.
Scopes existants
- base: Permet d'obtenir et modifier des resources et des fichiers (soumis aux règles de sécurité de l'utilisateur)
- files: Ne permet que d'obtenir des images ou des fichiers sur les endpoints prévus à cet effet.
- upload_files: Permet d'uploader des fichiers.
Un token avec le scope
basene devrait jamais être exposé à un client. L'obtention de ce token par un tiers constitue une faille de sécurité
Donner accès aux images à des utilisateurs anonymes
Si une application (grant type client_credentials) a besoin d'afficher une image à ses utilisateurs qui ne sont pas eux mêmes authentifiés sur Partners, les scopes permettent d'exposer un token non critique pour effectuer cet affichage.
Obtenir un access token pour les fichiers:
curl -u CLIENT_ID:CLIENT_SECRET "https://api.creads-partners.com/oauth2/token" -d 'grant_type=client_credentials' -d 'scope=files'
remplacer
CLIENT_IDpar votre Client ID remplacerCLIENT_SECRETpar votre Client Secret Remarquer scope=files
Réponse:
{
"access_token": "MWFjYjgxZGRmMTRjMDA0MDUyYmNmODA5ZDRlNzFjYTc1NTZlYzc0ODMwYTc2OTE3NzIzYzY4ZDc0OGE4YWRhYg",
"expires_in": 3600,
"token_type": "bearer",
"scope": "files"
}
Ce token peut maintenant être joint à l'url d'une image :
<img src="https://api.creads-partners.com/v1/img/whateverImage.png?access_token=ACCESS_TOKEN">
remplacer
ACCESS_TOKENpar la valeur de ce champ dans la réponse obtenue précédemment

