Dela via


Aktivera autentiseringsalternativ i en Node.js webbapp med hjälp av Azure Active Directory B2C

Den här artikeln beskriver hur du aktiverar, anpassar och förbättrar autentiseringsupplevelsen för Azure Active Directory B2C (Azure AD B2C) för din Node.js webbapp.

Innan du börjar är det viktigt att bekanta dig med följande artiklar:

Använda en anpassad domän

Genom att använda en anpassad domän kan du helt märka autentiserings-URL:en. Ur ett användarperspektiv finns användarna kvar på din domän under autentiseringsprocessen, i stället för att omdirigeras till Azure AD B2C b2clogin.com domännamn.

Om du vill ta bort alla referenser till "b2c" i URL:en kan du också ersätta ditt B2C-klientnamn, contoso.onmicrosoft.com, i URL:en för autentiseringsbegäran med ditt klientorganisations-ID-GUID. Du kan till exempel ändra https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ till https://account.contosobank.co.uk/<tenant ID GUID>/.

Om du vill använda en anpassad domän och ditt klientorganisations-ID i autentiserings-URL:en följer du anvisningarna i Aktivera anpassade domäner. Öppna .env-filen under projektrotmappen. Den här filen innehåller information om din Azure AD B2C-identitetsprovider.

Gör följande i .env-filen :

  • Ersätt alla instanser av tenant-name.b2clogin.com med din anpassade domän. Ersätt till exempel tenant-name.b2clogin.com, till login.contoso.com.
  • Ersätt alla instanser av tenant-name.onmicrosoft.com med ditt klientorganisations-ID. Mer information finns i Använda klientorganisations-ID.

Följande konfiguration visar appinställningarna före ändringen:

#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

Följande konfiguration visar appinställningarna efter ändringen:

#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

Fyll i inloggningsnamnet i förväg

Under en inloggningsanvändarresa kan din app riktas mot en viss användare. När en app riktar sig till en användare kan den i auktoriseringsbegäran login_hint ange frågeparametern med användarens inloggningsnamn. Azure AD B2C fyller automatiskt i inloggningsnamnet och användaren behöver bara ange lösenordet.

Gör följande för att fylla i inloggningsnamnet i förväg:

  1. Om du använder en anpassad princip lägger du till det inkommande anspråk som krävs enligt beskrivningen i Konfigurera direkt inloggning.
  2. Leta upp objektet authCodeRequest och ange loginHint attributet med inloggningstipset.

Följande kodfragment visar hur du skickar parametern för inloggningstips. Den använder bob@contoso.com som attributvärde.

authCodeRequest.loginHint = "bob@contoso.com"

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

Förmarkera en identitetsprovider

Om du har konfigurerat inloggningsresan för ditt program för att inkludera sociala konton, till exempel Facebook, LinkedIn eller Google, kan du ange parametern domain_hint . Den här frågeparametern ger ett tips om Azure AD B2C om den sociala identitetsprovider som ska användas för inloggning. Om programmet till exempel anger går inloggningsflödet domain_hint=facebook.comdirekt till Facebook-inloggningssidan.

Om du vill omdirigera användare till en extern identitetsprovider gör du följande:

  1. Kontrollera domännamnet för din externa identitetsprovider. Mer information finns i Omdirigera inloggning till en social provider.
  2. Leta upp objektet authCodeRequest och ange domainHint attributet med motsvarande domäntips.

Följande kodfragment visar hur du skickar domäntipsparametern. Den använder facebook.com som attributvärde.

authCodeRequest.domainHint = "facebook.com"

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

Ange användargränssnittsspråket

Språkanpassning i Azure AD B2C gör att ditt användarflöde kan hantera en mängd olika språk som passar dina kunders behov. Mer information finns i Språkanpassning.

Om du vill ange önskat språk gör du följande:

  1. Konfigurera språkanpassning.
  2. Leta upp objektet authCodeRequest och ange extraQueryParameters attributet med motsvarande ui_locales extra parameter.

Följande kodfragment visar hur du skickar parametern ui_locales . Den använder es-es som attributvärde.

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

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

Skicka en anpassad frågesträngsparameter

Med anpassade principer kan du skicka en anpassad frågesträngsparameter. Ett bra användningsexempel är när du vill ändra sidinnehållet dynamiskt.

Om du vill skicka en anpassad frågesträngsparameter gör du följande:

  1. Konfigurera elementet ContentDefinitionParameters .
  2. Leta upp objektet authCodeRequest och ange extraQueryParameters attributet med motsvarande extra parameter.

Följande kodfragment visar hur du skickar den campaignId anpassade frågesträngsparametern. Den använder germany-promotion som attributvärde.

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

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

Skicka ett ID-tokentips

Ett förlitande part-program kan skicka en inkommande JSON-webbtoken (JWT) som en del av OAuth2-auktoriseringsbegäran. Den inkommande token är ett tips om användaren eller auktoriseringsbegäran. Azure AD B2C verifierar token och extraherar sedan anspråket.

Om du vill inkludera ett tokentips för ID i autentiseringsbegäran gör du följande:

  1. Definiera en teknisk profil för ID-tokentips i din anpassade princip.
  2. Leta upp objektet authCodeRequest och ange extraQueryParameters attributet med motsvarande id_token_hint extra parameter.

Följande kodfragment visar hur du definierar ett ID-tokentips:

authCodeRequest.extraQueryParameters = {"id_token_hint": idToken}

return confidentialClientApplication.getAuthCodeUrl(authCodeRequest)

Konfigurera loggning

MSAL-biblioteket genererar loggmeddelanden som kan hjälpa dig att diagnostisera problem. Appen kan konfigurera loggning. Appen kan också ge dig anpassad kontroll över detaljnivån och om personliga och organisatoriska data loggas.

Vi rekommenderar att du skapar ett MSAL-loggningsåteranrop och tillhandahåller ett sätt för användare att skicka loggar när de har autentiseringsproblem. MSAL tillhandahåller följande nivåer av loggningsinformation:

  • Fel: Något har gått fel och ett fel har genererats. Den här nivån används för att felsöka och identifiera problem.
  • Varning! Det har inte nödvändigtvis uppstått ett fel eller fel, men informationen är avsedd för diagnostik och felsökning av problem.
  • Info: MSAL loggar händelser som är avsedda för informationsändamål och inte nödvändigtvis för felsökning.
  • Utförligt: Det här är standardnivån. MSAL loggar fullständig information om biblioteksbeteendet.

Som standard samlar MSAL-loggaren inte in några personliga eller organisatoriska data. Biblioteket ger dig möjlighet att aktivera loggning av personliga och organisatoriska data om du bestämmer dig för att göra det.

Konfigurera loggning genom att konfigurera följande nycklar i index.js:

  • logLevel låter dig ange loggningsnivån. Möjliga värden: Error, Warning, Infooch Verbose.
  • piiLoggingEnabled möjliggör inmatning av personuppgifter. Möjliga värden: true eller false.

Följande kodfragment visar hur du konfigurerar MSAL-loggning:

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

Nästa steg

Läs mer om MSAL.js konfigurationsalternativ.