Aracılığıyla paylaş


Doğrudan yönetim Azure API Management REST API'sinde kimlik doğrulaması

Bu kılavuzda, doğrudan yönetim Azure API Management REST API'sine çağrı yapmak için gereken erişim belirtecinin (SAS belirteci) nasıl oluşturulacağı açıklanır.

Doğrudan yönetim REST API'sine erişim için yetkilendirme ve diğer önkoşullar hakkında daha fazla bilgi için bkz. Doğrudan yönetim API Management REST API.

Önemli

SAS belirteci erişimi yalnızca doğrudan yönetim API'leri çağrıları için uygulanabilir, örneğin: https://apim-instance.management.azure-api.net/ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2021-08-01. Bunu Azure Resource Manager API çağrıları için kullanamazsınız.

SAS belirtecini el ile oluşturma

  1. Azure portal Azure API Management örneğine gidin.

  2. Sol taraftaki menünün Dağıtım + altyapı bölümünde Yönetim API'sini seçin.

    Azure portal Yönetim API'sini seçin

  3. API Management REST API'sini etkinleştir bölümünde Evet'i seçin.

    Önemli

    API MANAGEMENT REST API'sini etkinleştir seçili değilse, bu hizmet örneği için REST API'ye yapılan çağrılar başarısız olur.

    Azure portal API Management API'sini etkinleştirme

  4. Süre sonu metin kutusunda erişim belirtecinin son kullanma tarihini ve saatini belirtin. Bu değer biçiminde MM/DD/YYYY H:MM PM|AMolmalıdır.

    Azure portal API Management REST API için erişim belirteci oluşturma

  5. Gizli anahtar açılan listesinde birincil anahtarı veya ikincil anahtarı seçin. Anahtarlar eşdeğer erişim sağlar; esnek anahtar yönetimi stratejilerini etkinleştirmek için iki anahtar sağlanır.

  6. Erişim belirtecini oluşturmak için Oluştur'u seçin.

  7. Tam erişim belirtecini kopyalayın ve aşağıdaki örnekte gösterildiği gibi API Management REST API'sine yapılan her isteğin üst bilgisinde sağlayınAuthorization.

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

Program aracılığıyla SAS belirteci oluşturma

  1. Aşağıdaki biçimde bir dize-oturum açma oluşturun:

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

    burada:
    identifier- Azure API Management örneğinizin Yönetim API'si sekmesindeki Tanımlayıcı alanının değeri (ayrıntılar için önceki bölüme bakın).
    expiry - SAS belirtecinin istenen süre sonu tarihi.

  2. Birincil veya ikincil anahtarı kullanarak imza dizesine HMAC-SHA512 karma işlevi uygulayarak imza oluşturun.

  3. Base64, döndürülen imza anahtarını kodlar.

  4. Aşağıdaki biçimi kullanarak bir erişim belirteci oluşturun.

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

    Örnek:

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

  5. Aşağıdaki örnekte gösterildiği gibi, API Management REST API'sine yapılan her istekte üst Authorization bilgi oluşturmak için bu değerleri kullanın.

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

Aşağıdaki örnek, erişim belirtecini oluşturmak için önceki adımları gösterir.

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

Not

Her iki SAS belirteci biçimi de doğru ve kabul edilir:
SharedAccessSignature uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==
ve
SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==

Örnek kodun tamamı için bkz. API Management .NET REST API Örneği.

Sonraki adımlar