Autenticación en la API REST de Administración directa de Azure API Management

En esta guía se describe cómo crear el token de acceso (token de SAS) necesario para realizar llamadas a la API REST de Azure API Management de administración directa.

Para obtener más información sobre la autorización y otros requisitos previos para acceder a la API rest de administración directa, consulte Administración directa API Management API REST.

Importante

El acceso al token de SAS solo se puede aplicar para las llamadas API de administración directa, por ejemplo: https://apim-instance.management.azure-api.net/ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2021-08-01. No se puede usar para las llamadas API a Azure Resource Manager.

Creación manual de un token de SAS

  1. Navegue a la instancia de Azure API Management en Azure Portal.

  2. Seleccione Api de administración en la sección Implementación e infraestructura del menú de la izquierda.

    Seleccione Api de administración en el Azure Portal

  3. En Habilitar API Management API REST, seleccione .

    Importante

    Si no se selecciona Habilitar API Management API REST, se producirá un error en las llamadas realizadas a la API REST para esa instancia de servicio.

    Habilitación de la API de API Management en el Azure Portal

  4. Especifique la fecha y la hora del token de acceso en la casilla Caducidad. Este valor debe tener el formato MM/DD/YYYY H:MM PM|AM.

    Generación de un token de acceso para API Management API REST en el Azure Portal

  5. Seleccione la clave principal o la clave secundaria en la lista desplegable Clave secreta . Las dos claves proporcionan el mismo acceso. Se ofrecen dos claves para flexibilizar las estrategias de administración de claves.

  6. Seleccione Generar para crear el token de acceso.

  7. Copie el token de acceso completo y proporciónelo en el encabezado Authorization de cada solicitud a la API REST de administración de API, como se muestra en el ejemplo siguiente.

    Authorization: SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==
    

Creación de un token de SAS mediante programación

  1. Construya una cadena para iniciar sesión con el formato siguiente:

    {identifier} + "\n" + {expiry}

    donde:
    identifier: el valor del campo Identificador de la pestaña API de administración de la instancia de Azure API Management (consulte la sección anterior para obtener más información).
    expiry : fecha de expiración deseada del token de SAS.

  2. Genere una firma aplicando una función hash HMAC-SHA512 al valor string-to-sign usando la clave principal o la secundaria.

  3. Codifique en Base64 la clave de firma devuelta.

  4. Cree un token de acceso con el formato siguiente.

    uid={identifier}&ex={expiry}&sn={Base64 encoded signature}

    Ejemplo:

    uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==

  5. Use estos valores para crear un encabezado Authorization en cada solicitud realizada a la API REST de administración de API, como se indica en el ejemplo siguiente.

    Authorization: SharedAccessSignature uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==
    

En el ejemplo siguiente se muestran los pasos anteriores para generar el token de acceso.

using System;   
using System.Text;   
using System.Globalization;   
using System.Security.Cryptography;   
  
public class Program   
{   
    public static void Main()   
    {   
        var id = "53d7e14aee681a0034030003";   
        var key = "pXeTVcmdbU9XxH6fPcPlq8Y9D9G3Cdo5Eh2nMSgKj/DWqeSFFXDdmpz5Trv+L2hQNM+nGa704Rf8Z22W9O1jdQ==";   
        var expiry = DateTime.UtcNow.AddDays(10);   
        using (var encoder = new HMACSHA512(Encoding.UTF8.GetBytes(key)))   
        {   
            var dataToSign = id + "\n" + expiry.ToString("O", CultureInfo.InvariantCulture);   
            var hash = encoder.ComputeHash(Encoding.UTF8.GetBytes(dataToSign));   
            var signature = Convert.ToBase64String(hash);   
            var encodedToken = string.Format("SharedAccessSignature uid={0}&ex={1:o}&sn={2}", id, expiry, signature);   
            Console.WriteLine(encodedToken);   
        }   
    }   
}  
  

Nota

Ambos formatos de token de SAS son correctos y aceptados:
SharedAccessSignature uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==
y
SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==

Para obtener código de ejemplo completo, consulte el ejemplo de API REST de .NET API Management.

Pasos siguientes