Uwierzytelnianie w bezpośrednim zarządzaniu interfejsem API REST platformy Azure API Management

W tym przewodniku opisano sposób tworzenia tokenu dostępu (tokenu SAS) wymaganego do wykonywania wywołań do bezpośredniego zarządzania interfejsem API REST usługi Azure API Management.

Aby uzyskać więcej informacji na temat autoryzacji i innych wymagań wstępnych dotyczących uzyskiwania dostępu do interfejsu API REST zarządzania bezpośredniego, zobacz Bezpośrednie zarządzanie API Management interfejsu API REST.

Ważne

Dostęp do tokenu SAS można stosować tylko w przypadku wywołań interfejsu API zarządzania bezpośredniego, na przykład: https://apim-instance.management.azure-api.net/ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2021-08-01. Nie można jej używać do wywołań interfejsu API do usługi Azure Resource Manager.

Ręczne tworzenie tokenu sygnatury dostępu współdzielonego

  1. Przejdź do wystąpienia usługi Azure API Management w Azure Portal.

  2. Wybierz pozycję Interfejs API zarządzania w sekcji Wdrażanie i infrastruktura w menu po lewej stronie.

    Wybierz pozycję Interfejs API zarządzania w Azure Portal

  3. W obszarze Włącz interfejs API REST API Management wybierz pozycję Tak.

    Ważne

    Jeśli nie wybrano opcji Włącz API Management interfejsu API REST, wywołania interfejsu API REST dla tego wystąpienia usługi nie powiedzą się.

    Włączanie interfejsu API API Management w Azure Portal

  4. Określ datę i godzinę wygaśnięcia tokenu dostępu w polu tekstowym Wygaśnięcie . Ta wartość musi być w formacie MM/DD/YYYY H:MM PM|AM.

    Generowanie tokenu dostępu dla interfejsu API REST API Management w Azure Portal

  5. Wybierz klucz podstawowy lub klucz pomocniczy na liście rozwijanej Klucz tajny . Klucze zapewniają równoważny dostęp; Dostępne są dwa klucze umożliwiające elastyczne strategie zarządzania kluczami.

  6. Wybierz pozycję Generuj, aby utworzyć token dostępu.

  7. Skopiuj pełny token dostępu i podaj go w Authorization nagłówku każdego żądania do interfejsu API REST API Management, jak pokazano w poniższym przykładzie.

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

Programowe tworzenie tokenu SAS

  1. Skonstruuj ciąg do logowania w następującym formacie:

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

    gdzie:
    identifier— wartość pola Identyfikator na karcie Interfejs API zarządzania wystąpienia usługi Azure API Management (zobacz poprzednią sekcję, aby uzyskać szczegółowe informacje).
    expiry — żądana data wygaśnięcia tokenu SAS.

  2. Wygeneruj podpis, stosując funkcję skrótu HMAC-SHA512 do znaku ciągu przy użyciu klucza podstawowego lub pomocniczego.

  3. Base64 koduje zwrócony klucz podpisu.

  4. Utwórz token dostępu przy użyciu następującego formatu.

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

    Przykład:

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

  5. Użyj tych wartości, aby utworzyć Authorization nagłówek w każdym żądaniu do interfejsu API REST API Management, jak pokazano w poniższym przykładzie.

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

W poniższym przykładzie przedstawiono poprzednie kroki generowania tokenu dostępu.

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

Uwaga

Oba formaty tokenów SAS są poprawne i akceptowane:
SharedAccessSignature uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==
oraz
SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==

Aby uzyskać pełny przykładowy kod, zobacz przykład API Management interfejsu API REST platformy .NET.

Następne kroki