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
Gå till din Azure API Management-instans i Azure Portal.
Välj Hanterings-API i avsnittet Distribution + infrastruktur på menyn till vänster.
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.
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
.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.
Välj Generera för att skapa åtkomsttoken.
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
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.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.
Base64 kodar den returnerade signaturnyckeln.
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==
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.