연습 - Azure API Management에서 구독 만들기

완료됨

Azure Portal에서 Azure API Management 사용자 인터페이스를 사용하여 구독을 생성하고 클라이언트 앱에서 사용할 구독 키를 얻을 수 있습니다.

기상 회사가 이 서비스를 구독하고 비용을 지불하는 고객에게 기상 데이터를 제공하기로 했다고 가정합니다. 중요한 요구 사항은 키가 할당된 클라이언트에만 액세스할 수 있도록 하는 것입니다. 리드 개발자의 경우 API 게이트웨이를 만들어야 합니다. 게이트웨이를 사용하여 OpenAPI 엔드포인트를 노출하는 RESTful Weather API를 게시합니다. 그런 다음, 엔드포인트를 보호하고 클라이언트 키를 할당합니다.

이 단원에서는 다음을 수행합니다.

  • RESTful Weather API 게시
  • API Management 게이트웨이 배포
  • 게이트웨이 엔드포인트를 통해 Weather API 노출
  • 구독 키에 따라 액세스 제한

중요

이 연습을 수행하려면 사용자의 Azure 구독이 필요하며 요금이 발생할 수 있습니다. Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

Weather Web API 배포

여러분은 지금까지 날씨 정보를 반환하는 .NET Core 앱을 개발했습니다. 이 앱에는 OpenAPI 설명서를 생성하는 Swashbuckle이 포함되어 있습니다.

시간 절약을 위해 Azure에서 API를 호스트하는 스크립트를 실행하여 시작해 보겠습니다. 스크립트에서 수행하는 단계는 다음과 같습니다.

  • 체험 계층에서 Azure App Service 계획 만들기
  • 로컬 리포지토리에서 Git을 배포하도록 구성된 Azure App Service 내에서 웹 API 만들기
  • 앱에 대한 계정 수준 배포 자격 증명 설정
  • 로컬로 Git 구성
  • Web API를 App Service 인스턴스에 배포
  1. Azure Portal에 로그인합니다.

  2. Azure 작업 표시줄에서 Cloud Shell 아이콘을 선택하여 Azure Cloud Shell을 엽니다.

    Screenshot of Cloud Shell icon in taskbar.

  3. Azure Cloud Shell에서 다음 git clone 명령을 실행하여 앱의 원본과 GitHub의 설정 스크립트를 포함하는 리포지토리를 복제합니다.

    git clone https://github.com/MicrosoftDocs/mslearn-control-authentication-with-apim.git
    
  4. 다음 cd 명령을 실행하여 로컬에서 리포지토리 폴더 디렉터리로 이동합니다.

    cd mslearn-control-authentication-with-apim
    
  5. setup.sh는 그 이름에서 알 수 있듯이 API를 만들기 위해 실행할 스크립트입니다. 그러면 OpenAPI 인터페이스를 공개하는 퍼블릭 웹앱이 생성됩니다.

    bash setup.sh
    

    스크립트는 7개의 부분으로 구성되며 실행하는 데 약 1분이 걸립니다. 배포하는 동안 앱을 실행하는 데 필요한 모든 종속성이 원격 App Service에 자동으로 설치되는지 확인합니다.

    스크립트가 완료되면 두 개의 URL(Swagger URL 및 예제 URL)가 출력됩니다. 해당 URL을 사용하여 앱 배포를 테스트할 수 있습니다.

  6. 앱이 올바르게 배포되었는지 테스트하려면 Azure Cloud Shell 출력의 Swagger URL을 복사하여 즐겨 찾는 브라우저에 붙여 넣습니다. 브라우저에서는 앱에 대한 Swagger UI를 표시하고 다음 RESTful 엔드포인트를 선언합니다.

    • api/weather/{latitude}/{longitude}는 지정된 위도와 경도(이중 값)에서 현재 날짜에 대한 기상 데이터를 반환합니다.
    • api/weather/{date}/{latitude}/{longitude}는 지정된 위도와 경도(이중 값)에서 특정 날짜(날짜 값)에 대한 기상 데이터를 반환합니다.

    Swagger view.

  7. 마지막으로, Azure Cloud Shell 출력에서 예제 URL을 복사하고 저장합니다. 이 위치는 Swagger JSON URL입니다. 이 연습에서는 나중에 필요합니다.

API 게이트웨이 배포

이 연습의 다음 단계는 Azure Portal에서 API 게이트웨이를 만드는 것입니다. 다음 연습에서는 이 게이트웨이를 사용하여 API를 게시합니다.

  1. Azure Portal에 로그인합니다.

  2. Azure 리소스 메뉴 또는 페이지의 Azure 서비스에서 리소스 만들기를 선택합니다. 리소스 만들기 창이 나타납니다.

  3. 리소스 메뉴에서 통합을 선택하고 결과에서 API Management를 선택합니다. API Management 게이트웨이 설치 창이 나타납니다.

  4. 기본 탭에서 각 설정에 다음 값을 입력합니다.

    설정
    프로젝트 세부 정보
    Subscription 구독을 선택합니다.
    리소스 그룹 신규 또는 기존 리소스 그룹을 선택합니다. 리소스 그룹은 Azure 솔루션 관련 리소스를 보관하는 논리 컨테이너입니다.
    인스턴스 세부 정보
    지역 사용 가능한 지역을 선택합니다.
    리소스 이름 apim-WeatherData<random number>를 입력합니다. 난수는 이름이 전역적으로 고유한지 확인하기 위한 것입니다. 이 리소스 이름은 연습의 후반부에서 필요한 API 게이트웨이 이름이니 기록해 두세요.
    작업 영역 이름 Weather-Company를 입력합니다.
    관리자 메일 모든 시스템 알림을 수신하는 이메일 주소입니다.
    가격 책정 계층
    가격 책정 계층 드롭다운 목록에서 Consumption을 선택합니다.
  5. 검토 + 만들기를 선택하고 유효성 검사를 통과한 후에 만들기를 선택합니다.

    참고

    사용량 계층은 테스트를 위한 빠른 배포를 제공하며 사용량에 따른 가격 책정 모델이 적용됩니다. 전반적인 API 관리 환경은 다른 가격 책정 계층과 유사합니다.

생성되는 리소스와 함께 배포 진행 상황을 볼 수 있습니다.

API 가져오기

배포가 완료되면 다음 절차를 사용해 Weather API를 API Management 게이트웨이로 가져옵니다.

  1. 리소스로 이동을 선택합니다. 리소스에 대한 API Management 서비스의 개요 창이 나타납니다.

  2. 왼쪽 메뉴 창의 API에서 API를 선택합니다. API Management 서비스의 API 창이 API를 만들거나 표시하기 위한 템플릿 선택 항목과 함께 나타납니다.

  3. 정의에서 만들기에서 OpenAPI를 선택합니다. OpenAPI 사양에서 만들기 대화 상자가 나타납니다.

  4. OpenAPI 사양 필드에 연습의 앞부분에서 저장한 Swagger JSON URL을 붙여넣습니다. Enter 키를 누르거나 대화 상자의 다른 영역을 선택하는 경우 다른 필드들이 채워집니다. 이 데이터는 Swagger가 만든 OpenAPI 사양에서 가져옵니다.

  5. 다른 모든 설정은 기본값 그대로 두고 만들기를 선택합니다.

     Screenshot of dialog box with swagger.json url highlighted.

날씨 데이터 API의 디자인 탭에는 두 개의 가져오기 작업으로 구성된 모든 작업이 표시됩니다.

구독 키를 추가하여 Weather API에 액세스

마지막 단계는 날씨 데이터 API에 대한 구독 키를 추가하는 것입니다.

  1. 왼쪽 메뉴 창의 API에서 구독을 선택합니다. API Management 서비스의 구독 창이 나타납니다.

  2. 위쪽 메뉴 모음에서 구독 추가를 선택합니다. 새 구독 창이 나타납니다.

    Screenshot showing how to add a new subscription.

  3. 각 설정에 다음 값을 입력합니다.

    설정
    이름 weather-data-subscription
    표시 이름 Weather Data Subscription
    추적 허용 확인 표시 없음
    범위 드롭다운 목록에서 API를 선택합니다.
    API 드롭다운 목록에서 날씨 데이터를 선택합니다.
  4. 생성를 선택합니다. 구독 창에 두 개의 구독(‘기본 제공 모든 액세스 구독’ 및 ‘날씨 데이터 구독’)이 나열됩니다.

  5. 날씨 데이터 구독 행의 끝에서 줄임표를 선택한 다음, 상황에 맞는 메뉴에서 키 표시/숨기기를 선택합니다. 기본 및 보조 키 값이 표시됩니다.

  6. 날씨 데이터 구독에서 클립보드로 기본 키를 복사하고 메모장 같은 곳에 저장합니다. 이 키는 다음 단계에서 필요합니다.

구독 키 테스트

API는 키로 보호됩니다. 이번에는 API를 키가 있는 경우와 키가 없는 경우에서 테스트하여 보안 액세스를 시연하겠습니다.

  1. 구독 키를 전달하지 않고 요청을 합니다. Azure Cloud Shell에서 다음 cURL 명령을 실행합니다. [게이트웨이 이름] 자리 표시자를 이전 작업에서 생성한 API 게이트웨이(apim-WeatherDataNNNN) 리소스 이름으로 대체합니다.

    curl -X GET https://[Name Of Gateway].azure-api.net/api/Weather/53/-1
    

    이 명령에는 구독 키가 없어 다음과 유사한 401 액세스 거부 오류가 반환될 것입니다.

    { "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }
    
  2. 이제 다음 명령을 실행합니다. [게이트웨이 이름] 자리 표시자를 API 게이트웨이(apim-WeatherDataNNNN) 리소스 이름으로 대체합니다. 또한 기본 키 자리 표시자를 show/hide 단계에서 복사한 기본 키로 바꿉니다.

    curl -X GET https://[Name Of Gateway].azure-api.net/api/Weather/53/-1 \
      -H 'Ocp-Apim-Subscription-Key: [Primary Key]'
    

    닫는 따옴표를 넣은 경우, 이 명령을 실행하면 다음 코드와 유사한 응답이 나옵니다.

    {"mainOutlook":{"temperature":32,"humidity":34},"wind":{"speed":11,"direction":239.0},"date":"2019-05-16T00:00:00+00:00","latitude":53.0,"longitude":-1.0}