Autentisera till Azure API Management REST API för direkthantering

Den här guiden beskriver hur du skapar den åtkomsttoken (SAS-token) som krävs för att göra anrop till Azure API Management REST API för direkthantering.

Mer information om auktorisering och andra krav för åtkomst till REST API för direkthantering finns i Direct Management API Management REST API.

Viktigt

SAS-tokenåtkomst kan endast användas för API-anrop för direkthantering, till exempel: https://apim-instance.management.azure-api.net/ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2021-08-01. Du kan inte använda den för API-anrop till Azure Resource Manager.

Skapa en SAS-token manuellt

  1. Gå till din Azure API Management-instans i Azure Portal.

  2. Välj Hanterings-API i avsnittet Distribution + infrastruktur på menyn till vänster.

    Välj Hanterings-API i Azure Portal

  3. I Aktivera API Management REST API väljer du Ja.

    Viktigt

    Om Aktivera API Management REST API inte har valts misslyckas anrop till REST-API:et för den tjänstinstansen.

    Aktivera API Management API i Azure Portal

  4. Ange förfallodatum och tid för åtkomsttoken i textrutan Förfallodatum . Det här värdet måste ha formatet MM/DD/YYYY H:MM PM|AM.

    Generera åtkomsttoken för API Management REST API i Azure Portal

  5. Välj antingen primärnyckeln eller den sekundära nyckeln i listrutan Hemlig nyckel . Nycklarna ger motsvarande åtkomst. två nycklar tillhandahålls för att möjliggöra flexibla nyckelhanteringsstrategier.

  6. Välj Generera för att skapa åtkomsttoken.

  7. Kopiera den fullständiga åtkomsttoken och ange den Authorization i rubriken för varje begäran till API Management REST API, som du ser i följande exempel.

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

Skapa en SAS-token programmatiskt

  1. Skapa en sträng-till-inloggning i följande format:

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

    där:
    identifier– värdet för fältet Identifierare på fliken Hanterings-API i din Azure API Management-instans (mer information finns i föregående avsnitt).
    expiry – önskat utgångsdatum för SAS-token.

  2. Generera en signatur genom att använda en HMAC-SHA512-hashfunktion på sträng-till-signera med antingen den primära eller sekundära nyckeln.

  3. Base64 kodar den returnerade signaturnyckeln.

  4. Skapa en åtkomsttoken med följande format.

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

    Exempel:

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

  5. Använd dessa värden för att skapa en Authorization rubrik i varje begäran till API Management REST API, som du ser i följande exempel.

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

I följande exempel visas föregående steg för att generera åtkomsttoken.

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);   
        }   
    }   
}  
  

Anteckning

Båda SAS-tokenformaten är korrekta och accepterade:
SharedAccessSignature uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==
och
SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==

Fullständig exempelkod finns i API Management .NET REST API-exempel.

Nästa steg