Konfigurace ověřování v ukázkové webové aplikaci v Pythonu pomocí Azure AD B2C

Tento článek používá ukázkovou webovou aplikaci v Pythonu k ilustraci přidání ověřování Azure Active Directory B2C (Azure AD B2C) do webových aplikací.

Přehled

OpenID Připojení (OIDC) je ověřovací protokol založený na OAuth 2.0. Pomocí OIDC můžete bezpečně přihlásit uživatele k aplikaci. Tato ukázka webové aplikace používá balíček identit pro Python ke zjednodušení přidávání podpory ověřování a autorizace do webových aplikací v Pythonu.

Tok přihlášení zahrnuje následující kroky:

  1. Uživatelé přejdou do webové aplikace a vyberou Přihlášení.
  2. Aplikace zahájí žádost o ověření a přesměruje uživatele do Azure AD B2C.
  3. Uživatelé se zaregistrují nebo přihlásí, resetují heslo nebo se přihlásí pomocí účtu sociální sítě.
  4. Jakmile se uživatelé úspěšně přihlásí, Azure AD B2C vrátí do aplikace token ID.
  5. Aplikace vymění autorizační kód s tokenem ID, ověří token ID, přečte deklarace identity a pak uživatelům vrátí zabezpečenou stránku.

Požadavky

Krok 1: Konfigurace toku uživatele

Když se uživatelé pokusí přihlásit k aplikaci, aplikace spustí žádost o ověření do koncového bodu autorizace prostřednictvím toku uživatele. Tok uživatele definuje a řídí uživatelské prostředí. Jakmile uživatelé dokončí tok uživatele, Azure AD B2C vygeneruje token a pak přesměruje uživatele zpět do vaší aplikace.

Pokud jste to ještě neudělali, vytvořte tok uživatele nebo vlastní zásadu. Opakujte kroky pro vytvoření tří samostatných toků uživatelů následujícím způsobem:

  • Kombinovaný tok přihlášení a registrace uživatele, například susi. Tento tok uživatele podporuje také zapomenuté heslo .
  • Profil upravuje tok uživatele, například edit_profile.
  • Tok uživatele resetování hesla, například reset_password.

Předzálohuje B2C_1_ Azure AD B2C na název toku uživatele. Například z susi se stane B2C_1_susi.

Krok 2: Registrace webové aplikace

Pokud chcete aplikaci povolit přihlášení pomocí Azure AD B2C, zaregistrujte aplikaci v adresáři Azure AD B2C. Registrace aplikace vytvoří vztah důvěryhodnosti mezi aplikací a Azure AD B2C.

Během registrace aplikace zadáte identifikátor URI přesměrování. Identifikátor URI přesměrování je koncový bod, na který jsou uživatelé přesměrováni službou Azure AD B2C po ověření pomocí Azure AD B2C. Proces registrace aplikace vygeneruje ID aplikace, označované také jako ID klienta, které jednoznačně identifikuje vaši aplikaci. Po registraci aplikace azure AD B2C použije ID aplikace i identifikátor URI pro přesměrování k vytvoření žádostí o ověření.

Krok 2.1: Registrace aplikace

Pokud chcete vytvořit registraci webové aplikace, postupujte takto:

  1. Přihlaste se k portálu Azure.

  2. Pokud máte přístup k více tenantům, v horní nabídce vyberte ikonu Nastavení a v nabídce Adresáře a předplatná přepněte do svého tenanta Azure AD B2C.

  3. Na webu Azure Portal vyhledejte a vyberte Azure AD B2C.

  4. Vyberte Registrace aplikací a pak vyberte Nová registrace.

  5. V části Název zadejte název aplikace (například webapp1).

  6. V sekci Podporované typy účtů vyberte Účty u libovolného zprostředkovatele identity nebo organizačního adresáře (pro ověřování uživatelů pomocí toků uživatelů).

  7. V části Identifikátor URI přesměrování vyberte Web a potom do pole adresa URL zadejte http://localhost:5000/getAToken.

  8. V části Oprávnění zaškrtněte políčko Udělit souhlas správce s otevřenými a offline přístupy.

  9. Vyberte Zaregistrovat.

  10. Vyberte Přehled.

  11. Poznamenejte si ID aplikace (klienta) pro pozdější použití při konfiguraci webové aplikace.

    Screenshot of the web app Overview page for recording your web app I D.

Krok 2.2: Vytvoření tajného klíče klienta webové aplikace

Vytvořte tajný klíč klienta pro registrovanou webovou aplikaci. Webová aplikace používá tajný klíč klienta k prokázání své identity při žádosti o tokeny.

  1. V části Spravovat vyberte Certifikáty a tajné kódy.
  2. Vyberte Nový tajný klíč klienta.
  3. Do pole Popis zadejte popis tajného klíče klienta (například klientiecret1).
  4. V části Konec platnosti vyberte dobu, po kterou je tajný klíč platný, a pak vyberte Přidat.
  5. Poznamenejte si hodnotu tajného kódu. Tuto hodnotu použijete pro konfiguraci v pozdějším kroku.

Krok 3: Získání ukázky webové aplikace

Stáhněte si soubor ZIP nebo naklonujte ukázkovou webovou aplikaci z GitHubu.

git clone https://github.com/Azure-Samples/ms-identity-python-webapp.git

Extrahujte ukázkový soubor do složky, kde celková délka cesty je 260 nebo méně znaků.

Krok 4: Konfigurace ukázkové webové aplikace

V kořenovém adresáři projektu postupujte takto:

  1. Vytvořte .env soubor v kořenové složce projektu pomocí .env.sample průvodce.

    FLASK_DEBUG=True
    B2C_TENANT_NAME=<tenant name>
    CLIENT_ID=<client id>
    CLIENT_SECRET=<client secret>
    SIGNUPSIGNIN_USER_FLOW=B2C_1_signupsignin1
    EDITPROFILE_USER_FLOW=B2C_1_profile_editing
    RESETPASSWORD_USER_FLOW=B2C_1_reset_password
    
    Key Hodnota
    B2C_TENANT_NAME První část názvu tenanta Azure AD B2C (napříkladcontoso).
    CLIENT_ID ID aplikace webového rozhraní API z kroku 2.1.
    CLIENT_SECRET Hodnota tajného klíče klienta, kterou jste vytvořili v kroku 2.2.
    *_USER_FLOW Toky uživatelů, které jste vytvořili v kroku 1.

    Proměnné prostředí se odkazují v souboru app_config.py a uchovávají se v samostatném souboru .env , aby byly mimo správu zdrojového kódu. Zadaný soubor .gitignore zabraňuje vrácení souboru .env se změnami.

Krok 5: Spuštění ukázkové webové aplikace

  1. V konzole nebo terminálu přepněte do adresáře, který obsahuje ukázku. Příklad:

    cd ms-identity-python-webapp
    
  2. Nainstalujte požadované balíčky z PyPi a spusťte webovou aplikaci na místním počítači spuštěním následujících příkazů:

    python -m pip install -r requirements.txt
    python -m flask run --host localhost --port 5000
    

    V okně konzoly se zobrazí číslo portu místně spuštěné aplikace:

     * Debug mode: on
       WARNING: This is a development server. Do not use it in a production deployment.
       Use a production WSGI server instead.
     * Running on `http://localhost:5000/` (Press CTRL+C to quit)
    
  3. Pokud chcete zobrazit webovou aplikaci spuštěnou na místním počítači, přejděte na http://localhost:5000stránku .

  4. Vyberte Přihlásit se.

    Screenshot showing the sign-in flow.

  5. Dokončete proces registrace nebo přihlášení.

  6. Po úspěšném ověření se zobrazí zobrazované jméno, jak je znázorněno tady:

    Screenshot showing the web app token's display name claim.

Krok 6: Volání webového rozhraní API

Pokud chcete aplikaci povolit přihlášení pomocí Azure AD B2C a volání webového rozhraní API, musíte zaregistrovat dvě aplikace v adresáři Azure AD B2C.

  • Registrace webové aplikace (Python), kterou jste už vytvořili v kroku 2. Tato registrace aplikace umožňuje aplikaci přihlásit se pomocí Azure AD B2C. Proces registrace aplikace vygeneruje ID aplikace, označované také jako ID klienta, které jednoznačně identifikuje vaši aplikaci. Například ID aplikace: 1.

  • Registrace webového rozhraní API umožňuje vaší aplikaci volat chráněné webové rozhraní API. Registrace zveřejňuje oprávnění webového rozhraní API (obory). Proces registrace aplikace vygeneruje ID aplikace, které jednoznačně identifikuje vaše webové rozhraní API (například ID aplikace: 2). Udělte aplikaci (ID aplikace: 1) oprávnění k oborům webového rozhraní API (ID aplikace: 2).

Registrace aplikací a architektura aplikací jsou popsané v následujících diagramech:

Diagram describing a web app with web API, registrations, and tokens.

Po dokončení ověřování uživatelé komunikují s aplikací, která vyvolá chráněné webové rozhraní API. Webové rozhraní API používá ověřování nosné tokeny . Nosný token je přístupový token, který aplikace získala z Azure AD B2C. Aplikace předá token v autorizační hlavičce požadavku HTTPS.

Authorization: Bearer <access token>

Pokud obor přístupového tokenu neodpovídá oborům webového rozhraní API, knihovna ověřování získá nový přístupový token se správnými obory.

Krok 6.1: Registrace webové aplikace API

Pokud chcete vytvořit registraci aplikace webového rozhraní API (ID aplikace: 2), postupujte takto:

  1. Přihlaste se k portálu Azure.

  2. Ujistěte se, že používáte adresář, který obsahuje vašeho tenanta Azure AD B2C. Na panelu nástrojů portálu vyberte ikonu Adresáře a předplatná .

  3. V nastavení portálu | Adresářů a stránka předplatných , vyhledejte adresář Azure AD B2C v seznamu názvů adresářů a pak vyberte Přepnout.

  4. Na webu Azure Portal vyhledejte a vyberte Azure AD B2C.

  5. Vyberte Registrace aplikací a pak vyberte Nová registrace.

  6. Jako Název zadejte název aplikace (například my-api1). U identifikátoru URI přesměrování a podporovaných typů účtů ponechte výchozí hodnoty.

  7. Vyberte Zaregistrovat.

  8. Po dokončení registrace aplikace vyberte Přehled.

  9. Poznamenejte si hodnotu ID aplikace (klienta) pro pozdější použití při konfiguraci webové aplikace.

    Screenshot that demonstrates how to get a web A P I application I D.

Krok 6.2: Konfigurace oborů

  1. Výběrem aplikace my-api1, kterou jste vytvořili (ID aplikace: 2), otevřete její stránku Přehled.

  2. V části Spravovat vyberte Zveřejnit rozhraní API.

  3. Vedle identifikátoru URI ID aplikace vyberte odkaz Nastavit. Nahraďte výchozí hodnotu (GUID) jedinečným názvem (například tasks-api) a pak vyberte Uložit.

    Když vaše webová aplikace požádá o přístupový token pro webové rozhraní API, měl by tento identifikátor URI přidat jako předponu pro každý obor, který definujete pro rozhraní API.

  4. V části Obory definované tímto rozhraním API vyberte Přidat obor.

  5. Vytvoření oboru, který definuje přístup pro čtení k rozhraní API:

    1. Jako název oboru zadejte tasks.read.
    2. Pro Správa zobrazovaný název souhlasu zadejte přístup pro čtení k rozhraní API pro úlohy.
    3. Jako popis souhlasu Správa zadejte Možnost Umožňuje přístup pro čtení k rozhraní API pro úlohy.
  6. Vyberte Přidat rozsah.

  7. Vyberte Přidat obor a pak přidejte obor, který definuje přístup k zápisu do rozhraní API:

    1. Jako název oboru zadejte tasks.write.
    2. Pro Správa zobrazovaný název souhlasu zadejte přístup k zápisu do rozhraní API pro úlohy.
    3. Jako popis souhlasu Správa zadejte Povolení přístupu k zápisu do rozhraní API pro úlohy.
  8. Vyberte Přidat rozsah.

Krok 6.3: Udělení oprávnění webové aplikace

Pokud chcete aplikaci udělit oprávnění (ID aplikace: 1), postupujte takto:

  1. Vyberte Registrace aplikací a pak vyberte aplikaci, kterou jste vytvořili (ID aplikace: 1).

  2. V části Spravovat vyberte oprávnění rozhraní API.

  3. V části Nakonfigurovaná oprávnění vyberte Přidat oprávnění.

  4. Vyberte kartu Moje rozhraní API.

  5. Vyberte rozhraní API (ID aplikace: 2), ke kterému má mít webová aplikace udělený přístup. Zadejte například my-api1.

  6. V části Oprávnění rozbalte úkoly a vyberte obory, které jste definovali dříve (například tasks.read a tasks.write).

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

  8. Vyberte Udělení souhlasu správce pro <název> vašeho tenanta.

  9. Vyberte Ano.

  10. Vyberte Aktualizovat a potom ověřte, že se pro oba obory zobrazuje hodnota Uděleno pro ... .

  11. V seznamu Nakonfigurovaná oprávnění vyberte obor a zkopírujte celý název oboru.

    Screenshot of the configured permissions pane, showing that read access permissions are granted.

Krok 6.4: Konfigurace webového rozhraní API

Tato ukázka získá přístupový token s relevantními obory, které webová aplikace může použít pro webové rozhraní API. Tato ukázka sama nefunguje jako webové rozhraní API. Místo toho musíte použít existující webové rozhraní API nebo vytvořit nové. Kurz vytvoření webového rozhraní API v tenantovi B2C najdete v tématu Povolení ověřování ve vlastním webovém rozhraní API pomocí Azure AD B2C.

Krok 6.5: Konfigurace ukázkové aplikace s webovým rozhraním API

Otevřete soubor app_config.py. Tento soubor obsahuje informace o vašem zprostředkovateli identity Azure AD B2C. Aktualizujte následující vlastnosti nastavení aplikace:

Key Hodnota
ENDPOINT Identifikátor URI vašeho webového rozhraní API (například https://localhost:6000/hello).
SCOPE Obory webového rozhraní API, které jste vytvořili (například["https://contoso.onmicrosoft.com/tasks-api/tasks.read", https://contoso.onmicrosoft.com/tasks-api/tasks.write"]).

Krok 6.6: Spuštění ukázkové aplikace

  1. V konzole nebo terminálu přepněte do adresáře, který obsahuje ukázku.

  2. Pokud aplikace stále není spuštěná, restartujte ji pomocí příkazu z kroku 5.

  3. Vyberte Volání podřízeného rozhraní API.

    Screenshot showing how to call a web API.

Krok 7: Nasazení aplikace

V produkční aplikaci je identifikátor URI přesměrování registrace aplikace obvykle veřejně přístupným koncovým bodem, ve kterém je vaše aplikace spuštěná, například https://contoso.com/getAToken.

Identifikátory URI pro přesměrování můžete v registrovaných aplikacích kdykoli přidávat a upravovat. Pro identifikátory URI přesměrování platí následující omezení:

  • Adresa URL přesměrování musí začínat schématem https.
  • V adrese URL pro přesměrování se rozlišují malá a velká písmena. Jeho případ se musí shodovat s případem cesty URL spuštěné aplikace.

Další kroky