Övning – Skapa prenumerationer i Azure API Management
Du kan använda Azure API Management-användargränssnittet i Azure-portalen för att skapa prenumerationer och hämta prenumerationsnycklar som kan användas i klientappar.
Anta att ditt väderföretag har beslutat sig för att göra sina väderdata tillgängliga för klienter som prenumererar och betalar för den här tjänsten. Det viktigaste kravet är att endast tillåta åtkomst till klienter som tilldelats en nyckel. Som ansvarig utvecklare måste du skapa en API-gateway. Du använder gatewayen för att publicera ett RESTful-väder-API som exponerar en OpenAPI-slutpunkt. Sedan skyddar du slutpunkten och allokerar en klientnyckel.
I den här lektionen kommer du att:
- Publicerar en RESTful-väder-API
- Distribuerar en API Management-gateway
- Exponerar väder-API:et via gateway-slutpunkten
- Begränsar åtkomsten baserat på en prenumerationsnyckel
Viktigt!
Du behöver en egen Azure-prenumeration för att utföra den här övningen, och avgifter kan tillkomma. Om du inte redan har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.
Distribuerar webb-API:et för väder
Du har utvecklat en .NET Core-app som returnerar väderinformation. Appen innehåller Swashbuckle för att skapa OpenAPI-dokumentation.
I syfte att spara tid börjar vi med att köra ett skript för hantering av API:et i Azure. Skriptet utför följande steg:
- Skapar en Azure App Service-plan på den kostnadsfria nivån
- Skapar ett webb-API i en Azure App Service som konfigurerats för Git-distribution från en lokal lagringsplats
- Anger autentiseringsuppgifter på kontonivån för distribution av appen
- Konfigurera Git lokalt
- Distribuera vårt webb-API till vår App Service-instans
Logga in på Azure-portalen.
I Aktivitetsfältet i Azure väljer du Cloud Shell-ikonen för att öppna Azure Cloud Shell.
Kör följande git-kloningskommando i Azure Cloud Shell för att klona lagringsplatsen som innehåller källan för vår app och vårt installationsskript från GitHub.
git clone https://github.com/MicrosoftDocs/mslearn-control-authentication-with-apim.git
Gå till lagringsplatsens mappkatalog lokalt genom att köra följande cd-kommando.
cd mslearn-control-authentication-with-apim
Som namnet antyder
setup.sh
är skriptet du kör för att skapa vårt API. Den genererar en offentlig webbapp som exponerar ett OpenAPI-gränssnitt.bash setup.sh
Skriptet har sju delar och det tar ungefär en minut att köra. Observera att under distributionen installeras alla beroenden som krävs för att vår app ska köras automatiskt på den fjärranslutna App Service.
När skriptet är klart matar det ut två URL:er, en Swagger-URL och en Exempel-URL. Du kan använda dessa URL:er för att testa appdistributionen.
Om du vill testa att vår app har distribuerats korrekt kopierar och klistrar du in Swagger-URL:en från Azure Cloud Shell-utdata i din favoritwebbläsare. Webbläsaren bör visa Swagger-användargränssnittet för vår app och deklarera följande RESTful-slutpunkter:
- api/weather/{latitude}/{longitude}, som returnerar meteorologiska data för den aktuella dagen med tanke på den angivna latitud och longitud (dubbla värden).
- api/weather/{date}/{latitude}/{longitude}, som returnerar meteorologiska data för den angivna dagen (datumvärde) vid den angivna latituden och longituden (dubbla värden).
Kopiera och spara slutligen exempel-URL:en från Azure Cloud Shell-utdata. Den här platsen är Swagger JSON-URL:en. Du behöver det senare i den här övningen.
Distribuera en API-gateway
Nästa steg i den här övningen är att skapa en API-gateway i Azure-portalen. I nästa övning använder du den här gatewayen för att publicera ditt API.
Logga in på Azure-portalen.
Välj Skapa en resurs under Azure-tjänster på Azure-resursmenyn eller på sidan Start. Fönstret Skapa en resurs visas.
I resursmenyn väljer du Integrering och i resultatet väljer du API Management. Fönstret Installera API Management-gateway visas.
På fliken Grundläggande anger du följande värden för varje inställning.
Inställning Värde Projektinformation Prenumeration Välj din prenumeration. Resursgrupp Välj en ny eller befintlig resursgrupp. En resursgrupp är en logisk container som innehåller relaterade resurser för en Azure-lösning. Instansinformation Region Välj en tillgänglig region. Resursnamn Ange apim-WeatherData<random number>
. Det slumpmässiga talet är att se till att namnet är globalt unikt. Anteckna det här resursnamnet. det är api-gatewaynamnet som du behöver senare i den här övningen.Namn på arbetsyta Ange Weather-Company
.E-postadress för administratör E-postadressen för att ta emot alla systemaviseringar. Prisnivå Prisnivå I listrutan väljer du Consumption
.Välj Granska + skapa och när valideringen har godkänts väljer du Skapa.
Kommentar
Förbrukningsnivån ger snabb distribution för testning och har en prismodell för att betala för användning. Den övergripande API-hanteringsupplevelsen liknar de andra prisnivåerna.
Du kan visa distributionens förlopp tillsammans med de resurser som skapas.
Importera API:t
När distributionen har slutförts importerar du Väder-API:et till API Management-gatewayen med hjälp av följande procedur.
Välj Gå till resurs. Fönstret Översikt för API Management-tjänsten för din resurs visas.
I det vänstra menyfönstret går du till API:er och väljer API:er. FÖNSTRET API:er för API Management-tjänsten visas med mallval för att skapa/visa ett API.
Under Skapa från definition väljer du OpenAPI. Dialogrutan Skapa från OpenAPI-specifikation visas.
I fältet OpenAPI-specifikation klistrar du in Swagger JSON-URL:en som du sparade tidigare i övningen. När du trycker på Retur eller väljer ett annat område i dialogrutan fylls andra fält i åt dig. Dessa data har importerats från OpenAPI-specifikationen som Swagger skapade.
Acceptera standardinställningarna för alla andra inställningar och välj sedan Skapa.
Fliken Design i API:et väderdata visar alla åtgärder, som består av två GET-åtgärder.
Lägga till en prenumeration för att få åtkomst till väder-API
Det sista steget är att lägga till en prenumerationsnyckel för API:et väderdata.
I det vänstra menyfönstret går du till API:er och väljer Prenumerationer. Fönstret Prenumerationer för API Management-tjänsten visas.
På den översta menyraden väljer du Lägg till prenumeration. Fönstret Ny prenumeration visas.
Ange följande värden för varje inställning.
Inställning Värde Namn weather-data-subscription
Visningsnamn Weather Data Subscription
Tillåt spårning Ingen markering Definitionsområde I listrutan väljer du API. API I listrutan väljer du Väderdata. Välj Skapa. I fönstret Prenumerationer visas två prenumerationer, en inbyggd all-access-prenumeration och din Weather Data-prenumeration.
I slutet av raden Väderdataprenumeration väljer du ellipsen och i snabbmenyn väljer du Visa/dölj nycklar. Värdena för primär och sekundär nyckel visas.
Kopiera primärnyckeln från väderdataprenumerationen till Urklipp och spara den i något som liknar Anteckningar. Du behöver den här nyckeln i nästa steg.
Testa prenumerationsnyckeln
API:et skyddas med en nyckel. Nu ska vi testa API:et utan och med nyckeln för att demonstrera säker åtkomst.
Gör en begäran utan att skicka en prenumerationsnyckel. Kör följande cURL-kommando i Azure Cloud Shell. Ersätt platshållaren [Namn på gateway] med resursnamnet för API-gatewayen (apim-WeatherDataNNNN) som du skapade i föregående uppgift.
curl -X GET https://[Name Of Gateway].azure-api.net/api/Weather/53/-1
Det här kommandot har ingen prenumerationsnyckel och bör returnera felet 401 Åtkomst nekad, ungefär som följande.
{ "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }
Kör nu följande kommando. Ersätt platshållaren Namn på gateway med resursnamnet för API-gatewayen (apim-WeatherDataNNNN). Ersätt även platshållaren primärnyckel med den primära nyckel som du kopierade från steget visa/dölj.
curl -X GET https://[Name Of Gateway].azure-api.net/api/Weather/53/-1 \ -H 'Ocp-Apim-Subscription-Key: [Primary Key]'
Om du har inkluderat den avslutande offerten bör det här kommandot resultera i ett lyckat svar som liknar följande kod.
{"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}