Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Poprzednia część: Wymagania dotyczące uwierzytelniania
W naszym przykładowym scenariuszu główna aplikacja korzysta z interfejsu API innej firmy zabezpieczonego przy użyciu klucza dostępu. W tej sekcji przedstawiono interfejs API korzystający z usługi Azure Functions, ale te same zasady mają zastosowanie niezależnie od tego, jak lub gdzie jest implementowany interfejs API — niezależnie od tego, czy aplikacja jest hostowana u innego dostawcy usług w chmurze, czy tradycyjnego serwera internetowego.
Kluczowym aspektem jest to, że wszystkie żądania klientów do chronionego punktu końcowego muszą zawierać klucz dostępu, którym aplikacja musi zarządzać bezpiecznie. Ta sekcja zawiera omówienie sposobu implementowania takiego interfejsu API przy użyciu usługi Azure Functions, ale można dostosować zasady do konkretnych potrzeb.
Przykładowa implementacja interfejsu API innej firmy
Przykładowy interfejs API innej firmy to prosty punkt końcowy, który zwraca liczbę losową z zakresu od 1 do 999. Interfejs API jest zabezpieczony przy użyciu klucza dostępu, który musi zostać podany w żądaniu dostępu do punktu końcowego. W celach demonstracyjnych ten interfejs API jest wdrażany w punkcie końcowym https://msdocs-example-api.azurewebsites.net/api/RandomNumber
. Aby wywołać interfejs API, należy jednak podać klucz d0c5atM1cr0s0ft
dostępu w parametrze ?code=
adresu URL lub we 'x-functions-key'
właściwości nagłówka HTTP. Na przykład po wdrożeniu aplikacji i interfejsu API wypróbuj ten adres URL w przeglądarce lub curl: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft
.
Jeśli klucz dostępu jest prawidłowy, punkt końcowy zwraca odpowiedź JSON zawierającą pojedynczą właściwość "value", która jest liczbą z zakresu od 1 do 999, na przykład {"value": 959}
.
Punkt końcowy jest implementowany w języku Python i wdrażany w usłudze Azure Functions. Kod jest następujący:
import logging
import random
import json
import azure.functions as func
def main(req: func.HttpRequest) -> func.HttpResponse:
logging.info('RandomNumber invoked via HTTP trigger.')
random_value = random.randint(1, 1000)
dict = { "value" : random_value }
return func.HttpResponse(json.dumps(dict))
W przykładowym repozytorium ten kod znajduje się w obszarze third_party_api/RandomNumber/__init__.py. Folder RandomNumber zawiera nazwę funkcji i __init__.py zawiera kod. Inny plik w folderze ,function.json, opisuje, kiedy funkcja jest wyzwalana. Inne pliki w folderze nadrzędnym third_party_api zawierają szczegółowe informacje dotyczące aplikacji funkcji platformy Azure, która hostuje samą funkcję.
Aby wdrożyć kod, skrypt aprowizacji przykładu wykonuje następujące kroki:
Utwórz konto magazynu zapasowego dla usługi Azure Functions za pomocą Azure CLI na potrzeby zarządzania stanem i operacjami wewnętrznymi.
Utwórz aplikację Azure Functions za pomocą polecenia Azure CLI.
az function app create
Po odczekaniu 60 sekund na pełną aprowizację hosta wdróż kod przy użyciu polecenia Azure Functions Core Tools ,
func azure functionapp publish
.Przypisz klucz dostępu ,
d0c5atM1cr0s0ft
do funkcji . (Zobacz Zabezpieczanie usługi Azure Functions, aby uzyskać informacje o kluczach dostępu funkcji).W skrywcie aprowizacji ten krok odbywa się przy użyciu polecenia az functionapp function keys set interfejsu wiersza polecenia platformy Azure.
Komentarze są dołączone, aby pokazać, jak wykonać ten krok poprzez wywołanie REST API API zarządzania kluczami Functions, jeśli masz taką ochotę. Aby wywołać ten interfejs API REST, należy najpierw wykonać inne wywołanie interfejsu API REST, aby pobrać klucz główny aplikacji funkcji.
Klucze dostępu można również przypisać za pośrednictwem witryny Azure Portal. Na stronie aplikacji Funkcje wybierz pozycję Funkcje, a następnie wybierz konkretną funkcję do zabezpieczenia (nazwaną RandomNumber
w tym przykładzie). Na stronie funkcji wybierz pozycję Klucze funkcji , aby otworzyć stronę, na której można utworzyć te klucze i zarządzać nimi.