Pregunta
¿Cómo se autentican las solicitudes de la API usando una de las API de Zendesk v2?
Respuesta
Debe ser un usuario verificado para realizar solicitudes de API autenticadas. Para autenticar las solicitudes de API, use la autenticación básica con su dirección de correo electrónico y contraseña, su dirección de correo electrónico y un token de API, o un token de acceso de OAuth.
Todos los métodos de autenticación establecen el encabezado de la autorización de manera diferente. Las credenciales enviadas en la carga o la URL no se procesan. Cada opción se enumera a continuación:
- Autenticación de contraseña
- Autenticación de token de API
- Autenticación de token de acceso OAuth
- Ver el encabezado de la autorización
Autenticación por contraseña
Si usa la autenticación básica, puede combinar su dirección de correo electrónico y contraseña para generar el encabezado de la autorización. Para usar la autenticación básica, active el acceso con contraseña en el Centro de administración en Aplicaciones e integraciones > API > API de Zendesk, así como dentro de la sección de autenticación correspondiente, ya sea integrante del equipo o usuario final.
Formatee la combinación de dirección de correo electrónico y contraseña para que sea una Base-64
cadena codificada. Si desea ver un ejemplo de cómo formatear el encabezado de la autorización, consulte el bloque de código a continuación.
Authorization: Basic {base-64-encoded email_address:password}
Autenticación de token de API
Si se usa untoken de API, puede combinar su dirección de correo electrónico y token de API para generar el encabezado de la autorización. Formatee la combinación de dirección de correo electrónico y token de API para que sea una Base-64
cadena codificada. Si desea ver un ejemplo de cómo formatear el encabezado de la autorización, consulte el bloque de código a continuación.
Authorization: Basic {base-64-encoded email_address/token:api_token}
Autenticación de token de acceso OAuth
Si usa OAuth para la autenticación, formatee el encabezado de la autorización de este modo:
Authorization: Bearer oauth_access_token
Para obtener más información, consulte este artículo: Uso de la autenticación OAuth con su aplicación.
Ver el encabezado de la autorización
Para ver exactamente lo que envía su aplicación, utilice una página de terceros como Request Bin. Compare sus encabezados con los que genera un webhook usando una autenticación OAuth. Apunte el webhook a la URL requestb.in y, en la página Agregar webhook, haga clic en Probar webhook para verlo en acción.
Una vez que la solicitud llega a su requestb.in, se ve así:
La cadena después Authorization: Bearer
es la clave de API proporcionada por RequestBin en la configuración de su cuenta en Acceso programático.
Si usa Python para hacer solicitudes, configure los encabezados de la sesión de la siguiente manera:
session = requests.Session()
session.headers = {'Content-Type': 'application/json', 'Authorization': 'Basic Basic_64_encoded_code'}
Si desea más información, consulte la documentación para programadores. Seguridad y autenticación.
20 comentarios
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
Iniciar sesión para dejar un comentario.