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:
- Konfigurera autentisering i en Node.js exempelwebbapp
- Aktivera autentisering i din egen Node.js webbapp.
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 exempeltenant-name.b2clogin.com
, tilllogin.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:
- Om du använder en anpassad princip lägger du till det inkommande anspråk som krävs enligt beskrivningen i Konfigurera direkt inloggning.
- Leta upp objektet
authCodeRequest
och angeloginHint
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.com
direkt till Facebook-inloggningssidan.
Om du vill omdirigera användare till en extern identitetsprovider gör du följande:
- Kontrollera domännamnet för din externa identitetsprovider. Mer information finns i Omdirigera inloggning till en social provider.
- Leta upp objektet
authCodeRequest
och angedomainHint
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:
- Konfigurera språkanpassning.
- Leta upp objektet
authCodeRequest
och angeextraQueryParameters
attributet med motsvarandeui_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:
- Konfigurera elementet ContentDefinitionParameters .
- Leta upp objektet
authCodeRequest
och angeextraQueryParameters
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:
- Definiera en teknisk profil för ID-tokentips i din anpassade princip.
- Leta upp objektet
authCodeRequest
och angeextraQueryParameters
attributet med motsvarandeid_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
,Info
ochVerbose
. -
piiLoggingEnabled
möjliggör inmatning av personuppgifter. Möjliga värden:true
ellerfalse
.
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.