Saltar al contenido principal
Este esquema de autenticación se considera el más seguro, ya que, en lugar de dirigir la solicitud de autenticación al usuario, la aplicación la envía al servidor de autorización de Vantage. El servidor de autorización autentica al usuario y devuelve el código de autorización al cliente. Para evitar la interceptación del código de autorización, este escenario de autenticación utiliza una extensión de seguridad llamada PKCE (Proof Key for Code Exchange). Funciona así: cada solicitud de autorización requiere generar un número aleatorio criptográfico y almacenarlo en code_verifier, que luego se usa para obtener un valor firmado criptográficamente, almacenado en code_challenge. Este valor se envía al servidor de autorización para obtener un código de autorización. Para obtener más información sobre PKCE, visite este enlace.

Obtención del código de autorización

Para iniciar el proceso de autenticación, redirija al usuario al endpoint de autorización y pase los siguientes parámetros:
ParameterDescripción
client_idIdentificador de la aplicación. Para saber cómo crear un Vantage API Client (client_id y client_secret), consulte el artículo Managing Tenant Vantage API Clients.
redirect_uriLa URL de su aplicación o sitio web a la que se redirigirá el navegador una vez otorgados los permisos de acceso.
response_type=codeEspecifica que se utiliza el tipo de respuesta de código de autorización.
scope=openid permissions global.wildcardEspecifica el ámbito de permisos.
stateUn valor de cadena arbitrario que contendrá el resultado de la autorización en la respuesta.
code_challengeValor firmado digitalmente del code_verifier (usando code_challenge_method).
code_challenge_methodEl método de firma digital para code_verifier (S256).
productId=a8548c9b-cb90-4c66-8567-d7372bb9b963Identificador de Vantage.
Los valores de response_type, scope y productId deben ser exactamente los indicados arriba. Estas claves, excepto response_type, pueden cambiar. Considere mantenerlas en la configuración.
Solicitud de ejemplo
https://vantage-us.abbyy.com/auth2/connect/authorize?client_id=client_id&redirect_uri=https%3A%2F%2Fvantage-us.abbyy.com%2Flogin-callback&response_type=code&scope=openid%20permissions%20global.wildcard&state=ef30939211cc4ecb9a7a349b855c6a10&code_challenge=tA6ayQ5VUjLX2tufAKaHh-9bTAQ4hQQY5VZAoB2kG9o&code_challenge_method=S256&productId=a8548c9b-cb90-4c66-8567-d7372bb9b963
Un parámetro llamado redirect_uri que contiene el identificador de su recurso se utiliza en OAuth 2.0 para permitir que Vantage envíe el código de autorización a su recurso y luego intercambie ese código por el token de acceso, necesario para la autenticación en todas las llamadas posteriores a la API. El uso de este método de autenticación requiere proporcionar el valor del parámetro redirect_uri al soporte técnico de ABBYY para que los administradores lo incluyan en la lista de permitidos. Una vez verificado que se han concedido los permisos de acceso solicitados mediante el parámetro scope, el navegador se redirige a una página web específica configurada por el servidor de Vantage. Esta página web contiene un cuadro de diálogo que se utiliza para completar la autorización con su cuenta. Esta página debe abrirse en un navegador que tenga visible la barra de direcciones, lo que le permitirá verificar la URL de la página y el estado del certificado SSL de la conexión. Si su dirección de correo electrónico está vinculada a varias cuentas en distintos tenants, se le pedirá que seleccione un tenant e introduzca su contraseña después de especificar su dirección de correo electrónico. También puede pasar su identificador de tenant (el parámetro tokenId) directamente mediante uno de los siguientes recursos:
https://vantage-us.abbyy.com/auth2/{tenantId}/connect/authorize?client_id=client_id&redirect_uri=external_app_redirect_uri&response_type=code
&scope=openid%20permissions%20global.wildcard&state=state&code_challenge=code_challenge
&code_challenge_method=S256&productId=a8548c9b-cb90-4c66-8567-d7372bb9b963
o
https://vantage-us.abbyy.com/auth2/connect/authorize?client_id=client_id&redirect_uri=external_app_redirect_uri&response_type=code
&scope=openid%20permissions%20global.wildcard&state=state&code_challenge=code_challenge
&code_challenge_method=S256&productId=a8548c9b-cb90-4c66-8567-d7372bb9b963&tenantId=tenantId
Se te pedirá que introduzcas la contraseña de tu cuenta de inquilino. Una vez que hayas introducido tus credenciales, la autorización se completa del lado del servidor, la aplicación obtiene acceso a la Vantage API y recibes el código de autorización en la respuesta a tu solicitud. Tenga en cuenta que, si un sitio o una aplicación utiliza este tipo de autenticación, los usuarios de Vantage otorgarán acceso a la Vantage API en su nombre al sitio o la aplicación que está agregando a la lista de URL de redirección permitidas. Para conceder acceso al sitio o la aplicación, se pedirá a los usuarios que se autentiquen en Vantage con su nombre de usuario y contraseña. Una vez autenticado el usuario, al sitio o la aplicación se le otorgarán los siguientes permisos:
  • Administrar catálogos de datos en el inquilino de Vantage en nombre del usuario,
  • Acceder a las skills en el inquilino de Vantage en nombre del usuario,
  • Crear y acceder a transacciones de Vantage en nombre del usuario.
El sitio o la aplicación no podrá cambiar la contraseña del usuario, modificar la lista de usuarios en un inquilino de Vantage ni editar skills. Solo se proporcionará acceso a la Vantage API. El usuario no podrá revocar el acceso una vez concedido.

Obtención del token de autorización

Una vez que haya obtenido el código de autorización, dispone de un minuto para intercambiarlo por el token de acceso. Use una solicitud POST al endpoint de token con datos application/x-www-form-urlencoded. Parámetros del cuerpo de la solicitud:
ParameterDescripción
code_verifierEl código que generó. Necesario para confirmar el inicio de la solicitud de autorización.
client_idEl identificador de la aplicación.
client_secretClave segura de la aplicación.
codeSu código de autorización obtenido del servidor.
redirect_uriLa URL de redirección utilizada en el paso de autorización.
grant_type=authorization_codeEspecifica que se utiliza el tipo de concesión “authorization code”.
scope=openid permissions global.wildcard offline_accessEspecifica el ámbito de permisos. Para obtener un token de actualización, agregue offline_access al ámbito.
Ejemplo de solicitud (Windows):
curl --location --request POST "https://vantage-eu.abbyy.com/auth2/connect/token" \
  --data-urlencode "code_verifier=code_verifier" \
  --data-urlencode "client_id=client_id" \
  --data-urlencode "client_secret=client_secret" \
  --data-urlencode "code=authorization code" \
  --data-urlencode "redirect_uri=external app redirect uri" \
  --data-urlencode "grant_type=authorization_code"
También disponible en otras regiones:
# Norteamérica
curl --location --request POST "https://vantage-us.abbyy.com/auth2/connect/token" \
  --data-urlencode "code_verifier=code_verifier" \
  --data-urlencode "client_id=client_id" \
  --data-urlencode "client_secret=client_secret" \
  --data-urlencode "code=authorization code" \
  --data-urlencode "redirect_uri=external app redirect uri" \
  --data-urlencode "grant_type=authorization_code"

# Australia
curl --location --request POST "https://vantage-au.abbyy.com/auth2/connect/token" \
  --data-urlencode "code_verifier=code_verifier" \
  --data-urlencode "client_id=client_id" \
  --data-urlencode "client_secret=client_secret" \
  --data-urlencode "code=authorization code" \
  --data-urlencode "redirect_uri=external app redirect uri" \
  --data-urlencode "grant_type=authorization_code"
Ejemplo de solicitud (Linux):
curl --location --request POST 'https://vantage-eu.abbyy.com/auth2/connect/token' \
  --data-urlencode 'code_verifier=code_verifier' \
  --data-urlencode 'client_id=client_id' \
  --data-urlencode 'client_secret=client_secret' \
  --data-urlencode 'code=authorization code' \
  --data-urlencode 'redirect_uri=external app redirect uri' \
  --data-urlencode 'grant_type=authorization_code'
También disponible en otras regiones:
# Norteamérica
curl --location --request POST 'https://vantage-us.abbyy.com/auth2/connect/token' \
  --data-urlencode 'code_verifier=code_verifier' \
  --data-urlencode 'client_id=client_id' \
  --data-urlencode 'client_secret=client_secret' \
  --data-urlencode 'code=authorization code' \
  --data-urlencode 'redirect_uri=external app redirect uri' \
  --data-urlencode 'grant_type=authorization_code'

# Australia
curl --location --request POST 'https://vantage-au.abbyy.com/auth2/connect/token' \
  --data-urlencode 'code_verifier=code_verifier' \
  --data-urlencode 'client_id=client_id' \
  --data-urlencode 'client_secret=client_secret' \
  --data-urlencode 'code=authorization code' \
  --data-urlencode 'redirect_uri=external app redirect uri' \
  --data-urlencode 'grant_type=authorization_code'
La respuesta del servidor a su solicitud contendrá el token de acceso:
{
  "id_token": "<redacted>",
  "access_token": "<redacted>",
  "expires_in": 86400,
  "token_type": "Bearer",
  "refresh_token": "<redacted>",
  "scope": "openid permissions global.wildcard offline_access legacy.client"
}
Para obtener más información sobre el flujo de código de autorización, visita este enlace. Para cada flujo, la clave access_token contiene el token, mientras que la clave expires_in indica en cuántos segundos vencerá. De forma predeterminada, la vida útil del token de acceso es de 24 horas (para obtener más información, consulta Token lifetimes). Agrega el siguiente encabezado de autorización a todas tus solicitudes y reemplaza token por el valor que recibiste:
-H "Authorization: Bearer token"
Tenga en cuenta que puede obtener varios tokens con la misma cuenta. Para más información sobre el token de autorización, consulte este enlace.

Obtención del token de renovación

Si la opción Allow issuing refresh tokens to refresh access tokens se activó al configurar el cliente de Vantage API y la solicitud para obtener el token de acceso incluía el parámetro scope=openid permissions global.wildcard offline_access, también recibirá un token de renovación adicional en la respuesta. Una vez que tenga un token de renovación, puede renovar el token de acceso mediante una solicitud POST al endpoint de token con los siguientes parámetros:
ParameterDescription
client_idEl identificador de la aplicación.
client_secretUna clave segura de la aplicación.
refresh_tokenSu token de renovación obtenido del servidor.
grant_type=refresh_tokenEspecifica que se utiliza el tipo de concesión de token de renovación.
Solicitud de ejemplo (Windows):
curl --location --request POST "https://vantage-eu.abbyy.com/auth2/connect/token" \
  --data-urlencode "client_id=client_id" \
  --data-urlencode "client_secret=client_secret" \
  --data-urlencode "refresh_token=refresh_token" \
  --data-urlencode "grant_type=refresh_token"
También disponible para otras regiones y para Linux con comandos equivalentes.

Vigencia de los tokens

Los tokens de acceso y de actualización están configurados con las siguientes vigencias:
  • Vigencia del token de acceso: 24 horas. Período durante el cual el token de acceso emitido es válido.
  • Vigencia del token de actualización: 30 días. Tras la autenticación inicial, se emite un token de actualización junto con el primer token de acceso. Mientras el token de actualización esté activo, puede usarse para obtener nuevos tokens de acceso. El token de actualización no puede ampliarse. Solo puede obtenerse uno nuevo mediante la reautenticación.