povolení možností ověřování ve Node.js webové aplikaci pomocí Azure Active Directory B2C

tento článek popisuje, jak povolit, přizpůsobit a rozšířit možnosti ověřování Azure Active Directory B2C (Azure AD B2C) pro vaši webovou aplikaci v Node.js.

Než začnete, je důležité se seznámit s následujícími články:

Použití vlastní domény

Pomocí vlastní doménymůžete plně označit adresu URL pro ověřování. Z pohledu uživatele zůstávají uživatelé ve vaší doméně během procesu ověřování, ale nebudou přesměrováni na název domény Azure AD B2C b2clogin.com.

Pokud chcete v adrese URL odebrat všechny odkazy na "B2C", můžete v adrese URL požadavku na ověření nahradit identifikátor GUID ID tenanta taky název tenanta B2C, contoso.onmicrosoft.com. Můžete například změnit https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ na https://account.contosobank.co.uk/<tenant ID GUID>/ .

Pokud chcete použít vlastní doménu a ID tenanta v adrese URL pro ověřování, postupujte podle pokynů v části povolení vlastních domén. V kořenové složce projektu otevřete soubor . env . Tento soubor obsahuje informace o vašem Azure AD B2Covém zprostředkovateli identity.

V souboru . env udělejte toto:

  • Nahraďte všechny instance tenant-name.b2clogin.com s vlastní doménou. Například nahraďte tenant-name.b2clogin.com na login.contoso.com .
  • Nahraďte všechny instance tenant-name.onmicrosoft.com s vaším ID tenanta. Další informace najdete v tématu použití ID tenanta.

Následující konfigurace zobrazuje nastavení aplikace před změnou:

#B2C sign up and sign in user flow/policy authority
SIGN_UP_SIGN_IN_POLICY_AUTHORITY=https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1_susi
#B2C password reset user flow/policy authority
RESET_PASSWORD_POLICY_AUTHORITY=https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1_passwordreset
#B2C edit profile user flow/policy authority
EDIT_PROFILE_POLICY_AUTHORITY=https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1_edit
#B2C authority domain
AUTHORITY_DOMAIN=https://contoso.b2clogin.com
#client redirect url
APP_REDIRECT_URI=http://localhost:3000/redirect
#Logout endpoint 
LOGOUT_ENDPOINT=https://contoso.b2clogin.com/contoso.onmicrosoft.com/B2C_1_susi/oauth2/v2.0/logout?post_logout_redirect_uri=http://localhost:3000

Následující konfigurace zobrazuje nastavení aplikace po změně:

#B2C sign up and sign in user flow/policy authority
SIGN_UP_SIGN_IN_POLICY_AUTHORITY=https://login.contoso.com/12345678-0000-0000-0000-000000000000/B2C_1_susi
#B2C password reset user flow/policy authority
RESET_PASSWORD_POLICY_AUTHORITY=https://login.contoso.com/12345678-0000-0000-0000-000000000000/B2C_1_passwordreset
#B2C edit profile user flow/policy authority
EDIT_PROFILE_POLICY_AUTHORITY=https://login.contoso.com/12345678-0000-0000-0000-000000000000/B2C_1_edit
#B2C authority domain
AUTHORITY_DOMAIN=https://login.contoso.com
#client redirect url
APP_REDIRECT_URI=http://localhost:3000/redirect
#Logout endpoint 
LOGOUT_ENDPOINT=https://login.contoso.com/12345678-0000-0000-0000-000000000000/B2C_1_susi/oauth2/v2.0/logout?post_logout_redirect_uri=http://localhost:3000

Předem naplnit přihlašovací jméno

Během cesty uživatele přihlašování může aplikace cílit na konkrétního uživatele. Když je aplikace cílena na uživatele, může zadat parametr dotazu pomocí přihlašovacího jména uživatele v požadavku login_hint na autorizaci. Azure AD B2C automaticky naplní přihlašovací jméno a uživatel musí zadat jenom heslo.

Chcete-li předem naplnit přihlašovací jméno, postupujte následovně:

  1. Pokud používáte vlastní zásadu, přidejte požadovanou vstupní deklaraci identity, jak je popsáno v tématu Nastavení přímého přihlášení.
  2. authCodeRequestVyhledejte objekt a nastavte loginHint atribut pomocí pomocného parametru Login.

Následující fragmenty kódu ukazují, jak předat parametr pomocného parametru pro přihlášení. Používá bob@contoso.com se jako hodnota atributu.

authCodeRequest.loginHint = "bob@contoso.com"

return confidentialClientApplication.getAuthCodeUrl(authCodeRequest)
        .then((response) => {

Předvolba poskytovatele identity

Pokud jste nakonfigurovali cestu pro přihlášení k vaší aplikaci, aby zahrnovala účty sociálních sítí, jako je Facebook, LinkedIn nebo Google, můžete zadat domain_hint parametr. Tento parametr dotazu poskytuje nápovědu pro Azure AD B2C o poskytovateli sociální identity, který by se měl použít pro přihlášení. Například pokud aplikace určuje domain_hint=facebook.com , bude tok přihlášení přímo na přihlašovací stránku Facebooku.

Pokud chcete uživatele přesměrovat na externího zprostředkovatele identity, udělejte toto:

  1. Ověřte název domény externího poskytovatele identity. Další informace najdete v tématu přesměrování přihlášení k poskytovateli sociálních sítí.
  2. authCodeRequestVyhledejte objekt a nastavte domainHint atribut s odpovídajícím parametrem domény.

Následující fragmenty kódu ukazují, jak předat parametr pro doménu. Používá facebook.com jako hodnotu atributu.

authCodeRequest.domainHint = "facebook.com"

return confidentialClientApplication.getAuthCodeUrl(authCodeRequest)
        .then((response) => {

Zadat jazyk uživatelského rozhraní

Přizpůsobení jazyka v Azure AD B2C umožňuje, aby tok uživatelů vyhovoval nejrůznějším jazykům, které vyhovují potřebám vašich zákazníků. Další informace najdete v tématu přizpůsobení jazyka.

Chcete-li nastavit preferovaný jazyk, postupujte následovně:

  1. Nakonfigurujte vlastní nastavení jazyka.
  2. authCodeRequestVyhledejte objekt a nastavte extraQueryParameters atribut s odpovídajícím ui_locales parametrem extra.

Následující fragmenty kódu ukazují, jak předat ui_locales parametr. Používá es-es se jako hodnota atributu.

authCodeRequest.extraQueryParameters = {"ui_locales" : "es-es"}

return confidentialClientApplication.getAuthCodeUrl(authCodeRequest)
        .then((response) => {

Předat parametr vlastního řetězce dotazu

Pomocí vlastních zásad můžete předat parametr vlastního řetězce dotazu. Dobrým příkladem použití je případ, kdy chcete dynamicky měnit obsah stránky.

Pokud chcete předat parametr řetězce vlastního dotazu, udělejte toto:

  1. Nakonfigurujte element ContentDefinitionParameters .
  2. authCodeRequestVyhledejte objekt a nastavte extraQueryParameters atribut s odpovídajícím parametrem extra.

Následující fragmenty kódu ukazují, jak předat campaignId parametr řetězce vlastního dotazu. Používá germany-promotion se jako hodnota atributu.

authCodeRequest.extraQueryParameters = {"campaignId" : "germany-promotion"}

return confidentialClientApplication.getAuthCodeUrl(authCodeRequest)
        .then((response) => {

Předat pomocný parametr tokenu ID

Aplikace předávající strany může jako součást autorizační žádosti OAuth2 Odeslat příchozí JSON Web Token (JWT). Vstupní token je pomocným požadavkem na uživatele nebo žádost o autorizaci. Azure AD B2C ověří token a pak vyextrahuje deklaraci identity.

Pokud chcete v žádosti o ověření zahrnout nápovědu k ID tokenu, udělejte toto:

  1. Ve vlastních zásadách definujte technický profil pro token ID.
  2. authCodeRequestVyhledejte objekt a nastavte extraQueryParameters atribut s odpovídajícím id_token_hint parametrem extra.

Následující fragmenty kódu ukazují, jak definovat pomocný parametr tokenu ID:

authCodeRequest.extraQueryParameters = {"id_token_hint": idToken}

return confidentialClientApplication.getAuthCodeUrl(authCodeRequest)

Konfigurovat protokolování

Knihovna MSAL generuje zprávy protokolu, které mohou pomáhat diagnostikovat problémy. Aplikace může nakonfigurovat protokolování. Aplikace vám taky může poskytnout vlastní kontrolu nad úrovní podrobností a to, jestli se mají protokolovat osobní údaje a data organizace.

Doporučujeme vytvořit MSAL zpětného volání protokolování a poskytnout uživatelům možnost Odeslat protokoly, když budou mít problémy s ověřováním. MSAL poskytuje tyto úrovně podrobností protokolování:

  • Chyba: došlo k chybě nějakého problému a vygenerovala se chyba. Tato úroveň se používá pro ladění a identifikaci problémů.
  • Upozornění: v některých případech došlo k chybě nebo selhání, ale informace jsou určené pro diagnostiku a řešení problémů.
  • Informace: MSAL zaznamenává události, které jsou určeny pro informativní účely a nikoli pro ladění.
  • Verbose: Toto je výchozí úroveň. MSAL zaznamená všechny podrobnosti o chování knihovny.

Protokolovací nástroj MSAL ve výchozím nastavení nezachytí žádná osobní ani organizační data. Knihovna nabízí možnost povolit protokolování osobních a organizačních dat, pokud se k tomu rozhodnete.

Pokud chcete nakonfigurovat protokolování, v index.jsnakonfigurujte následující klíče:

  • logLevel umožňuje zadat úroveň protokolování. Možné hodnoty: Error , Warning , InfoVerbose a.
  • piiLoggingEnabled povoluje vstup osobních údajů. Možné hodnoty: true nebo false .

Následující fragment kódu ukazuje, jak nakonfigurovat protokolování MSAL:

 const confidentialClientConfig = {
    ...
    system: {
        loggerOptions: {
            loggerCallback(loglevel, message, containsPii) {
                console.log(message);
            },
            piiLoggingEnabled: false,
            logLevel: msal.LogLevel.Verbose,
        }
    }
};

Další kroky

Přečtěte si další informace o možnostech konfiguraceMSAL.js.