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
Azure portal Azure API Management örneğine gidin.
Sol taraftaki menünün Dağıtım + altyapı bölümünde Yönetim API'sini seçin.
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.
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|AM
olmalıdır.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.
Erişim belirtecini oluşturmak için Oluştur'u seçin.
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ın
Authorization
.Authorization: SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==
Program aracılığıyla SAS belirteci oluşturma
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.Birincil veya ikincil anahtarı kullanarak imza dizesine HMAC-SHA512 karma işlevi uygulayarak imza oluşturun.
Base64, döndürülen imza anahtarını kodlar.
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==
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.