Sdílet prostřednictvím


Konfigurace ověřování v ukázkové jednostrákové aplikaci Angular pomocí Azure Active Directory B2C

Důležité

Od 1. května 2025 už nebude Azure AD B2C k dispozici k nákupu pro nové zákazníky. Další informace najdete v našich nejčastějších dotazech.

Tento článek používá ukázkovou jednostránkovou aplikaci Angular (SPA) k ilustraci přidání ověřování Azure Active Directory B2C (Azure AD B2C) do aplikací Angular.

Přehled

OpenID Connect (OIDC) je ověřovací protokol založený na OAuth 2.0, který můžete použít k bezpečnému přihlášení uživatele do aplikace. Tato ukázka Angular používá MSAL Angular a prohlížeč MSAL. MSAL je knihovna poskytovaná Microsoftem, která zjednodušuje přidávání podpory ověřování a autorizace do angular SPA.

Tok přihlášení

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

  1. Uživatel aplikaci otevře a vybere Přihlásit se.
  2. Aplikace spustí žádost o ověření a přesměruje uživatele do Azure AD B2C.
  3. Uživatel se zaregistruje nebo přihlásí a resetuje heslo nebo se přihlásí pomocí účtu sociální sítě.
  4. Po úspěšném přihlášení vrátí Azure AD B2C autorizační kód do aplikace. Aplikace provede následující akce:
    1. Vymění autorizační kód tokenu ID, přístupového tokenu a obnovovacího tokenu.
    2. Čte nároky identity tokenu.
    3. Uloží přístupový token a obnovovací token do mezipaměti v paměti pro pozdější použití. Přístupový token umožňuje uživateli volat chráněné prostředky, jako je webové rozhraní API. Obnovovací token se používá k získání nového přístupového tokenu.

Registrace aplikace

Pro umožnění přihlášení vaší aplikace pomocí Azure AD B2C a volání webového rozhraní API musíte zaregistrovat dvě aplikace ve vašem prostředí Azure AD B2C:

  • Registrace jednostrákové aplikace (Angular) umožňuje vaší aplikaci přihlásit se pomocí Azure AD B2C. Během registrace aplikace zadáte identifikátor URI přesměrování. Identifikátor URI pro přesměrování je koncový bod, na který je uživatel přesměrován po ověření prostřednictvím Azure AD B2C. Proces registrace aplikace vygeneruje ID aplikace označované také jako ID klienta, které jednoznačně identifikuje vaši aplikaci. Tento článek používá ukázkové 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. Tento článek používá ukázkové ID aplikace: 2. Udělte aplikaci (ID aplikace: 1) oprávnění k oborům webového rozhraní API (ID aplikace: 2).

Následující diagram popisuje registrace aplikací a architekturu aplikace.

Diagram, který popisuje jednostrákovou aplikaci s webovými A P I, registracemi a tokeny

Volání webového rozhraní API

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í prostřednictvím nosného tokenu. 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.

Proces 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í z Azure AD B2C, aby ukončila relaci Azure AD B2C.
  4. Uživatelé se přesměrují zpět do aplikace.

Požadavky

Než budete postupovat podle pokynů v tomto článku, ujistěte se, že je váš počítač spuštěný:

Krok 1: Konfigurace toku uživatele

Když se uživatelé pokusí přihlásit k vaší aplikaci, aplikace prostřednictvím toku uživatele spustí žádost o ověření ke koncovému bodu autorizace. 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 uživatelský tok nebo vlastní pravidlo. 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é proces zapomenutého hesla.
  • Upravování profilu uživatelského procesu, například edit_profile.
  • Tok resetování hesla uživatele, například reset_password.

Azure AD B2C přidává na začátek B2C_1_ k názvu uživatelského toku. Například susi se stane B2C_1_susi.

Krok 2: Registrace angular SPA a rozhraní API

V tomto kroku vytvoříte registrace pro Angular SPA a aplikaci webového rozhraní API. Zadáte také rozsahy webového rozhraní API.

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 do Azure Portalu.

  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 stránce Nastavení portálu | Adresáře a předplatná vyhledejte svůj 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). Ponechte výchozí hodnoty pro identifikátor URI 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 ID aplikace webového API.

2.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 Spravovatvyberte Zpřístupnit rozhraní API.

  3. Vedle 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 APIvyberte Přidat obor.

  5. Chcete-li vytvořit obor, který definuje přístup pro čtení k rozhraní API:

    1. Jako název oboru zadejte tasks.read.
    2. Jako zobrazovaný název souhlasu správce zadejte přístup pro čtení k rozhraní API pro úlohy.
    3. Jako popis souhlasu správce zadejte 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. Jako zobrazovaný název souhlasu správce zadejte přístup pro zápis k rozhraní API úloh.
    3. Jako popis souhlasu správce zadejte umožňuje zápis do rozhraní API pro úlohy.
  8. Vyberte Přidat rozsah.

2.3 Registrace aplikace Angular

Pokud chcete vytvořit registraci aplikace Angular, postupujte takto:

  1. Přihlaste se do Azure Portalu.
  2. Pokud máte přístup k více tenantům, vyberte ikonu Nastavení v horní nabídce a přepněte se do svého tenanta Azure AD B2C z nabídky Adresáře + předplatná.
  3. Na webu Azure Portal vyhledejte a vyberte Azure AD B2C.
  4. Vyberte Registrace aplikacía pak vyberte Nová registrace.
  5. Jako Název zadejte název aplikace. Zadejte například MyApp.
  6. V části Podporované typy účtůvyberte Účty v určitém poskytovateli identity nebo organizačním adresáři (pro ověřování uživatelů s uživatelskými procesy).
  7. V části Identifikátor URI přesměrování vyberte jednostránková aplikace (SPA), a pak zadejte http://localhost:4200 do pole adresa URL.
  8. V části Oprávnění zaškrtněte políčko Udělit správní souhlas s oprávněními openid a offline přístupu.
  9. Vyberte Zaregistrovat.
  10. Poznamenejte si hodnotu ID aplikace (klienta) pro použití v pozdějším kroku při konfiguraci webové aplikace. Snímek obrazovky znázorňující, jak získat ID aplikace Angular

2.5 Udělení oprávnění

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 potom ověřte, že se pod Status pro oba obory zobrazuje Uděleno pro ....

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

    Snímek obrazovky s podoknem nakonfigurovaných oprávnění zobrazující udělení oprávnění ke čtení

Krok 3: Získání vzorového kódu Angular

Tato ukázka ukazuje, jak může jednostránka Angular používat Azure AD B2C k registraci a přihlašování uživatelů. Aplikace pak získá přístupový token a zavolá chráněné webové rozhraní API.

Stáhněte si soubor .zip ukázky nebo naklonujte ukázku z úložiště GitHub pomocí následujícího příkazu:

git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git

3.1 Nastavte ukázku Angular

Teď, když jste získali ukázku SPA, aktualizujte kód hodnotami Azure AD B2C a webového rozhraní API. V ukázkové složce ve složce src/app otevřete soubor auth-config.ts . Aktualizujte klíče odpovídajícími hodnotami:

Oddíl Klíč Hodnota
B2C zásady jména Tok uživatele nebo vlastní zásady, které jste vytvořili v kroku 1.
B2C zásady úřady Nahraďte your-tenant-name názvem svého tenanta Azure AD B2C. Například použijte contoso.onmicrosoft.com. Pak nahraďte název zásady tokem uživatele nebo vlastní zásadou, kterou jste vytvořili v kroku 1. Například: https://<your-tenant-name>.b2clogin.com/<your-tenant-name>.onmicrosoft.com/<your-sign-in-sign-up-policy>.
B2C zásady doména autority Název vašeho tenanta Azure AD B2C Například: contoso.onmicrosoft.com.
Konfigurace ID klienta ID aplikace Angular z kroku 2.3.
chráněné zdroje koncový bod Adresa URL webového rozhraní API: http://localhost:5000/api/todolist.
chráněné zdroje oblasti / rozsahy Obory webového rozhraní API, které jste vytvořili v kroku 2.2. Například: b2cScopes: ["https://<your-tenant-name>.onmicrosoft.com/tasks-api/tasks.read"].

Výsledný kód src,app/auth-config.ts by měl vypadat podobně jako v následující ukázce:

export const b2cPolicies = {
     names: {
         signUpSignIn: "b2c_1_susi_reset_v2",
         editProfile: "b2c_1_edit_profile_v2"
     },
     authorities: {
         signUpSignIn: {
             authority: "https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/b2c_1_susi_reset_v2",
         },
         editProfile: {
             authority: "https://your-tenant-name.b2clogin.com/your-tenant-name.onmicrosoft.com/b2c_1_edit_profile_v2"
         }
     },
     authorityDomain: "your-tenant-name.b2clogin.com"
 };
 
 
export const msalConfig: Configuration = {
     auth: {
         clientId: '<your-MyApp-application-ID>',
         authority: b2cPolicies.authorities.signUpSignIn.authority,
         knownAuthorities: [b2cPolicies.authorityDomain],
         redirectUri: '/', 
     },
    // More configuration here
 }

export const protectedResources = {
  todoListApi: {
    endpoint: "http://localhost:5000/api/todolist",
    scopes: ["https://your-tenant-namee.onmicrosoft.com/api/tasks.read"],
  },
}

Krok 4: Získání ukázkového kódu webového rozhraní API

Teď, když je webové rozhraní API zaregistrované a definovali jste jeho obory, nakonfigurujte kód webového rozhraní API tak, aby fungoval s vaším tenantem Azure AD B2C.

Stáhněte si *.zip archiv nebo naklonujte ukázkový projekt webového rozhraní API z GitHubu. Pomocí následujícího příkazu můžete také přejít přímo na projekt Azure-Samples/active-directory-b2c-javascript-nodejs-webapi na GitHubu:

git clone https://github.com/Azure-Samples/active-directory-b2c-javascript-nodejs-webapi.git

4.1 Konfigurace webového rozhraní API

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

Oddíl Klíč Hodnota
pověření názevNájemce První část názvu tenanta Azure AD B2C Například: contoso.
pověření Klientský ID ID aplikace webového rozhraní API z kroku 2.1. V předchozím diagramu se jedná o aplikaci s ID aplikace: 2.
pověření emitent (Volitelné) Hodnota deklarace identity vystavitele iss tokenu. Azure AD B2C ve výchozím nastavení vrátí token v následujícím formátu: https://<your-tenant-name>.b2clogin.com/<your-tenant-ID>/v2.0/. Nahraďte <your-tenant-name> první částí názvu tenanta Azure AD B2C. Nahraďte <your-tenant-ID> svým ID Azure AD B2C tenanta.
politiky název politiky Tok uživatele nebo vlastní zásady, které jste vytvořili v kroku 1. Pokud vaše aplikace používá více toků uživatelů nebo vlastních zásad, zadejte pouze jednu. Použijte například tok uživatele pro registraci nebo přihlášení.
zdroj rozsah Rozsahy registrace vaší aplikace pro webové API rozhraní z kroku 2.5.

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

{
    "credentials": {
        "tenantName": "<your-tenant-name>",
        "clientID": "<your-webapi-application-ID>",
        "issuer": "https://<your-tenant-name>.b2clogin.com/<your-tenant-ID>/v2.0/"
    },
    "policies": {
        "policyName": "b2c_1_susi"
    },
    "resource": {
        "scope": ["tasks.read"] 
    },
    // More settings here
} 

Krok 5: Spuštění angular SPA a webového rozhraní API

Teď jste připraveni otestovat přístup k rozhraní API s vymezeným oborem Angular. V tomto kroku spusťte webové rozhraní API i ukázkovou aplikaci Angular na místním počítači. Pak se přihlaste k aplikaci Angular a výběrem tlačítka TodoList spusťte požadavek na chráněné rozhraní API.

Spuštění webového rozhraní API

  1. Otevřete okno konzoly a přejděte do adresáře, který obsahuje ukázku webového rozhraní API. Například:

    cd active-directory-b2c-javascript-nodejs-webapi
    
  2. Spusťte následující příkazy:

    npm install && npm update
    node index.js
    

    V okně konzoly se zobrazí číslo portu, kde je aplikace hostovaná:

    Listening on port 5000...
    

Spuštění aplikace Angular

  1. Otevřete další okno konzoly a přejděte do adresáře, který obsahuje ukázku Angular. Například:

    cd ms-identity-javascript-angular-tutorial-main/3-Authorization-II/2-call-api-b2c/SPA
    
  2. Spusťte následující příkazy:

    npm install && npm update
    npm start
    

    V okně konzoly se zobrazí číslo portu, kde je aplikace hostovaná:

    Listening on port 4200...
    
  3. Přejděte na http://localhost:4200 ve vašem prohlížeči, abyste zobrazili aplikaci.

  4. Vyberte přihlášení.

    Snímek obrazovky znázorňující ukázkovou aplikaci Angular s přihlašovacím odkazem

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

  6. Po úspěšném přihlášení by se měl zobrazit váš profil. V nabídce vyberte TodoList.

    Snímek obrazovky znázorňující ukázkovou aplikaci Angular s profilem uživatele a voláním seznamu to-do

  7. Pokud chcete do seznamu přidat nové položky, vyberte Přidat nebo pomocí ikon odstraňte nebo upravte položky.

    Snímek obrazovky znázorňující volání ukázkové aplikace Angular do seznamu to-do

Nasazení aplikace

V produkční aplikaci je URI pro registraci aplikace obvykle veřejně přístupný koncový bod, na kterém vaše aplikace běží, například https://contoso.com.

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 odpovědi musí začínat schématem https.
  • V adrese URL odpovědi se rozlišují malá a velká písmena. Jeho případ se musí shodovat s případem cesty URL spuštěné aplikace.