Dotcom-Monitor admite la supervisión de los servicios de api REST protegidos por el protocolo OAuth. En este artículo mostraremos cómo configurar un dispositivo de supervisión para los casos en que el servidor de autenticación de destino devuelve un token de acceso de tipo portador.

En general, la configuración incluirá los siguientes pasos:

  1. Envíe una solicitud de token al punto de conexión de OAuth2 para obtener un token de portador (HTTP Post).
  2. Recupere el token de portador de la respuesta del servidor.
  3. Envíe una solicitud al punto de conexión de api mediante el token de acceso guardado.

Supongamos que el servicio web ofrece el tipo de concesión de élient éredentials cuando se usan las credenciales del cliente en lugar de las del propietario del recurso. No se necesita código de autorización en este caso para realizar una solicitud de token de acceso al servidor de autorización.

En el primer paso, para especificar la solicitud de token al servidor de autorización, necesitamos proporcionar los siguientes atributos de cuerpo de solicitud en el campo Registrar datos:

  • client_id – el identificador de la aplicación, emitido en el primer registro de la aplicación en el servidor de autorización.
  • client_secret – emitido en el primer registro de su solicitud en el servidor de autorización.
  • grant_type – debe establecerse en “client_credentials“.

Además, se recomienda especificar “access_token” como palabra clave en el campo Validación de contenido para validar la respuesta del servidor.

 

Una vez que se ha recibido la respuesta del servidor con el token de acceso, el segundo paso es la configuración de tareas de disponibilidad de API.

Si el servidor de autenticación devuelve el token de acceso de tipo portador, se puede usar el siguiente script para recuperar el token en la sección Preparar script:

string access_token;
string TokenAuthorization;

// get the authorization response from the first task
string json = (Tasks["AuthToken"] as Http).body["//*"];

//retrieve the access token from the response body
access_token = "";
if(json.IndexOf("access_token\"") != -1) access_token = json.Substring(json.IndexOf("access_token\"") + "access_token\"".Length);
if(json.IndexOf("\"") != -1) access_token = access_token.Substring(access_token.IndexOf("\"") + 1);
if(json.IndexOf("\"") != -1) access_token = access_token.Substring(0, access_token.IndexOf("\""));

//set the TokenAuthorization variable 
TokenAuthorization = "Bearer" + access_token;

El tipo de token se especifica explícitamente en el script aquí.