Megosztás a következőn keresztül:


Egyoldalas alkalmazás: Jogkivonat beszerzése API meghívásához

Az API-k jogkivonatainak MSAL.js történő beszerzésének mintája az, hogy először megkísérel egy csendes jogkivonat-kérést a acquireTokenSilent metódus használatával. A metódus meghívásakor a kódtár először ellenőrzi a gyorsítótárat a böngészőtárolóban, és ellenőrzi, hogy létezik-e nem lejárt hozzáférési jogkivonat, és visszaadja azt. Ha nem található hozzáférési jogkivonat, vagy a talált hozzáférési jogkivonat lejárt, megpróbálja a frissítési jogkivonatát használni egy új hozzáférési jogkivonat lekéréséhez. Ha a frissítési jogkivonat 24 órás élettartama is lejárt, MSAL.js megnyit egy rejtett iframe-et, amely csendesen kér egy új engedélyezési kódot a meglévő aktív munkamenet és a Microsoft Entra-azonosító használatával (ha van ilyen), amelyet aztán új jogkivonatokra cserél (hozzáférési és frissítési jogkivonatok). Az egyszeri bejelentkezés (SSO) munkamenetéről és a jogkivonat élettartamértékeiről a Microsoft Entra ID-ban további információt a jogkivonat élettartamairól talál. A gyorsítótár-keresési szabályzat MSAL.js további információkért lásd: Hozzáférési jogkivonat beszerzése.

A Microsoft Entra-azonosítóra irányuló csendes jogkivonat-kérések sikertelenek lehetnek olyan okok miatt, mint a jelszó módosítása vagy a frissített feltételes hozzáférési szabályzatok. A hibák leggyakrabban a frissítési jogkivonat 24 órás lejárati idejének és a külső cookie-kat blokkoló böngészőnek köszönhetők, ami megakadályozza a rejtett iframe-ek használatát a felhasználó hitelesítésének folytatásához. Ezekben az esetekben meg kell hívnia az egyik interaktív metódust (amely megkérheti a felhasználót) a jogkivonatok beszerzésére:

Választás előugró vagy átirányítási felület között

Az előugró vagy az átirányítási felület közötti választás az alkalmazás folyamatától függ:

  • Ha nem szeretné, hogy a felhasználók a hitelesítés során elmozduljanak a fő alkalmazáslapról, javasoljuk az előugró módszert. Mivel a hitelesítési átirányítás egy előugró ablakban történik, a fő alkalmazás állapota megmarad.

  • Ha a felhasználók böngészőkorlátokkal vagy szabályzatokkal rendelkeznek, amelyekben az előugró ablakok le vannak tiltva, használhatja az átirányítási módszert. Használja az átirányítási módszert az Internet Explorer böngészővel, mert az Internet Explorer előugró ablakaival kapcsolatban ismert problémák merülnek fel.

Beállíthatja azokat az API-hatóköröket, amelyeket a hozzáférési jogkivonatnak tartalmaznia kell a hozzáférési jogkivonat-kérés létrehozásakor. Előfordulhat, hogy a hozzáférési jogkivonat nem minden kért hatókört ad meg. Ez a felhasználó hozzájárulásától függ.

Jogkivonat beszerzése előugró ablakkal

A következő kód egyesíti a korábban leírt mintát az előugró felület metódusaival:

// MSAL.js v2 exposes several account APIs, logic to determine which account to use is the responsibility of the developer
const account = publicClientApplication.getAllAccounts()[0];

const accessTokenRequest = {
  scopes: ["user.read"],
  account: account,
};

publicClientApplication
  .acquireTokenSilent(accessTokenRequest)
  .then(function (accessTokenResponse) {
    // Acquire token silent success
    let accessToken = accessTokenResponse.accessToken;
    // Call your API with token
    callApi(accessToken);
  })
  .catch(function (error) {
    //Acquire token silent failure, and send an interactive request
    if (error instanceof InteractionRequiredAuthError) {
      publicClientApplication
        .acquireTokenPopup(accessTokenRequest)
        .then(function (accessTokenResponse) {
          // Acquire token interactive success
          let accessToken = accessTokenResponse.accessToken;
          // Call your API with token
          callApi(accessToken);
        })
        .catch(function (error) {
          // Acquire token interactive failure
          console.log(error);
        });
    }
    console.log(error);
  });

Jogkivonat beszerzése átirányítással

Az alábbi minta a korábban ismertetett módon jelenik meg, de átirányítási módszerrel jelenik meg a jogkivonatok interaktív beszerzéséhez. Fel kell hívnia és várnia handleRedirectPromise kell az oldalbetöltésre.

const redirectResponse = await publicClientApplication.handleRedirectPromise();
if (redirectResponse !== null) {
  // Acquire token silent success
  let accessToken = redirectResponse.accessToken;
  // Call your API with token
  callApi(accessToken);
} else {
  // MSAL.js v2 exposes several account APIs, logic to determine which account to use is the responsibility of the developer
  const account = publicClientApplication.getAllAccounts()[0];

  const accessTokenRequest = {
    scopes: ["user.read"],
    account: account,
  };

  publicClientApplication
    .acquireTokenSilent(accessTokenRequest)
    .then(function (accessTokenResponse) {
      // Acquire token silent success
      // Call API with token
      let accessToken = accessTokenResponse.accessToken;
      // Call your API with token
      callApi(accessToken);
    })
    .catch(function (error) {
      //Acquire token silent failure, and send an interactive request
      console.log(error);
      if (error instanceof InteractionRequiredAuthError) {
        publicClientApplication.acquireTokenRedirect(accessTokenRequest);
      }
    });
}

Következő lépések

Lépjen tovább a következő cikkre ebben a forgatókönyvben: Webes API meghívása.