Ochrana back-endu webového rozhraní API v Azure API Management pomocí autorizace OAuth 2.0 pomocí Azure Active Directory

V tomto článku se dozvíte, jak nakonfigurovat instanci Azure API Management pro ochranu rozhraní API pomocí protokolu OAuth 2.0 s Azure Active Directory (Azure AD).

Autorizaci pro vývojářské účty můžete nakonfigurovat pomocí jiných poskytovatelů OAuth 2.0. Další informace najdete v tématu Autorizace vývojářských účtů pomocí OAuth 2.0 v Azure API Management.

Poznámka

Tato funkce je dostupná na úrovních Developer , Basic, Standard Premium a API Management.

Můžete postupovat podle všech kroků níže na úrovni Consumption s výjimkou volání rozhraní API z portálu pro vývojáře.

Požadavky

Před postupem v tomto článku musíte mít:

  • Instance API Management
  • Publikované rozhraní API s využitím API Management instance
  • Tenant Azure AD

Přehled

Grafické znázornění přehledu pro vizuálně koncepční znázornění následujícího toku

  1. Zaregistrujte aplikaci (back-endové aplikace) ve službě Azure AD, která bude představovat rozhraní API.

  2. Zaregistrujte jinou aplikaci (klientskou aplikaci) ve službě Azure AD, která představuje klientskou aplikaci, která potřebuje volat rozhraní API.

  3. V Azure AD udělte oprávnění, aby klientská aplikace mohla volat back-endovou aplikaci.

  4. Na portálu pro vývojáře nakonfigurujte konzolu pro vývojáře tak, aby pomocí autorizace uživatele OAuth 2.0 volala rozhraní API.

  5. Přidejte zásadu validate-jwt, která ověří token OAuth pro každý příchozí požadavek.

1. Registrace aplikace v Azure AD pro reprezentaci rozhraní API

Pomocí Azure Portal rozhraní API pomocí Azure AD registrací aplikace, která toto rozhraní API reprezentuje ve službě Azure AD.

Podrobnosti o registraci aplikace najdete v tématu Rychlý start: Konfigurace aplikace pro vystavení webového rozhraní API.

  1. V Azure Portalvyhledejte a vyberte Registrace aplikací.

  2. Vyberte New registration (Nová registrace).

  3. Jakmile se zobrazí stránka Zaregistrovat aplikaci, zadejte registrační informace vaší aplikace:

    • V části Název zadejte smysluplný název aplikace, který se zobrazí uživatelům aplikace, například back-end-app.
    • V části Podporované typy účtů vyberte možnost, která vyhovuje vašemu scénáři.
  4. Oddíl Redirect URI (Identifikátor URI pro přesměrování) ponechte prázdný.

  5. Výběrem možnosti Registrovat aplikaci vytvořte.

  6. Na stránce Přehled aplikace vyhledejte hodnotu ID aplikace (klienta) a zaznamenate si ji pro pozdější použití.

  7. V části Spravovat boční nabídky vyberte Expose an API (Zveřejnit rozhraní API) a nastavte identifikátor URI ID aplikace s výchozí hodnotou. Tuto hodnotu si zaznamenate pro pozdější použití.

  8. Výběrem tlačítka Přidat obor zobrazte stránku Přidat obor:

    1. Zadejte nový název oboru, zobrazovaný název souhlasu správce a popis souhlasu správce.
    2. Ujistěte se, že je vybraná možnost Stav povoleného oboru.
  9. Výběrem tlačítka Přidat obor vytvořte obor.

  10. Opakováním kroků 8 a 9 přidejte všechny obory podporované vaším rozhraním API.

  11. Po vytvoření oborů si je poznamenejte pro použití v dalším kroku.

2. Registrace jiné aplikace v Azure AD pro reprezentaci klientské aplikace

Zaregistrujte každou klientskou aplikaci, která volá rozhraní API jako aplikaci v Azure AD. V tomto příkladu je klientská aplikace konzola pro vývojáře na portálu API Management pro vývojáře.

Registrace jiné aplikace v Azure AD pro reprezentaci konzoly pro vývojáře:

  1. V Azure Portalvyhledejte a vyberte Registrace aplikací.

  2. Vyberte New registration (Nová registrace).

  3. Jakmile se zobrazí stránka Zaregistrovat aplikaci, zadejte registrační informace vaší aplikace:

    • V části Název zadejte smysluplný název aplikace, který se zobrazí uživatelům aplikace, například client-app.
    • V části Podporované typy účtů vyberte Účty v libovolném organizačním adresáři (Libovolný adresář Azure AD – Vícetenant).
  4. V části Identifikátor URI pro přesměrování vyberte a nechte pole adresy URL pro tuto dobu Web prázdné.

  5. Výběrem možnosti Registrovat aplikaci vytvořte.

  6. Na stránce Přehled aplikace vyhledejte hodnotu ID aplikace (klienta) a zaznamenate si ji pro pozdější použití.

  7. Vytvořte tajný klíč klienta, který bude tato aplikace používat v dalším kroku.

    1. V boční nabídce v části Spravovat vyberte Certifikáty a & tajnými kódy.
    2. V části Tajné kódy klienta vyberte Nový tajný kód klienta.
    3. V části Přidat tajný kód klienta zadejte Popis a zvolte, kdy má vypršet platnost klíče.
    4. Vyberte Přidat.

Po vytvoření tajného klíče si poznamenejte hodnotu klíče, kterou použijete v dalším kroku.

3. Udělení oprávnění v Azure AD

Teď, když jste zaregistrovali dvě aplikace, které představují rozhraní API a konzolu pro vývojáře, udělte oprávnění, aby klientská aplikace mohla volat back-endovou aplikaci.

  1. V Azure Portalvyhledejte a vyberte Registrace aplikací.

  2. Zvolte klientskou aplikaci. Potom v seznamu stránek pro aplikaci vyberte Oprávnění rozhraní API.

  3. Vyberte Přidat oprávnění.

  4. V části Vyberte rozhraní API vyberte Moje rozhraní API a pak najděte a vyberte svou back-endové aplikace.

  5. Vyberte Delegovaná oprávnění a pak vyberte příslušná oprávnění k back-endové aplikaci.

  6. Vyberte Přidat oprávnění.

Nepovinná možnost:

  1. Přejděte na stránku oprávnění rozhraní API klientské aplikace.

  2. Pokud chcete udělit souhlas <your-tenant-name> jménem všech uživatelů v tomto adresáři, vyberte Udělit souhlas správce pro.

4. Povolení autorizace uživatelů OAuth 2.0 v konzole pro vývojáře

V tuto chvíli jste vytvořili aplikace v Azure AD a udělili jste příslušná oprávnění, která klientské aplikaci umožňují volat back-endové aplikace.

V tomto příkladu povolíte autorizaci uživatelů OAuth 2.0 v konzole pro vývojáře (klientská aplikace).

  1. V části Azure Portal adresu URL koncového bodu autorizace a adresu URL koncového bodu tokenu a uložte je pro pozdější použití.

    1. Otevřete Registrace aplikací stránky.
    2. Vyberte Koncové body.
    3. Zkopírujte koncový bod autorizace OAuth 2.0 a koncový bod tokenu OAuth 2.0.
  2. Přejděte k vaší API Management instance.

  3. V části Portál pro vývojáře v boční nabídce vyberte OAuth 2.0 + OpenID Připojení.

  4. Na kartě OAuth 2.0 vyberte Přidat.

  5. Zadejte Zobrazovaný název a Popis.

  6. Do pole Adresa URL stránky registrace klienta zadejte zástupnou hodnotu, například http://localhost .

    • Adresa URL stránky registrace klienta odkazuje na stránku, kde uživatelé vytvářejí a konfigurují své vlastní účty podporované poskytovateli OAuth 2.0.
    • Používáme zástupný symbol, protože v tomto příkladu uživatelé nevytvářejí a nekonfigurují své vlastní účty.
  7. V seznamu Typy udělení autorizace vyberte Autorizační kód.

  8. Zadejte adresu URL koncového bodu autorizace a adresu URL koncového bodu tokenu, které jste si uložili dříve:

    1. Zkopírujte koncový bod autorizace OAuth 2.0 a vložte ho do textového pole Adresa URL koncového bodu autorizace.
    2. V části Metoda žádosti o autorizaci vyberte POST.
    3. Zadejte koncový bod tokenu OAuth 2.0 a vložte ho do textového pole Adresa URL koncového bodu tokenu.
      • Pokud používáte koncový bod v1:
        • Přidejte parametr body s názvem resource.
        • Zadejte ID aplikace back-endové aplikace pro hodnotu .
      • Pokud používáte koncový bod v2:
        • Použijte obor back-endové aplikace, který jste vytvořili v poli Výchozí obor.
        • V manifestu aplikace nastavte hodnotu vlastnosti accessTokenAcceptedVersion 2 na.

    Důležité

    I když můžete použít koncové body v1 nebo v2, doporučujeme použít koncové body v2.

  9. Zadejte přihlašovací údaje klientské aplikace:

    • Jako ID klienta použijte ID aplikace klientské aplikace.
    • Jako Tajný klíč klienta použijte klíč, který jste předtím vytvořili pro klientskou aplikaci.
  10. Poznamenejte si identifikátor URI přesměrování pro typ udělení autorizačního kódu.

  11. Vyberte Vytvořit.

  12. Vraťte se k registraci klienta a aplikace.

  13. V části Spravovat vyberte ověřování.

  14. V části konfigurace platformy:

    • Klikněte na Přidat platformu.
    • Vyberte typ jako Web.
    • Vložte identifikátor URI pro přesměrování, který jste předtím uložili v části identifikátory URI pro přesměrování.
    • Kliknutím na tlačítko Konfigurovat uložte.

    Teď, když může konzola pro vývojáře získat přístupové tokeny ze služby Azure AD prostřednictvím autorizačního serveru OAuth 2,0, povolte autorizaci uživatelů OAuth 2,0 pro vaše rozhraní API. To umožňuje konzole vývojářů zjistit, že před voláním rozhraní API potřebuje získat přístupový token jménem uživatele.

  15. Přejděte k instanci API Management a přejděte na rozhraní API.

  16. Vyberte rozhraní API, které chcete chránit. Například, Echo API.

  17. přejít na Nastavení.

  18. V části zabezpečení:

    1. Vyberte OAuth 2,0.
    2. Vyberte server OAuth 2,0, který jste nakonfigurovali dříve.
  19. Vyberte Uložit.

5. úspěšné volání rozhraní API z portálu pro vývojáře

Poznámka

Tato část se nevztahuje na úroveň spotřeby , protože nepodporuje portál pro vývojáře.

Jakmile nakonfigurujete autorizační Server OAuth 2,0 a nakonfigurujete své rozhraní API tak, aby používalo tento server, můžete ho otestovat tak, že na portálu pro vývojáře kliknete a zavoláte rozhraní API.

  1. V horní nabídce stránky s přehledem instance Azure API Management vyberte portál pro vývojáře .

  2. V rámci rozhraní API na portálu pro vývojáře přejděte na libovolnou operaci.

  3. Vyberte vyzkoušet, abyste vás přenesli do konzole pro vývojáře.

  4. Poznamenejte si novou položku v sekci autorizace , která odpovídá autorizačnímu serveru, který jste právě přidali.

  5. V rozevíracím seznamu autorizace vyberte autorizační kód .

    Vybrat autorizaci autorizačního kódu

  6. Po zobrazení výzvy se přihlaste ke klientovi služby Azure AD.

    • Pokud jste už přihlášení k účtu, možná nebudete vyzváni.
  7. Po úspěšném přihlášení se Authorization k žádosti přidá hlavička s přístupovým tokenem z Azure AD. Následuje zkrácený ukázkový token (kódovaný v kódování Base64):

    Authorization: Bearer eyJ0eXAiOi[...]3pkCfvEOyA
    
  8. Vyberte Odeslat pro úspěšné volání rozhraní API.

6. Konfigurace ověřovacích zásad JWT pro předběžné ověření požadavků

Zatím:

  • Pokusili jste se provést volání z konzoly pro vývojáře.
  • Zobrazila se výzva a jste se přihlásili do tenanta Azure AD.
  • Konzola pro vývojáře získá přístupový token vaším jménem a zahrne do žádosti o rozhraní API token.

Ale co když někdo volá vaše rozhraní API bez tokenu nebo s neplatným tokenem? Například pokud voláte rozhraní API bez Authorization hlavičky, volání bude stále probíhat, protože API Management neověřuje přístupový token. Jednoduše předá Authorization hlavičku back-endové rozhraní API.

Předem autorizovat žádosti v API Management pomocí zásad ověření JWT pomocí ověřování přístupových tokenů každého příchozího požadavku. Pokud požadavek nemá platný token, API Management ho zablokuje.

Následující příklad zásady, když se přidá do <inbound> části zásady, zkontroluje hodnotu deklarace identity cílové skupiny v přístupovém tokenu získaném z Azure AD a vrátí chybovou zprávu, pokud token není platný.

<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
    <openid-config url="https://login.microsoftonline.com/{aad-tenant}/v2.0/.well-known/openid-configuration" />
    <required-claims>
        <claim name="aud">
            <value>{backend-api-application-client-id}</value>
        </claim>
    </required-claims>
</validate-jwt>

Poznámka

Výše uvedená openid-config Adresa URL odpovídá koncovému bodu v2. Pro openid-config koncový bod v1 použijte https://login.microsoftonline.com/{aad-tenant}/.well-known/openid-configuration .

Tip

V Azure Portal Najděte hodnotu {AAD-tenant} jako ID TENANTA Azure AD, a to v těchto případech:

  • Stránka Přehled prostředku služby Azure AD nebo
  • Na stránce spravovat > vlastnosti prostředku služby Azure AD.

Informace o tom, jak nakonfigurovat zásady, najdete v tématu nastavení nebo úprava zásad.

Sestavení aplikace pro volání rozhraní API

V této příručce jste použili konzolu pro vývojáře v API Management jako ukázková klientská aplikace pro volání Echo API chráněného OAuth 2,0. Další informace o tom, jak vytvořit aplikaci a implementovat OAuth 2,0, najdete v tématu ukázky kódu Azure AD.

Další kroky