Zabezpieczanie interfejsów API przy użyciu subskrypcji
Podczas publikowania interfejsów API za pomocą usługi API Management łatwo i powszechnie zabezpieczać dostęp do tych interfejsów API przy użyciu kluczy subskrypcji. Deweloperzy, którzy muszą korzystać z opublikowanych interfejsów API, muszą uwzględnić prawidłowy klucz subskrypcji w żądaniach HTTP podczas wykonywania wywołań do tych interfejsów API. Brama usługi API Management odrzuca wywołania bez klucza subskrypcji, a wywołania nie są przekazywane do usług zaplecza.
Aby uzyskać klucz subskrypcji na potrzeby uzyskiwania dostępu do interfejsów API, wymagana jest subskrypcja. Subskrypcja jest zasadniczo nazwanym kontenerem dla pary kluczy subskrypcji. Deweloperzy, którzy muszą korzystać z opublikowanych interfejsów API, mogą uzyskiwać subskrypcje. Nie potrzebują zatwierdzenia od wydawców interfejsu API. Wydawcy interfejsów API mogą również tworzyć subskrypcje bezpośrednio dla użytkowników interfejsu API.
Uwaga
Usługa API Management obsługuje również inne mechanizmy zabezpieczania dostępu do interfejsów API, w tym: OAuth2.0, Certyfikaty klienta i Lista dozwolonych adresów IP.
Subskrypcje i klucze
Klucz subskrypcji to unikatowy, generowany automatycznie klucz, który można przekazać w nagłówkach żądania klienta lub w postaci parametru ciągu zapytania. Klucz ma bezpośredni związek z subskrypcją, która swoim zasięgiem może obejmować różne obszary. Subskrypcje zapewniają szczegółową kontrolę nad uprawnieniami i zasadami.
Dostępne są trzy następujące główne zakresy subskrypcji:
Scope | Szczegóły |
---|---|
Wszystkie interfejsy API | Ma zastosowanie do każdego interfejsu API dostępnego za pośrednictwem bramy |
Pojedynczy interfejs API | Ten zakres ma zastosowanie do jednego zaimportowanego interfejsu API i wszystkich jego punktów końcowych |
Rezultat | Produkt to zbiór składający się z jednego lub większej liczby interfejsów API, które można skonfigurować w usłudze API Management. Interfejsy API można przypisać do więcej niż jednego produktu. Produkty mogą mieć różne reguły dostępu, limity przydziałów użycia i warunki użytkowania. |
Aplikacje, które wywołują chroniony interfejs API, muszą dołączać klucz do każdego żądania.
Te klucze subskrypcji można w dowolnym momencie wygenerować ponownie — jeśli na przykład podejrzewasz, że klucz został udostępniony nieautoryzowanym użytkownikom.
Każda subskrypcja ma dwa klucze: podstawowy i pomocniczy. Posiadanie dwóch kluczy ułatwia ponowne wygenerowanie klucza. Jeśli na przykład chcesz zmienić klucz podstawowy i uniknąć przestoju, użyj w aplikacjach klucza pomocniczego.
W przypadku produktów z włączoną subskrypcją podczas wywoływania interfejsów API w tym produkcie klienci muszą podać klucz. Deweloperzy mogą uzyskać klucz, przesyłając żądanie subskrypcji. Jeśli zatwierdzisz żądanie, musisz wysłać im klucz subskrypcji w bezpieczny sposób, na przykład w zaszyfrowanej wiadomości. Ten krok jest podstawowym elementem przepływu pracy w usłudze API Management.
Wywoływanie interfejsu API za pomocą klucza subskrypcji
Kiedy aplikacje wykonują wywołania do punktów końcowych interfejsów API chronionych za pomocą subskrypcji, muszą zawierać prawidłowy klucz we wszystkich żądaniach HTTP. Klucze można przekazywać w nagłówku żądania lub jako ciąg zapytania w adresie URL.
Domyślna nazwa nagłówka to Ocp-Apim-Subscription-Key, a domyślny ciąg zapytania to subscription-key.
Aby przetestować wywołania interfejsu API, można użyć portalu dla deweloperów lub narzędzi wiersza polecenia, takich jak curl. Oto przykład żądania GET
z użyciem portalu dla deweloperów, z widocznym nagłówkiem klucza subskrypcji:
Oto jak można przekazać klucz w nagłówku żądania przy użyciu narzędzia curl:
curl --header "Ocp-Apim-Subscription-Key: <key string>" https://<apim gateway>.azure-api.net/api/path
Oto przykładowe polecenie narzędzia curl, które przekazuje klucz w adresie URL jako ciąg zapytania:
curl https://<apim gateway>.azure-api.net/api/path?subscription-key=<key string>
Jeśli klucz nie zostanie przekazany w nagłówku lub jako ciąg zapytania w adresie URL, otrzymasz odpowiedź 401 Odmowa dostępu z bramy interfejsu API.