Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ha még nem ismerkedik az MSAL-zal, itt kell kezdenie. Ha az MSAL 1.x-ből származik, az útmutatót követve frissítheti a kódot az MSAL v2.x használatára
1. Alkalmazásregisztráció frissítése
Nyissa meg a bérlőjéhez tartozó Microsoft Entra felügyeleti központot, és tekintse át az Alkalmazásregisztrációk elemet. Létrehozhat egy új regisztrációt az MSAL 2.x-hez, vagy frissítheti meglévő regisztrációját az MSAL 1.x-hez használt regisztrációhoz.
2. A csomag hozzáadása a msal-browser projekthez
Az npm használatával használja a következőket:
npm install @azure/msal-browser
3. A kód frissítése
Az MSAL 1.x-ben az alábbiak szerint létrehozott egy alkalmazáspéldányt:
import * as msal from "msal";
const msalInstance = new msal.UserAgentApplication(config);
Az MSAL 2.x-ben ezt frissítheti az új PublicClientApplication objektum használatára.
import * as msal from "@azure/msal-browser";
const msalInstance = new msal.PublicClientApplication(config);
A megadott konfigurációs objektumban lehetnek kisebb különbségek. Ha egy fejlettebb konfigurációt ad át az UserAgentApplication objektumnak, itt talál további információt az alkalmazásobjektumok új konfigurációs beállításairól.
A kérelem- és válaszobjektum-aláírások megváltoztak – acquireTokenSilent mostantól az interaktív API-któl külön objektum-aláírással rendelkezik. A kérelem API-k konfigurálásáról itt talál további információt.
Az MSAL 1.x legtöbb API-ja módosítás nélkül át lett adva az MSAL 2.x-be. Néhány funkciót eltávolítottunk:
handleRedirectCallbackurlContainsHashgetCurrentConfigurationgetLoginInProgressgetAccountgetAccountStateisCallback
Az MSAL 2.x-ben a kivonatból kapott válasz kezelése aszinkron művelet, mivel az MSAL azonnal végrehajt egy jogkivonatcserét, amint elemzi a válasz engedélyezési kódját. Emiatt átirányítási hívások végrehajtásakor az MSAL biztosítja a handleRedirectPromise függvényt, amely egy ígéretet ad vissza, amely feloldja, ha az átirányítást teljes mértékben az MSAL kezeli. Átirányításos módszer használatakor a redirectUri-ként használt lapnak implementálnia kell a handleRedirectPromise elemet, hogy a válasz kezelve legyen, és a tokenek gyorsítótárazódjanak az átirányításból való visszatéréskor.
const myMSALObj = new msal.PublicClientApplication(msalConfig);
// Register Callbacks for Redirect flow
myMSALObj.handleRedirectPromise().then((tokenResponse) => {
let accountObj = null;
if (tokenResponse !== null) {
accountObj = tokenResponse.account;
const id_token = tokenResponse.idToken;
const access_token = tokenResponse.accessToken;
} else {
const currentAccounts = myMSALObj.getAllAccounts();
if (!currentAccounts || currentAccounts.length === 0) {
// No user signed in
return;
} else if (currentAccounts.length > 1) {
// More than one user signed in, find desired user with getAccountByUsername(username)
} else {
accountObj = currentAccounts[0];
}
}
const username = accountObj.username;
}).catch((error) => {
handleError(error);
});
function signIn() {
myMSALObj.loginRedirect(loginRequest);
}
async function getTokenRedirect(request) {
return await myMSALObj.acquireTokenSilent(request).catch(error => {
this.logger.info("silent token acquisition fails. acquiring token using redirect");
// fallback to interaction when silent call fails
return myMSALObj.acquireTokenRedirect(request)
});
}
A loginPopup, acquireTokenPopup vagy acquireTokenSilent hívások során megvárhatja a promise teljesülését.
const myMSALObj = new msal.PublicClientApplication(msalConfig);
async function signIn(method) {
try {
const loginResponse = await myMSALObj.loginPopup(loginRequest);
} catch (err) {
handleError(error);
}
const currentAccounts = myMSALObj.getAllAccounts();
if (!currentAccounts || currentAccounts.length === 0) {
// No user signed in
return;
} else if (currentAccounts.length > 1) {
// More than one user signed in, find desired user with getAccountByUsername(username)
} else {
accountObj = currentAccounts[0];
}
}
async function getTokenPopup(request) {
return await myMSALObj.acquireTokenSilent(request).catch(async (error) => {
this.logger.info("silent token acquisition fails. acquiring token using popup");
// fallback to interaction when silent call fails
return await myMSALObj.acquireTokenPopup(request).catch(error => {
handleError(error);
});
});
}
A használattal kapcsolatos részletesebb információkért tekintse meg a bejelentkezési és jogkivonat-dokumentumokat .
A frissítési jogkivonatokat a rendszer a jogkivonat-válaszok részeként adja vissza, és a kódtár a hozzáférési jogkivonatok interakció vagy iframe-ek használata nélkül történő megújítására használja. A jogkivonatok megújításával kapcsolatos további információkért tekintse meg a jogkivonatok élettartamával kapcsolatos dokumentumokat .
Minden más API-nak a korábbiakhoz hasonlóan kell működnie. Javasoljuk, hogy tekintse meg az alapértelmezett mintát az MSAL 2.0 működő példájának megtekintéséhez.