Authentifizieren bei der azure-API Management-REST-API für die direkte Verwaltung

In diesem Leitfaden wird beschrieben, wie Sie das Zugriffstoken (SAS-Token) erstellen, das erforderlich ist, um Aufrufe an die azure API Management-REST-API für die direkte Verwaltung zu tätigen.

Weitere Informationen zur Autorisierung und anderen Voraussetzungen für den Zugriff auf die REST-API für die direkte Verwaltung finden Sie unter Direkte Verwaltung API Management REST-API.

Wichtig

Der SAS-Tokenzugriff kann nur für API-Aufrufe der direkten Verwaltung angewendet werden, z. B.: https://apim-instance.management.azure-api.net/ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2021-08-01. Sie können es nicht für API-Aufrufe von Azure Resource Manager verwenden.

Manuelles Erstellen eines SAS-Tokens

  1. Navigieren Sie im Azure-Portal zu Ihrer Azure API Management-Instanz.

  2. Wählen Sie im Menü auf der linken Seite im Abschnitt Bereitstellung + Infrastruktur die Option Verwaltungs-API aus.

    Wählen Sie im Azure-Portal Verwaltungs-API aus.

  3. Wählen Sie unter Aktivieren API Management REST-API die Option Ja aus.

    Wichtig

    Wenn API Management REST-API aktivieren nicht ausgewählt ist, schlagen Aufrufe der REST-API für diesen Dienst instance fehl.

    Aktivieren API Management API im Azure-Portal

  4. Geben Sie Ablaufdatum und -Uhrzeit für das Zugriffstoken in das Textfeld Ablaufzeit ein. Dieser Wert muss im Format MM/DD/YYYY H:MM PM|AM angegeben werden.

    Generieren eines Zugriffstokens für API Management REST-API im Azure-Portal

  5. Wählen Sie entweder den Primärschlüssel oder den sekundären Schlüssel in der Dropdownliste Geheimer Schlüssel aus. Beide Schlüssel bieten einen gleichwertigen Zugriff. Die Angabe von zwei Schlüsseln ermöglicht flexiblere Schlüsselverwaltungsstrategien.

  6. Wählen Sie Generieren aus, um das Zugriffstoken zu erstellen.

  7. Kopieren Sie das gesamte Zugriffstoken und verwenden Sie es im Authorization-Header für alle Anfragen an die API-Verwaltungs-REST-API, wie im folgenden Beispiel gezeigt.

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

Programmgesteuertes Erstellen eines SAS-Tokens

  1. Erstellen Sie eine Zeichenzeichenfolge im folgenden Format:

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

    Dabei gilt:
    identifier– der Wert des Felds Bezeichner auf der Registerkarte Verwaltungs-API Ihres Azure API Management instance (Details finden Sie im vorherigen Abschnitt).
    expiry – Gewünschtes Ablaufdatum des SAS-Tokens.

  2. Generieren Sie eine Signatur, indem Sie eine HMAC-SHA512-Hashfunktion entweder mit dem primären oder dem sekundären Schlüssel auf die StringToSign-Zeichenfolge anwenden.

  3. Codieren Sie den zurückgegebenen Signaturschlüssel mit Base64.

  4. Erstellen Sie ein Zugriffstoken im folgenden Format.

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

    Beispiel:

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

  5. Verwenden Sie diese Werte zur Erstellung des Authorization-Headers für alle Anfragen an die API-Verwaltungs-REST-API, wie im folgenden Beispiel gezeigt.

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

Das folgende Beispiel demonstriert die hier beschriebenen Schritte zur Erstellung des Zugriffstokens.

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

Hinweis

Beide SAS-Tokenformate sind richtig und werden akzeptiert:
SharedAccessSignature uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==
und
SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==

Den vollständigen Beispielcode finden Sie im Beispiel für API Management .NET-REST-API.

Nächste Schritte