직접 관리 Azure API Management REST API에 인증

이 가이드에서는 직접 관리 Azure API Management REST API를 호출하는 데 필요한 SAS 토큰(액세스 토큰)을 만드는 방법을 설명합니다.

직접 관리 REST API에 액세스하기 위한 권한 부여 및 기타 필수 구성 요소에 대한 자세한 내용은 직접 관리 API Management REST API를 참조하세요.

중요

SAS 토큰 액세스는 직접 관리 API 호출에만 적용할 수 있습니다(예: https://apim-instance.management.azure-api.net/ /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis?api-version=2021-08-01). Azure Resource Manager 대한 API 호출에는 사용할 수 없습니다.

수동으로 SAS 토큰 만들기

  1. Azure Portal에서 Azure API Management 인스턴스를 찾습니다.

  2. 왼쪽 메뉴의 배포 + 인프라 섹션에서 관리 API를 선택합니다.

    Azure Portal 관리 API를 선택합니다.

  3. API MANAGEMENT REST API 사용에서 예를 선택합니다.

    중요

    API Management REST API 사용을 선택하지 않으면 해당 서비스 instance 대한 REST API에 대한 호출이 실패합니다.

    Azure Portal API Management API 사용

  4. Expiry 텍스트 상자에 액세스 토큰의 만료 날짜 및 시간을 지정합니다. 이 값은 MM/DD/YYYY H:MM PM|AM 형식이어야 합니다.

    Azure Portal API Management REST API에 대한 액세스 토큰 생성

  5. 비밀 키 드롭다운 목록에서 기본 키 또는 보조 키를 선택합니다. 이러한 키는 동일한 액세스 권한을 제공하지만, 유연한 키 관리 전략이 가능하도록 두 개의 키가 제공됩니다.

  6. 생성을 선택하여 액세스 토큰을 만듭니다.

  7. 다음 예에 표시된 것처럼, 전체 액세스 토큰을 복사하여 API 관리 REST API에 대한 모든 요청의 Authorization 헤더에 제공합니다.

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

프로그래밍 방식으로 SAS 토큰 만들기

  1. 다음 형식으로 문자열-로그인을 생성합니다.

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

    여기서
    identifier- Azure API Management instance 관리 API 탭의 식별자 필드 값입니다(자세한 내용은 이전 섹션 참조).
    expiry - SAS 토큰의 원하는 만료 날짜입니다.

  2. 기본 키 또는 보조 키를 사용하여 서명할 문자열에 HMAC-SHA512 해시 함수를 적용하여 서명을 생성합니다.

  3. Base64는 반환된 서명 키를 인코딩합니다.

  4. 다음 형식을 사용하여 액세스 토큰을 만듭니다.

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

    예제:

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

  5. 다음 예에 표시된 것처럼, 이러한 값을 사용하여 API 관리 REST API에 대한 모든 요청에 Authorization 헤더를 만듭니다.

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

다음 예에서는 액세스 토큰을 생성하는 이전 단계를 보여 줍니다.

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

참고

두 SAS 토큰 형식은 모두 올바르고 허용됩니다.
SharedAccessSignature uid=53dd860e1b72ff0467030003&ex=2014-08-04T22:03:00.0000000Z&sn=ItH6scUyCazNKHULKA0Yv6T+Skk4bdVmLqcPPPdWoxl2n1+rVbhKlplFrqjkoUFRr0og4wjeDz4yfThC82OjfQ==

SharedAccessSignature integration&201808020500&aAsTE43MAbKMkZ6q83Z732IbzesfsaPEU404oUjQ4ZLE9iIXLz+Jj9rEctxKYw43SioCfdLaDq7dT8RQuBKc0w==

전체 샘플 코드는 API Management .NET REST API 샘플을 참조하세요.

다음 단계