Initialisering av MSAL

Innan du initierar MSAL Browser börjar du med att registrera ditt program i Microsoft Entra administrationscenter för att hämta programmets (klient)-ID: t.

CreatePCA-mönster

MSAL.js innehåller ett CreatePCA mönster som gör att du kan välja typ av PublicClientApplication för din app. Aktuella alternativ inkluderar Standard och Nestable konfigurationer. I framtiden kommer fler konfigurationer att introduceras.

Standardkonfiguration

Om du använder MSAL.js i ett ensidesprogram importerar du msal-browser för att skapa en IPublicClientApplication instans med createStandardPublicClientApplication. Den här funktionen skapar en PublicClientApplication instans med standardkonfigurationen.

import * as msal from "@azure/msal-browser";

const pca = msal.createStandardPublicClientApplication({
    auth: {
        clientId: "ENTER_CLIENT_ID",
        authority: "https://login.microsoftonline.com/ENTER_TENANT_ID",
    },
});

Kapslad appkonfiguration

Om din app är en iframed kapslad app som delegerar sin autentisering till en hubb-SDK (som antingen är ett SPA eller ett skrivbordsprogram som körs i MetaOS-ramverket) importerar du msal-browser för att skapa en IPublicClientApplication instans med createNestablePublicClientApplication. Den här funktionen skapar en PublicClientApplication instans med NAA-konfigurationen.

import * as msal from "@azure/msal-browser";

const nestablePca = msal.createNestablePublicClientApplication({
    auth: {
        clientId: "ENTER_CLIENT_ID",
        authority: "https://login.microsoftonline.com/ENTER_TENANT_ID",
    },
});

Important

Läs följande vägledning innan du väljer kapslad appautentisering:

  • createNestablePublicClientApplication återgår till createStandardPublicClientApplication om den kapslade appbryggningen inte är tillgänglig eller om hubben inte har konfigurerats för att stödja kapslad appautentisering.
  • Om ett program inte behöver vara en kapslad app bör det användas createStandardPublicClientApplication i stället.
  • Vissa API:er för kontosökning stöds inte i NAA-appar. Mer information finns i aktiva konton.

Initiera PublicClientApplication-objektet

För att kunna använda MSAL.jsmåste du instansiera ett PublicClientApplication objekt. Du måste ange client id (appId) för din ansökan.

Alternativ 1

Instansiera ett PublicClientApplication objekt och initiera det efteråt. Funktionen initialize är asynkron och måste lösas innan andra MSAL.js API:er anropas.

import { PublicClientApplication } from "@azure/msal-browser";

const msalConfig = {
    auth: {
        clientId: 'your_client_id'
    }
};

const msalInstance = new PublicClientApplication(msalConfig);
await msalInstance.initialize();

Alternativ 2

Anropa den createPublicClientApplication statiska metoden som returnerar ett initierat PublicClientApplication objekt. Observera att den här funktionen är asynkron.

import { PublicClientApplication } from "@azure/msal-browser";

const msalConfig = {
    auth: {
        clientId: 'your_client_id'
    }
};

const msalInstance = await PublicClientApplication.createPublicClientApplication(msalConfig);

(Valfritt) Konfigurera utfärdare

Som standard konfigureras MSAL med klientorganisationen common, som används för program med flera klientorganisationer och program som tillåter personliga konton (inte B2C).

const msalConfig = {
    auth: {
        clientId: 'your_client_id',
        authority: 'https://login.microsoftonline.com/common/'
    }
};

Om programmets målgrupp är en enda klientorganisation måste du ange en auktoritet med ditt klientorganisations-ID enligt nedan:

const msalConfig = {
    auth: {
        clientId: 'your_client_id',
        authority: 'https://login.microsoftonline.com/{your_tenant_id}'
    }
};

Om din applikation använder en separat OIDC-kompatibel auktoritet som "https://login.live.com" eller en IdentityServer, måste du ange den i fältet knownAuthorities och ställa in protocolMode"OIDC".

const msalConfig = {
    auth: {
        clientId: 'your_client_id',
        authority: 'https://login.live.com',
        knownAuthorities: ["login.live.com"],
    },
    system: {
        protocolMode: "OIDC",
    }
};

Note

KonfigurationsalternativetprotocolMode, som anger för MSAL om du vill aktivera Microsoft Entra ID specifika egenheter, ändrar följande beteende:

  • Utfärdarmetadata (sedan v2.4.0):
    • När det är inställt på OIDC inkluderar biblioteket inte /v2.0/ i utfärdarsökvägen när utfärdarmetadata hämtas.
    • När den är inställd på AAD (standardvärdet) inkluderar biblioteket /v2.0/ i auktoritetssökvägen när auktoritetsmetadata hämtas.

(Valfritt) Konfigurera omdirigerings-URI

Som standard är MSAL konfigurerat för att ange omdirigerings-URI:n till den aktuella sidan som den körs på. Om du vill ta emot auktoriseringskoden på en annan sida än den som kör MSAL kan du ange detta i konfigurationen:

const msalConfig = {
    auth: {
        clientId: 'your_client_id',
        authority: 'https://login.microsoftonline.com/{your_tenant_id}',
        redirectUri: 'https://contoso.com'
    }
};

Alla omdirigerings-URI som används måste konfigureras i portalregistreringen. Du kan också ange omdirigerings-URI:n per begäran med hjälp av inloggnings- och begärande-API:erna.

(Valfritt) Ytterligare konfiguration

MSAL har ytterligare konfigurationsalternativ som du kan granska här.

Hantera appstart med 0 eller fler tillgängliga konton

Följande flödesdiagram kan hjälpa dig att undvika onödiga autentiseringsanvisningarna när ett konto (eller flera konton) är tillgängligt för enkel inloggning.

MSAL.js startflödesdiagram

Välja en interaktionstyp

I webbläsaren finns det två sätt att visa inloggningsskärmen för dina användare från ditt program:

  • loginPopup
  • acquireTokenPopup

API:er för popup-fönster använder ES6-löften som löser när autentiseringsflödet i popup-fönstret avslutas och återgår till den angivna omdirigerings-URI:n, eller avvisa om det finns problem i koden eller om popup-fönstret blockeras.

Överväganden för RedirectUri

När du använder popup-API:er måste redirectUri peka på en särskild sida som implementerar MSAL:s omdirigeringsbrygga. Den här sidan hanterar autentiseringssvaret och kommunicerar tillbaka det till huvudprogrammet.

Detaljerad vägledning om hur du konfigurerar omdirigeringssidan finns i Överväganden för RedirectUri.

msalInstance.loginPopup({
    redirectUri: "http://localhost:3000/redirect",
});

Omdirigerings-API:er

  • loginRedirect
  • acquireTokenRedirect

Obs! Om du använder msal-angular eller msal-reacthanteras omdirigeringar på olika sätt och du bör se omdirigeringsdokumentetmsal-angular och vanliga frågor ochmsal-react svar för mer information.

Omdirigerings-API:erna är asynkrona (dvs. returnera ett löfte) void funktioner som omdirigerar webbläsarfönstret efter cachelagring av viss grundläggande information. Om du väljer att använda omdirigerings-API:erna bör du tänka på att du MÅSTE anropa handleRedirectPromise() för att hantera API:et korrekt. Du kan använda följande funktion för att utföra en åtgärd när tokenutbytet har slutförts:

msalInstance.handleRedirectPromise().then((tokenResponse) => {
    // Check if the tokenResponse is null
    // If the tokenResponse !== null, then you are coming back from a successful authentication redirect.
    // If the tokenResponse === null, you are not coming back from an auth redirect.
}).catch((error) => {
    // handle error, either in the library or coming back from the server
});

Detta gör det också möjligt att hämta token när sidan laddas om. Mer information om användning finns i onPageLoad-exemplet .

Vi rekommenderar inte att du använder båda interaktionstyperna i ett enda program.

Note

handleRedirectPromise kan valfritt ta emot ett hashvärde som ska bearbetas, och som standard används det aktuella värdet för window.location.hash. Den här parametern behöver bara anges i scenarier där det aktuella värdet window.location.hash för inte innehåller det omdirigeringssvar som behöver bearbetas. I nästan alla scenarier bör program inte uttryckligen behöva ange den här parametern.

Nästa steg

Du är redo att logga in!