Konfigurace ověřování v ukázkové webové aplikaci, která volá webové rozhraní API pomocí Azure AD B2C

Tento článek používá ukázkovou ASP.NET webové aplikace, která volá webové rozhraní API, a ilustruje, jak do webových aplikací přidat ověřování Azure Active Directory B2C (Azure AD B2C).

Důležité

Ukázková ASP.NET webová aplikace, na kterou odkazuje tento článek, se používá k volání webového rozhraní API s nosným tokenem. Informace o webové aplikaci, která nevolá webové rozhraní API, najdete v tématu Konfigurace ověřování v ukázkové webové aplikaci pomocí Azure AD B2C.

Přehled

OpenID Connect (OIDC) je ověřovací protokol, který je založený na OAuth 2.0. OIDC můžete použít k bezpečnému přihlášení uživatele k aplikaci. Tato ukázka webové aplikace používá web Microsoft Identity Web. Microsoft Identity Web je sada ASP.NET Core knihoven, které zjednodušují přidávání podpory ověřování a autorizace do webových aplikací, které můžou volat zabezpečené webové rozhraní API.

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

  1. Uživatelé přejdou do webové aplikace a vyberou Přihlásit se.

  2. Aplikace zahájí žádost o ověření a přesměruje uživatele na Azure AD B2C.

  3. Uživatelé se zaregistrují nebo se přihlásí a resetují heslo. Případně se můžou přihlásit pomocí účtu sociální sítě.

  4. Po přihlášení uživatelů vrátí Azure AD B2C do aplikace autorizační kód.

  5. Aplikace pak provede následující:

    a. Autorizační kód vymění za token ID, přístupový token a obnovovací token.
    b. Přečte deklarace identity tokenu ID a zachová soubor cookie autorizace aplikace.
    c. Tento obnovovací token se uloží do mezipaměti v paměti pro pozdější použití.

Přehled registrace aplikací

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

  • Registrace webové aplikace umožňuje aplikaci přihlásit se pomocí Azure AD B2C. Během registrace 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 Azure AD B2C po dokončení ověřování pomocí Azure AD B2C. Proces registrace aplikace vygeneruje ID aplikace, označované také jako ID klienta, které jedinečně identifikuje vaši aplikaci. Vytvoříte také tajný klíč klienta, který vaše aplikace používá k bezpečnému získání tokenů.

  • Registrace webového rozhraní API umožňuje vaší aplikaci volat zabezpečené webové rozhraní API. Registrace zahrnuje obory webového rozhraní API. Obory poskytují způsob, jak spravovat oprávnění k chráněným prostředkům, jako je vaše webové rozhraní API. K oborům webového rozhraní API udělíte webové aplikaci oprávnění. Když je požadován přístupový token, vaše aplikace určuje požadovaná oprávnění v parametru scope požadavku.

Architektura a registrace aplikací jsou znázorněny v následujícím diagramu:

Diagram webové aplikace s registracemi a tokeny volání webového rozhraní API

Volání webového rozhraní API

Po dokončení ověřování uživatelé interagují 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 rozsah přístupového tokenu neodpovídá oborům webového rozhraní API, získá ověřovací knihovna nový přístupový token se správnými obory.

Odhlášení

Tok odhlášení zahrnuje následující kroky:

  1. Z aplikace se uživatelé odhlásí.
  2. Aplikace vymaže objekty relace a knihovna ověřování vymaže mezipaměť tokenů.
  3. Aplikace přenese uživatele do koncového bodu pro odhlášení Azure AD B2C, aby ukončila relaci Azure AD B2C.
  4. Uživatelé jsou přesměrováni zpět do aplikace.

Požadavky

Počítač, na kterém běží:

Krok 1: Konfigurace toku uživatele

Když se uživatelé pokusí přihlásit k vaší 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í. Po dokončení toku uživatele Azure AD B2C vygeneruje token a pak uživatele přesměruje zpět do vaší aplikace.

Pokud jste to ještě neudělali, vytvořte tok uživatele nebo vlastní zásadu. Opakováním kroků vytvořte tři samostatné toky uživatelů následujícím způsobem:

  • Kombinovaný tok přihlášení a registrace uživatele, například susi. Tento tok uživatele také podporuje prostředí Zapomenuté heslo .
  • Tok uživatele pro úpravu profilu , například edit_profile.
  • Tok uživatele pro resetování hesla , například reset_password.

Azure AD B2C se předečte B2C_1_ na název toku uživatele. Například se susi stane B2C_1_susi.

Krok 2: Registrace webových aplikací

V tomto kroku vytvoříte webovou aplikaci a registraci aplikace webového rozhraní API a určíte rozsahy webového rozhraní API.

Krok 2.1: Registrace aplikace webového rozhraní API

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

  1. Přihlaste se k webu Azure Portal.

  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. Na | nastavení portálu Na stránce Adresáře a předplatná vyhledejte adresář Azure AD B2C v seznamu Název adresáře a pak vyberte Přepnout.

  4. V Azure Portal vyhledejte a vyberte Azure AD B2C.

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

  6. Do pole Název zadejte název aplikace (například my-api1). Ponechte výchozí hodnoty identifikátoru URI pro přesměrování a Podporované typy účtů.

  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.

    Snímek obrazovky, který ukazuje, jak získat webovou aplikaci P I D

Krok 2.2: Konfigurace oborů aplikací webového rozhraní API

  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ž webová aplikace požaduje přístupový token pro webové rozhraní API, měla by tento identifikátor URI přidat jako předponu pro každý obor, který pro rozhraní API definujete.

  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. Jako Správa zobrazovaný název souhlasu zadejte přístup pro čtení k rozhraní API úloh.
    3. Pokud chcete Správa popis souhlasu, zadejte Povolit přístup pro čtení k rozhraní API úloh.
  6. Vyberte Přidat obor.

  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. Jako Správa zobrazovaný název souhlasu zadejte Přístup k zápisu do rozhraní API úloh.
    3. Pokud chcete Správa popis souhlasu, zadejte Povolit přístup k zápisu do rozhraní API úloh.
  8. Vyberte Přidat obor.

Krok 2.3: Registrace webové aplikace

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

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

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

  3. V části Podporované typy účtů vyberte Účty v libovolném zprostředkovateli identity nebo organizačním adresáři (pro ověřování uživatelů s toky uživatelů).

  4. V části Identifikátor URI přesměrování vyberte Web a pak do pole ADRESA URL zadejte https://localhost:5000/signin-oidc.

  5. V části Oprávnění zaškrtněte políčko Udělit souhlas správce s přístupová oprávnění openid a offline přístupová oprávnění.

  6. Vyberte Zaregistrovat.

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

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

    Snímek obrazovky se stránkou Přehled webové aplikace pro záznam ID webové aplikace

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

Vytvořte tajný klíč klienta pro zaregistrovanou 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 Tajné kódy certifikátů&.
  2. Vyberte Nový tajný klíč klienta.
  3. Do pole Popis zadejte popis tajného klíče klienta (například clientecret1).
  4. V části Konec platnosti vyberte dobu, po kterou je tajný klíč platný, a pak vyberte Přidat.
  5. Zaznamenejte hodnotu tajného klíče. Tuto hodnotu použijete pro konfiguraci v pozdějším kroku.

Krok 2.5: Udělení oprávnění webové aplikaci pro webové rozhraní API

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ělit souhlas správce pro < název >vašeho tenanta.

  9. Vyberte Ano.

  10. Vyberte Aktualizovat a pak ověřte, že se v části Stav pro oba obory zobrazuje Hodnota udělená.

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

    Snímek obrazovky s nakonfigurovaným podoknem oprávnění znázorňující udělení oprávnění ke čtení

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

Stáhněte si soubor zip nebo spusťte následující příkaz Bash a naklonujte ukázkovou webovou aplikaci z GitHubu.

git clone https://github.com/Azure-Samples/active-directory-aspnetcore-webapp-openidconnect-v2

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

Krok 4: Konfigurace ukázkového webového rozhraní API

Ve složce s ukázkou otevřete ve složce 4-WebApp-your-API/4-2-B2C/TodoListService projekt TodoListService.csproj pomocí sady Visual Studio nebo Visual Studio Code.

V kořenové složce projektu otevřete soubor appsettings.json . Tento soubor obsahuje informace o zprostředkovateli identity Azure AD B2C. Aplikace webového rozhraní API používá tyto informace k ověření přístupového tokenu, který webová aplikace předává jako nosný token. Aktualizujte následující vlastnosti nastavení aplikace:

Sekce Klíč Hodnota
AzureAdB2C Instance První část vašeho Azure AD název tenanta B2C. Například, https://contoso.b2clogin.com.
AzureAdB2C Doména Úplný název tenanta Azure AD B2C. Například, contoso.onmicrosoft.com.
AzureAdB2C ClientId ID aplikace webového rozhraní API z kroku 2.1.
AzureAdB2C SignUpSignInPolicyId Toky uživatele nebo vlastní zásady, které jste vytvořili v kroku 1.

Konečný konfigurační soubor by měl vypadat jako následující soubor JSON:

{
  "AzureAdB2C": {
    "Instance": "https://contoso.b2clogin.com",
    "Domain": "contoso.onmicrosoft.com",
    "ClientId": "<web-api-app-application-id>",
    "SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
    "SignUpSignInPolicyId": "<your-sign-up-in-policy>"
  },
  // More settings here
}

Krok 4.1: Nastavení zásad oprávnění

Webové rozhraní API ověří, že se uživatel ověřil pomocí nosné tokeny a nosný token má nakonfigurované akceptované obory. Pokud nosný token nemá žádný z těchto přijatých oborů, webové rozhraní API vrátí stavový kód HTTP 403 (Zakázáno) a zapíše do textu odpovědi zprávu s informacemi o tom, jaké obory se v tokenu očekávají.

Pokud chcete nakonfigurovat akceptované obory, otevřete Controller/TodoListController.cs třídu a nastavte název oboru bez úplného identifikátoru URI.

[RequiredScope("tasks.read")]

Krok 4.2: Spuštění ukázkové aplikace webového rozhraní API

Pokud chcete webové aplikaci povolit volání ukázky webového rozhraní API, spusťte webové rozhraní API následujícím způsobem:

  1. Pokud se o to požádáte, obnovte závislosti.
  2. Sestavte a spusťte projekt.
  3. Po sestavení projektu spustí Visual Studio nebo Visual Studio Code webové rozhraní API v prohlížečích s následující adresou: https://localhost:44332.

Krok 5: Konfigurace ukázkové webové aplikace

V ukázkové složce ve 4-WebApp-your-API/4-2-B2C/Client složce otevřete projekt TodoListClient.csproj v sadě Visual Studio nebo Visual Studio Code.

V kořenové složce projektu otevřete appsettings.json soubor. Tento soubor obsahuje informace o zprostředkovateli identity Azure AD B2C. Webová aplikace používá tyto informace k navázání vztahu důvěryhodnosti s Azure AD B2C, přihlašování a odhlašování uživatelů, získávání tokenů a jejich ověřování. Aktualizujte následující vlastnosti nastavení aplikace:

Sekce Klíč Hodnota
AzureAdB2C Instance První část vašeho Azure AD název tenanta B2C (například https://contoso.b2clogin.com).
AzureAdB2C Doména Váš Azure AD úplný název tenanta B2C (například contoso.onmicrosoft.com).
AzureAdB2C ClientId ID webové aplikace z kroku 2.3.
AzureAdB2C ClientSecret Tajný kód webové aplikace z kroku 2.4.
AzureAdB2C SignUpSignInPolicyId Toky uživatele nebo vlastní zásady, které jste vytvořili v kroku 1.
Seznam úkolů Seznam úkolů Obory webového rozhraní API, které jste vytvořili v kroku 2.5.
Seznam úkolů TodoListBaseAddress Základní identifikátor URI vašeho webového rozhraní API (například https://localhost:44332).

Konečný konfigurační soubor by měl vypadat jako v následujícím formátu JSON:

{
  "AzureAdB2C": {
    "Instance": "https://contoso.b2clogin.com",
    "Domain": "contoso.onmicrosoft.com",
    "ClientId": "<web-app-application-id>",
    "ClientSecret": "<web-app-application-secret>",  
    "SignedOutCallbackPath": "/signout/<your-sign-up-in-policy>",
    "SignUpSignInPolicyId": "<your-sign-up-in-policy>"
  },
  "TodoList": {
    "TodoListScope": "https://contoso.onmicrosoft.com/api/demo.read",
    "TodoListBaseAddress": "https://localhost:44332"
  }
}

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

  1. Sestavte a spusťte projekt.
  2. Přejděte na adresu https://localhost:5000.
  3. Dokončete proces registrace nebo přihlášení.

Po úspěšném ověření se na navigačním panelu zobrazí vaše zobrazované jméno. Pokud chcete zobrazit deklarace identity, které Azure AD token B2C vrátí do vaší aplikace, vyberte Seznam úkolů.

Snímek obrazovky s deklaracemi identity tokenů webové aplikace

Nasazení aplikace

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

Identifikátory URI přesměrování můžete v registrovaných aplikacích kdykoli přidat a upravit. Na identifikátory URI přesměrování platí následující omezení:

  • Adresa URL odpovědi musí začínat schématem https.
  • V adrese URL odpovědi se rozlišují malá a velká písmena. Jeho velikost se musí shodovat s adresou URL cesty spuštěné aplikace.

Mezipaměť tokenů pro webovou aplikaci

Ukázka webové aplikace používá serializaci mezipaměti tokenů v paměti. Tato implementace je skvělá v ukázkách. Je také vhodný v produkčních aplikacích za předpokladu, že vám nevadí, že dojde ke ztrátě mezipaměti tokenů při restartování webové aplikace.

Pro produkční prostředí doporučujeme použít mezipaměť distribuované paměti. Například mezipaměť Redis, NCache nebo mezipaměť SQL Server. Podrobnosti o implementacích mezipaměti distribuované paměti najdete v tématu Serializace mezipaměti tokenů.

Další kroky