Vytváření předplatných ve službě Azure API Management
Když publikujete rozhraní API pomocí služby API Management, definujete, kdo má k rozhraní API přístup prostřednictvím brány.
Pro vaši meteorologickou aplikaci chcete zajistit, aby k rozhraní API měli přístup jenom zákazníci, kteří jsou přihlášeni k odběru vaší služby, a mohli používat data prognózy. Toto řízení přístupu dosáhnete vydáním klíčů předplatného.
Důležité
Předplatná v tomto kontextu nesouvisí s předplatnými Azure používanými ke správě účtu Azure.
Tady se naučíte, jak používat klíče předplatného k zabezpečení rozhraní API.
Předplatná a klíče
Můžete se rozhodnout, že vaše rozhraní API a informace, které obsahují, budou volně dostupné. Obvykle ale chcete omezit přístup k uživatelům, kteří mají placené nebo organizace, se kterými máte pracovní vztah. Jedním ze způsobů, jak řídit přístup k vašim rozhraním API, je použití předplatných. Předplatná se používají k segmentace uživatelského přístupu k rozhraní API.
Klíče předplatného tvoří autorizaci umožňující přístup k těmto předplatným. Pokaždé, když klient odešle požadavek na chráněné rozhraní API, musí být do požadavku HTTP zahrnutý platný klíč předplatného; jinak bude hovor odmítnut.
Klíč předplatného je jedinečný automaticky vygenerovaný klíč, který se dá předat jako součást volání rozhraní API. Klíč přímo souvisí s předplatným, které se dá vymezit na různé oblasti. Předplatná poskytují podrobnou kontrolu nad oprávněními a zásadami.
Tři hlavní obory předplatného jsou:
| Scope | Detaily |
|---|---|
| Všechna rozhraní API | Platí pro každé rozhraní API přístupné z brány. |
| Jedno rozhraní API | Platí pro jedno importované rozhraní API a všechny jeho koncové body. |
| Produkt | Produkt je kolekce jednoho nebo více rozhraní API, kterou konfigurujete ve službě API Management. Rozhraní API můžete přiřadit více produktům. Produkty můžou mít různá pravidla přístupu, kvóty využití a podmínky použití. Pokud tedy chcete, aby vaši partneři a dodavatelé měli různá přístupová práva k vašemu rozhraní WeatherData API, přiřaďte rozhraní API k produktu a pak pomocí webu Azure Portal přidružte rozhraní API k produktu. |
Aplikace, které volají chráněné rozhraní API, musí do každého požadavku obsahovat klíč předplatného.
Tyto klíče předplatného můžete kdykoli znovu vygenerovat; Pokud máte například podezření, že klíč byl sdílen s neoprávněnými uživateli, můžete vytvořit nový.
Každé předplatné má dva klíče: primární klíč a sekundární klíč. Když máte dva klíče, můžete klíč snadněji vygenerovat znovu. Pokud například chcete změnit primární klíč a vyhnout se tak výpadku, použijte ve svých aplikacích sekundární klíč.
U produktů, ve kterých jsou povolená předplatná, musí klienti při volání rozhraní API v daném produktu zadat klíč. Vývojáři můžou klíč získat odesláním žádosti o předplatné. Pokud žádost schválíte, musíte mu bezpečně poslat klíč předplatného; Například v zašifrované zprávě. Tento krok je základní součástí pracovního postupu služby API Management.
Volání rozhraní API s klíčem předplatného
Aplikace musí ve všech požadavcích HTTP obsahovat platný klíč, který volá koncové body rozhraní API, které jsou chráněné předplatným. Klíče je možné předat v hlavičce požadavku nebo jako parametr řetězce dotazu v adrese URL.
Výchozí název hlavičky klíče předplatného je Ocp-Apim-Subscription-Key a výchozí název řetězce dotazu je subscription-key.
K otestování volání rozhraní API můžete použít testovací konzolu na webu Azure Portal nebo na portálu pro vývojáře nebo nástroje příkazového řádku, jako je curl. Tady je příklad požadavku GET s použitím vývojářského portálu zobrazující hlavičku klíče předplatného:
Tady je příklad, jak předat klíč v hlavičce požadavku pomocí curl:
curl --header "Ocp-Apim-Subscription-Key: <key string>" https://<apim gateway>.azure-api.net/api/path
Tady je příklad použití příkazu curl k předání klíče jako řetězce dotazu v adrese URL:
curl https://<apim gateway>.azure-api.net/api/path?subscription-key=<key string>
Pokud se v hlavičce nepředá požadovaný klíč nebo jako řetězec dotazu v adrese URL, získáte odpověď 401 Odepření přístupu z brány rozhraní API.