Question
Comment authentifier les demandes API avec l’une des API Zendesk v2 ?
Réponse
Vous devez être un utilisateur vérifié pour effectuer des demandes API authentifiées. Pour authentifier les demandes API, vous pouvez utiliser l’authentification de base avec votre adresse e-mail et votre mot de passe, avec votre adresse e-mail et un token API, ou avec un token d’accès OAuth.
Toutes les méthodes d’authentification définissent différemment l’en-tête d’autorisation. Les identifiants envoyés dans la charge ou l’URL ne sont pas traités. Chaque option est répertoriée ci-dessous :
- Authentification par mot de passe
- Authentification par token API
- Authentification par token d’accès OAuth
- Consultation de votre en-tête d’autorisation
Authentification par mot de passe
Si vous utilisez l’authentification de base, vous pouvez combiner votre adresse e-mail et votre mot de passe pour générer l’en-tête d’autorisation. Pour utiliser l’authentification de base, activez l’accès par mot de passe dans le Centre d’administration sous Applications et intégrations > API > API Zendesk, ainsi que dans la section d’authentification appropriée (membre de l’équipe ou utilisateur final).
Formatez la combinaison de l’adresse e-mail et du mot de passe en une chaîne codée Base-64
. Pour un exemple de formatage de l’en-tête d’autorisation, reportez-vous au bloc de code ci-dessous.
Authorization: Basic {base-64-encoded email_address:password}
Authentification par token API
Si vous utilisez un token API, vous pouvez combiner votre adresse e-mail et votre token API pour générer l’en-tête d’autorisation. Formatez la combinaison de l’adresse e-mail et du token API en une chaîne codée Base-64
. Pour un exemple de formatage de l’en-tête d’autorisation, reportez-vous au bloc de code ci-dessous.
Authorization: Basic {base-64-encoded email_address/token:api_token}
Authentification par token d’accès OAuth
Si vous utilisez OAuth pour l’authentification, formatez l’en-tête d’autorisation ainsi :
Authorization: Bearer oauth_access_token
Pour en savoir plus, consultez cet article : Authentification OAuth avec votre application.
Consultation de votre en-tête d’autorisation
Pour voir exactement ce que votre application envoie, utilisez une page tierce telle que Request Bin. Comparez vos en-têtes à ceux générés par un webhook en utilisant l’authentification OAuth. Pointez le webhook vers votre URL requestb.in et, sur la page Ajouter un webhook, cliquez sur Tester le webhook pour voir cela en action.
Une fois que la demande atteint votre requestb.in, elle ressemble à ce qui suit :
La chaîne suivant Authorization: Bearer
est la clé API fournie par RequestBin dans les paramètres de votre compte sous Accès programmatique.
Si vous utilisez Python pour créer des demandes, configurez vos en-têtes de session comme suit :
session = requests.Session()
session.headers = {'Content-Type': 'application/json', 'Authorization': 'Basic Basic_64_encoded_code'}
Pour en savoir plus, consultez la documentation destinée aux développeurs : Sécurité et authentification.
20 commentaire
Glenn Chen
Hi Paolo,
First, I need to emphasize that “I don't want to ask users about their passwords”.
I want to show some Zendesk content in my web app based on users' authorization status.
If I go with Oauth2, I will need to ask user's password, this is the example from Oauth2 Password grant type
If I go with Making API requests on behalf of end users, I also need password from the user.
Either way I need users' passwords to do it, is there a way I can do it without requesting their passwords?
0
Paolo
If you need the actual user's password, unfortunately, there is no way on getting this unless you ask them. In addition, it is not recommended to have your end user's password as this may arise security concerns. Can you please explain further the purpose of why the actual user password is needed, and the an OAuth or a token is not sufficient?
Best,
Paolo | Technical Support Engineer | Zendesk
0
Glenn Chen
Hi all
I have similar concern with Ramy Ben Aroya' s comment here
I want to show some Zendesk content in my web app. As far as I know, I can do it either through Oauth2 or by making a request on behalf of an user, but eventually I will need end users' passwords, is there a way I can do it without having to request their passwords?
0
Benedikt Hild
Hi All,
I ran into the same issues described by some people. Here's my working solution:
I enconded the credentials mentioned on the dokumention '{email_address}/token:{api_token}'
with UTF-8.
$Base64AuthInfo = "{email_address}/token:{api_token}"
$Base64AuthInfo = [convert]::ToBase64String([text.encoding]::UTF8.GetBytes($Base64AuthInfo))
My previous attempt encoding with unicode did not work.
$Base64AuthInfo = "{email_address}/token:{api_token}"
$Base64AuthInfo = [convert]::ToBase64String([text.encoding]::Unicode.GetBytes($Base64AuthInfo))
Maybe a mention of that could be usefull inside the API documentation.
Cheers!!
Benedikt
2
Dermot Doran Cato Networks
Hi All!
If you are working on macOS, I recommend that you follow the tip given by Nick Bolton. I tried to create the base64 code using the -i option of the base64 comman, but it kept adding an extra character to the end of encoded output.
Cheers!!
Dermot
0
Dane
Yes, you can use SSO for your end users. Please refer to Providing multiple sign-in options for team members and end users.
-1
Felipe Costa
Hello, SSO authentication works to customer's side?
We don't have our customer's zendesk password.
0
Fraser, Vanessa
I'm sure it is something I'm doing wrong but I have been over and over that article and am not seeing what I have done wrong. I'll contact support. Also I can curl using the email/token:tokeninfo so it has to do with my encoding of the email/token:tokeninfo.
0
Dwight Bussman
Hi Vanessa Fraser
After doing that encoding are you passing the encoded value in as a Basic Authorization header as documented here: https://developer.zendesk.com/api-reference/introduction/security-and-auth/#basic-authentication
If that doesn't help sort things out for you, I recommend contacting our support team to look into logs for your specific account.
0
Fraser, Vanessa
Hi! I'm trying to use Azure Logic Apps to Authentic for a POC but I keep getting 401 Couldn't authenticate you.
I've encoded my username/token:aaaa via powershell this way but I must be missing something.
$text = "myname@mydomain.com/token:tokentexthere"
$encoded = [convert]::ToBase64String([text.encoding]::Unicode.GetBytes($text))
$encoded
I went through this article and tried OAuth, api, user/password but just not getting authenticated.
Any ideas would be welcome!
0
Vous connecter pour laisser un commentaire.