Sdílet prostřednictvím


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

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. Přečte deklarace identity tokenu ID.
    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

Pokud chcete aplikaci povolit přihlášení pomocí Azure AD B2C a volat webové rozhraní API, musíte ve svém tenantovi Azure AD B2C zaregistrovat dvě aplikace:

  • 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 přesměrování je koncový bod, na který se uživatel přesměruje 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. 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 that describes a single-page application with web A P I, registrations, and tokens.

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í 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.

Tok 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řesáhne 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.

Předpoklady

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 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 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 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.

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 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.

2.3 Registrace aplikace Angular

Pokud chcete vytvořit registraci aplikace Angular, 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. Jako Název zadejte název aplikace. Zadejte například MyApp.
  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 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 souhlas správce s otevřenými a offline přístupy.
  9. Vyberte Zaregistrovat.
  10. Poznamenejte si hodnotu ID aplikace (klienta) pro použití v pozdějším kroku při konfiguraci webové aplikace. Screenshot that shows how to get the Angular application I D.

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ě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 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 Konfigurace ukázky 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 Key Hodnota
b2cPolicies názvy Tok uživatele nebo vlastní zásady, které jste vytvořili v kroku 1.
b2cPolicies Orgány Nahraďte your-tenant-name názvem 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>.
b2cPolicies authorityDomain Název vašeho tenanta Azure AD B2C Například: contoso.onmicrosoft.com.
Konfigurace clientId ID aplikace Angular z kroku 2.3.
protectedResources endpoint Adresa URL webového rozhraní API: http://localhost:5000/api/todolist.
protectedResources obory 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 archiv *.zip 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 Key Hodnota
přihlašovací údaje tenantName První část názvu tenanta Azure AD B2C Například: contoso.
přihlašovací údaje Clientid ID aplikace webového rozhraní API z kroku 2.1. V předchozím diagramu se jedná o aplikaci s ID aplikace: 2.
přihlašovací údaje issuer (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> ID tenanta Azure AD B2C.
Zásady policyName 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í.
resource rozsah Rozsahy registrace vaší aplikace webového rozhraní API z kroku 2.5.

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

{
    "credentials": {
        "tenantName": "<your-tenant-namee>",
        "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. Pří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. Pří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 v http://localhost:4200 prohlížeči a zobrazte aplikaci.

  4. Vyberte volbu Přihlásit se.

    Screenshot that shows the Angular sample app with the login link.

  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.

    Screenshot that shows the Angular sample app with the user profile, and the call to the to-do list.

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

    Screenshot that shows the Angular sample app's call to the to-do list.

Nasazení aplikace

V produkční aplikaci je identifikátor URI přesměrování pro registraci aplikace obvykle veřejně přístupný koncový bod, ve kterém je vaše aplikace spuštěná, 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.

Další kroky