Hitelesítés konfigurálása python-minta webalkalmazásban az Azure AD B2C használatával

Ez a cikk egy Python-minta webalkalmazás használatával mutatja be, hogyan adhat hozzá Azure Active Directory B2C (Azure AD B2C) hitelesítést a webalkalmazásokhoz.

Áttekintés

Az OpenID Csatlakozás (OIDC) egy olyan hitelesítési protokoll, amely az OAuth 2.0-ra épül. Az OIDC használatával biztonságosan bejelentkezhet a felhasználók egy alkalmazásba. Ez a webalkalmazás-minta a Python identitáscsomagját használja a pythonos hitelesítés és engedélyezés támogatásának a Python-webalkalmazásokhoz való hozzáadásának egyszerűsítéséhez.

A bejelentkezési folyamat a következő lépéseket foglalja magában:

  1. A felhasználók megnyitják a webalkalmazást, és kiválasztják a Bejelentkezés lehetőséget.
  2. Az alkalmazás hitelesítési kérelmet kezdeményez, és átirányítja a felhasználókat az Azure AD B2C-be.
  3. A felhasználók regisztrálnak vagy bejelentkeznek, visszaállítják a jelszót, vagy egy közösségi fiókkal jelentkeznek be.
  4. Miután a felhasználók sikeresen bejelentkeznek, az Azure AD B2C egy azonosító jogkivonatot ad vissza az alkalmazásnak.
  5. Az alkalmazás egy azonosító jogkivonattal cseréli le az engedélyezési kódot, ellenőrzi az azonosító jogkivonatot, beolvassa a jogcímeket, majd egy biztonságos lapot ad vissza a felhasználóknak.

Előfeltételek

1. lépés: A felhasználói folyamat konfigurálása

Amikor a felhasználók megpróbálnak bejelentkezni az alkalmazásba, az alkalmazás elindít egy hitelesítési kérést az engedélyezési végponthoz egy felhasználói folyamaton keresztül. A felhasználói folyamat határozza meg és szabályozza a felhasználói élményt. Miután a felhasználók befejezték a felhasználói folyamatot, az Azure AD B2C létrehoz egy jogkivonatot, majd visszairányítja a felhasználókat az alkalmazásba.

Ha még nem tette meg, hozzon létre egy felhasználói folyamatot vagy egy egyéni szabályzatot. Ismételje meg a lépéseket három különálló felhasználói folyamat létrehozásához az alábbiak szerint:

  • Kombinált bejelentkezés és felhasználói folyamat regisztrálása , például susi. Ez a felhasználói folyamat az Elfelejtett jelszó funkciót is támogatja.
  • Profilszerkesztési felhasználói folyamat, például edit_profile.
  • Új jelszó kérése felhasználói folyamat, például reset_password.

Az Azure AD B2C előre fel van függve B2C_1_ a felhasználói folyamat nevére. Például a susi következő lesz B2C_1_susi: .

2. lépés: Webalkalmazás regisztrálása

Ahhoz, hogy az alkalmazás bejelentkezhessen az Azure AD B2C-vel, regisztrálja az alkalmazást az Azure AD B2C könyvtárban. Az alkalmazás regisztrálása megbízhatósági kapcsolatot létesít az alkalmazás és az Azure AD B2C között.

Az alkalmazásregisztráció során meg kell adnia az átirányítási URI-t. Az átirányítási URI az a végpont, amelyre az Azure AD B2C átirányítja a felhasználókat az Azure AD B2C-vel való hitelesítés után. Az alkalmazásregisztrációs folyamat létrehoz egy alkalmazásazonosítót, más néven ügyfélazonosítót, amely egyedileg azonosítja az alkalmazást. Az alkalmazás regisztrálása után az Azure AD B2C az alkalmazásazonosítót és az átirányítási URI-t is használja a hitelesítési kérelmek létrehozásához.

2.1. lépés: Az alkalmazás regisztrálása

A webalkalmazás-regisztráció létrehozásához kövesse az alábbi lépéseket:

  1. Jelentkezzen be az Azure Portalra.

  2. Ha több bérlőhöz is hozzáfér, a felső menüben válassza a Gépház ikont az Azure AD B2C-bérlőre való váltáshoz a Címtárak + előfizetések menüből.

  3. Az Azure Portalon keresse meg és válassza ki az Azure AD B2C-t.

  4. Válassza a Alkalmazásregisztrációk, majd az Új regisztráció lehetőséget.

  5. A Név területen adja meg az alkalmazás nevét (például webapp1).

  6. A Támogatott fióktípusok területen válassza a Fiókok lehetőséget bármely identitásszolgáltatóban vagy szervezeti címtárban (a felhasználók felhasználói folyamatokkal való hitelesítéséhez).

  7. Az Átirányítási URI területen válassza a Web lehetőséget, majd írja be http://localhost:5000/getATokenaz URL-címet az URL-mezőbe.

  8. Az Engedélyek csoportban jelölje be a Rendszergazdai hozzájárulás megadása az openid és offline hozzáférési engedélyekhez jelölőnégyzetet.

  9. Válassza ki a pénztárgépet.

  10. Válassza az Áttekintés lehetőséget.

  11. A webalkalmazás konfigurálásakor jegyezze fel az alkalmazás (ügyfél) azonosítóját későbbi használatra.

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

2.2. lépés: Webalkalmazás-ügyfélkód létrehozása

Hozzon létre egy ügyfélkulcsot a regisztrált webalkalmazáshoz. A webalkalmazás az ügyfél titkos kódjával igazolja személyazonosságát, amikor jogkivonatokat kér.

  1. A Kezelés területen válassza a Tanúsítványok és titkos kódok lehetőséget.
  2. Válassza az Új titkos ügyfélkód lehetőséget.
  3. A Leírás mezőbe írja be az ügyfél titkos kódjának leírását (például clientsecret1).
  4. A Lejáratok csoportban válassza ki azt az időtartamot, amelyre érvényes a titkos kód, majd válassza a Hozzáadás lehetőséget.
  5. Jegyezze fel a titkos kód értékét. Ezt az értéket egy későbbi lépésben fogja használni a konfigurációhoz.

3. lépés: A webalkalmazás-minta lekérése

Töltse le a zip-fájlt, vagy klónozza a minta webalkalmazást a GitHubról.

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

Bontsa ki a mintafájlt egy olyan mappába, ahol az elérési út teljes hossza 260 vagy kevesebb karakter.

4. lépés: A minta webalkalmazás konfigurálása

A projekt gyökérkönyvtárában kövesse az alábbi lépéseket:

  1. Hozzon létre egy .env fájlt a projekt .env.sample gyökérmappájában útmutatóként.

    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
    
    Kulcs Érték
    B2C_TENANT_NAME Az Azure AD B2C-bérlő nevének első része (például contoso).
    CLIENT_ID A web API-alkalmazás azonosítója a 2.1. lépésből.
    CLIENT_SECRET Az ügyfél titkos kódjának a 2.2. lépésben létrehozott értéke.
    *_USER_FLOW Az 1. lépésben létrehozott felhasználói folyamatok.

    A környezeti változókra a app_config.py hivatkozik, és egy külön .env fájlban tárolja őket, hogy ne legyenek a forráskontrollban. A megadott .gitignore fájl megakadályozza, hogy az .env fájl be legyen jelentkezve.

5. lépés: A minta webalkalmazás futtatása

  1. A konzolon vagy a terminálon váltson a mintát tartalmazó könyvtárra. Példa:

    cd ms-identity-python-webapp
    
  2. Telepítse a szükséges csomagokat a PyPi-ból, és futtassa a webalkalmazást a helyi gépen az alábbi parancsok futtatásával:

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

    A konzolablak megjeleníti a helyileg futó alkalmazás portszámát:

     * 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. A helyi gépen futó webalkalmazás megtekintéséhez nyissa meg a következőt http://localhost:5000: .

  4. Válassza a Bejelentkezés lehetőséget.

    Screenshot showing the sign-in flow.

  5. Fejezze be a regisztrációs vagy bejelentkezési folyamatot.

  6. A sikeres hitelesítés után megjelenik a megjelenítendő név, ahogy az itt látható:

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

6. lépés: Webes API meghívása

Ahhoz, hogy az alkalmazás bejelentkezhessen az Azure AD B2C-be, és meghívhasson egy webes API-t, két alkalmazást kell regisztrálnia az Azure AD B2C címtárban.

  • A 2. lépésben már létrehozott webalkalmazási (Python-) regisztráció. Ezzel az alkalmazásregisztrációval az alkalmazás bejelentkezhet az Azure AD B2C-vel. Az alkalmazásregisztrációs folyamat létrehoz egy alkalmazásazonosítót, más néven ügyfélazonosítót, amely egyedileg azonosítja az alkalmazást. Például az alkalmazásazonosító: 1.

  • A webes API-regisztrációval az alkalmazás meghívhat egy védett webes API-t. A regisztráció elérhetővé teszi a webes API-engedélyeket (hatóköröket). Az alkalmazásregisztrációs folyamat létrehoz egy alkalmazásazonosítót, amely egyedileg azonosítja a webes API-t (például alkalmazásazonosító: 2). Adjon engedélyt az alkalmazásnak (alkalmazásazonosító: 1) a webes API-hatókörökhöz (alkalmazásazonosító: 2).

Az alkalmazásregisztrációkat és az alkalmazásarchitektúrát az alábbi diagramok ismertetik:

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

A hitelesítés befejezése után a felhasználók kapcsolatba lépnek az alkalmazással, amely egy védett webes API-t hív meg. A webes API tulajdonosi jogkivonat-hitelesítést használ. A tulajdonosi jogkivonat az az alkalmazás által az Azure AD B2C-ből beszerzett hozzáférési jogkivonat. Az alkalmazás átadja a jogkivonatot a HTTPS-kérés engedélyezési fejlécében.

Authorization: Bearer <access token>

Ha a hozzáférési jogkivonat hatóköre nem egyezik a webes API hatóköreivel, a hitelesítési kódtár egy új hozzáférési jogkivonatot szerez be a megfelelő hatókörökkel.

6.1. lépés: A web API-alkalmazás regisztrálása

A webes API-alkalmazásregisztráció létrehozásához (alkalmazásazonosító: 2) kövesse az alábbi lépéseket:

  1. Jelentkezzen be az Azure Portalra.

  2. Győződjön meg arról, hogy az Azure AD B2C-bérlőt tartalmazó könyvtárat használja. Válassza a Címtárak + előfizetések ikont a portál eszköztárán.

  3. A Portál beállításai | Címtárak + előfizetések lap, keresse meg az Azure AD B2C-címtárat a címtárnévlistában, majd válassza a Váltás lehetőséget.

  4. Az Azure Portalon keresse meg és válassza ki az Azure AD B2C-t.

  5. Válassza a Alkalmazásregisztrációk, majd az Új regisztráció lehetőséget.

  6. A Név mezőbe írja be az alkalmazás nevét (például my-api1). Hagyja meg az átirányítási URI és a támogatott fióktípusok alapértelmezett értékeit.

  7. Válassza ki a pénztárgépet.

  8. Az alkalmazásregisztráció befejezése után válassza az Áttekintés lehetőséget.

  9. Jegyezze fel az alkalmazás (ügyfél) azonosítóját a webalkalmazás konfigurálásakor későbbi használatra.

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

6.2. lépés: Hatókörök konfigurálása

  1. Válassza ki a létrehozott my-api1 alkalmazást (alkalmazásazonosító: 2) az Áttekintés lap megnyitásához.

  2. A Kezelés területen válassza az API-k felfedése lehetőséget.

  3. Az alkalmazásazonosító URI-ja mellett válassza a Hivatkozás beállítása lehetőséget. Cserélje le az alapértelmezett értéket (GUID) egy egyedi névre (például tasks-api), majd válassza a Mentés lehetőséget.

    Amikor a webalkalmazás hozzáférési jogkivonatot kér a webes API-hoz, ezt az URI-t kell hozzáadnia az API-hoz definiált hatókörök előtagjaként.

  4. Az API által definiált hatókörök alatt válassza a Hatókör hozzáadása lehetőséget.

  5. Az API olvasási hozzáférését meghatározó hatókör létrehozása:

    1. A hatókör neveként adja meg a tasks.read nevet.
    2. Ha Rendszergazda hozzájárulás megjelenítendő nevét, írja be a Feladatok API olvasási hozzáférését.
    3. A Rendszergazda hozzájárulás leírásához írja be A feladatok API olvasási hozzáférésének engedélyezése című cikket.
  6. Válassza a Hatókör hozzáadása lehetőséget.

  7. Válassza a Hatókör hozzáadása lehetőséget, majd adjon hozzá egy, az API írási hozzáférését meghatározó hatókört:

    1. A Hatókör neve mezőbe írja be a tasks.write nevet.
    2. Ha Rendszergazda hozzájárulás megjelenítendő nevét szeretné megadni, írja be a Feladatok API írási hozzáférését.
    3. A Rendszergazda hozzájárulás leírásához írja be a Tevékenység API írási hozzáférését.
  8. Válassza a Hatókör hozzáadása lehetőséget.

6.3. lépés: A webalkalmazás engedélyeinek megadása

Az alkalmazás (alkalmazásazonosító: 1) engedélyének megadásához kövesse az alábbi lépéseket:

  1. Válassza Alkalmazásregisztrációk, majd válassza ki a létrehozott alkalmazást (alkalmazásazonosító: 1).

  2. A Kezelés területen válassza ki az API-engedélyeket.

  3. A Konfigurált engedélyek csoportban válassza az Engedély hozzáadása lehetőséget.

  4. Válassza a Saját API-k lapot.

  5. Válassza ki azt az API-t (alkalmazásazonosító: 2), amelyhez a webalkalmazásnak hozzáférést kell biztosítani. Írja be például a my-api1 nevet.

  6. Az Engedély területen bontsa ki a tevékenységeket, majd válassza ki a korábban definiált hatóköröket (például tasks.read és tasks.write).

  7. Jelölje be az Engedélyek hozzáadása lehetőséget.

  8. Válassza a bérlő nevének> rendszergazdai <hozzájárulásának megadása lehetőséget.

  9. Válassza az Igen lehetőséget.

  10. Válassza a Frissítés lehetőséget, majd ellenőrizze, hogy a megadott for ... jelenik-e meg mindkét hatókör állapotában .

  11. A Konfigurált engedélyek listájában válassza ki a hatókört, majd másolja a teljes nevet a hatókörbe.

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

6.4. lépés: A webes API konfigurálása

Ez a minta egy hozzáférési jogkivonatot szerez be a megfelelő hatókörökkel, amelyeket a webalkalmazás használhat egy webes API-hoz. Maga a minta nem webes API-ként működik. Ehelyett egy meglévő webes API-t kell használnia, vagy létre kell hoznia egy újat. A webes API B2C-bérlőben való létrehozásáról szóló oktatóanyagért tekintse meg a hitelesítés engedélyezése a saját webes API-ban az Azure AD B2C használatával című témakört.

6.5. lépés: A mintaalkalmazás konfigurálása a webes API-val

Nyissa meg a app_config.py fájlt. Ez a fájl az Azure AD B2C identitásszolgáltatójáról tartalmaz információkat. Frissítse az alkalmazásbeállítások alábbi tulajdonságait:

Kulcs Érték
ENDPOINT A webes API URI-ja (például https://localhost:6000/hello).
SCOPE A létrehozott webes API-hatókörök (például["https://contoso.onmicrosoft.com/tasks-api/tasks.read", https://contoso.onmicrosoft.com/tasks-api/tasks.write"]).

6.6. lépés: A mintaalkalmazás futtatása

  1. A konzolon vagy a terminálon váltson a mintát tartalmazó könyvtárra.

  2. Ha az alkalmazás még mindig nem fut, indítsa újra az 5. lépésben található paranccsal.

  3. Válassza az alsóbb rétegbeli API meghívása lehetőséget.

    Screenshot showing how to call a web API.

7. lépés: Az alkalmazás üzembe helyezése

Egy éles alkalmazásban az alkalmazásregisztrációs átirányítási URI általában egy nyilvánosan elérhető végpont, ahol az alkalmazás fut, például https://contoso.com/getAToken.

A regisztrált alkalmazásokban bármikor hozzáadhat és módosíthat átirányítási URI-kat. Az átirányítási URI-kra a következő korlátozások vonatkoznak:

  • Az átirányítási URL-címnek a sémával httpskell kezdődnie.
  • Az átirányítási URL-cím megkülönbözteti a kis- és nagybetűkre vonatkozó adatokat. Az esetnek meg kell egyeznie a futó alkalmazás URL-elérési útjának esetével.

Következő lépések