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.
Amikor az MSAL lekér egy tokent, gyorsítótárazza azt későbbi felhasználás céljából. Az MSAL kezeli a tokenek élettartamát és megújítását. Az acquireTokenSilent() API lekéri a hozzáférési jogkivonatokat egy adott fiók gyorsítótárából, és szükség esetén megújítja őket.
Gyorsítótár-tároló
A gyorsítótár tárolási helyét az MSAL példányosításához használt konfigurációs objektumon keresztül konfigurálhatja:
import { PublicClientApplication, BrowserCacheLocation } from "@azure/msal-browser";
const pca = new PublicClientApplication({
auth: {
clientId: "Enter_the_Application_Id_Here", // e.g. "00001111-aaaa-2222-bbbb-3333cccc4444" (guid)
authority: "https://login.microsoftonline.com/Enter_the_Tenant_Info_Here", // e.g. "common" or your tenantId (guid),
redirectUri: "/"
},
cache: {
cacheLocation: BrowserCacheLocation.SessionStorage // "sessionStorage"
}
});
Az MSAL alapértelmezés szerint az idP-ből beszerzett különböző hitelesítési összetevőket a böngészőtárolóban tárolja az összes modern böngésző által támogatott Web Storage API használatával. Ennek megfelelően az MSAL két állandó tárolási módszert kínál: sessionStorage (alapértelmezett) és localStorage. Az MSAL emellett lehetőséget is biztosít memoryStorage , amely lehetővé teszi a gyorsítótár böngészőtárolóban való tárolásának letiltását.
| Gyorsítótár helye | Törlés bekapcsolva | Megosztva az ablakok/lapok között | Az átirányítási folyamat támogatása biztosított |
|---|---|---|---|
sessionStorage |
ablak/lap bezárása | No | Igen |
localStorage |
a böngésző bezárásakor (hacsak a felhasználó nem jelölte be a „Maradjak bejelentkezve” lehetőséget) | Igen | Igen |
memoryStorage |
oldalfrissítés/navigáció | No | No |
Note
Bár a hitelesítési állapot elveszhet a munkamenetben és a memóriatárolóban az ablak/lap bezárása vagy az oldalfrissítés/navigáció miatt, a felhasználók továbbra is aktív munkamenetben vannak az identitásszolgáltatóval, feltéve, hogy a munkamenet-cookie nem járt le, és kérések nélkül újra hitelesíthetők.
A különböző tárolási helyek közötti választás a jobb felhasználói élmény és a nagyobb biztonság közötti kompromisszumot tükrözi. Ahogy a fenti táblázat is mutatja, a helyi tárolás a lehető legjobb felhasználói élményt eredményezi, míg a memóriatároló a legjobb biztonságot nyújtja, mivel a böngészőben nem tárol bizalmas információkat. További információért tekintse meg az alábbi, a biztonságról és a gyorsítótárazott artefaktumokról szóló szakaszt.
LocalStorage megjegyzések
A 4-es verziótól kezdve, ha a gyorsítótár helyét használja, a rendszer titkosítja a localStorage hitelesítési összetevőket, kivéve, ha a felhasználó a bejelentkezés során a "Bejelentkezve szeretnék maradni" lehetőséget választja. A használt titkosítási algoritmus az AES-GCM , amely a HKDF-t használja a kulcs lekövetéséhez. Az alapkulcsot a rendszer egy munkamenet-cookie-ban msal.cache.encryptiontárolja.
Ez a cookie automatikusan törlődik a böngészőpéldány (nem lap) bezárásakor, így a munkamenet befejezése után nem lehet visszafejteni a hitelesítési összetevőket. A rendszer eltávolítja ezeket a lejárt hitelesítési összetevőket az MSAL következő inicializálásakor, és előfordulhat, hogy a felhasználónak újra meg kell adnia a hitelesítést. A localStorage hely továbbra is több lapból álló gyorsítótár-megőrzést biztosít az összes felhasználó számára, de csak a böngésző-munkamenetek között marad meg a "Bejelentkezés megtartása" (KMSI) lehetőséget választó felhasználók számára.
Important
A titkosítás célja a hitelesítési összetevők megőrzésének csökkentése, nem pedig a további biztonság biztosítása. Ha egy rosszindulatú szereplő hozzáfér a böngésző tárhelyéhez, akkor a kulcshoz is hozzáférhet, vagy az Ön nevében tokeneket kérhet anélkül, hogy egyáltalán szüksége lenne a gyorsítótárra. Az Ön felelőssége, hogy az alkalmazás ne legyen sebezhető az XSS-támadásokkal szemben. További információért tekintse meg a biztonsági szakaszt.
Cookie-tároló
Note
Az ideiglenes hitelesítési összetevők cookie-tárolója elavult a MSAL.js 4-es verzióban. Ez a szakasz megmarad a MSAL.js v3-at vagy korábbi verziót használó alkalmazások esetében.
Az MSAL Browser konfigurálható úgy, hogy cookie-kat használjon az ideiglenes hitelesítési összetevők tárolásához. Ezzel a beállítással támogathatja azokat a böngészőket, amelyek az átirányításalapú bejelentkezési folyamatok (pl. Internet Explorer, Privát módban a Firefox) során törölhetik a helyi/munkamenet-tárterületet. Vegye figyelembe, hogy ha ezt a lehetőséget választja, maguk a tokenek továbbra is a böngésző tárhelyén vagy a memóriában lesznek tárolva. További információért tekintse meg a konfigurációt .
Biztonság
Biztonságosnak tartjuk a munkamenet-/helyi tárolást mindaddig, amíg az alkalmazás nem rendelkezik helyek közötti szkriptkészítéssel (XSS) és a kapcsolódó biztonsági résekkel. Tekintse meg az OWASP XSS-megelőzési csalilapot az alkalmazások XSS-sel szembeni védelméhez. Ha továbbra is aggódik, javasoljuk, hogy inkább használja a memoryStorage lehetőséget.
Gyorsítótárazott összetevők
A tokenek hatékony lekérése és a jó felhasználói élmény fenntartása érdekében az MSAL gyorsítótárazza az API-hívásai során keletkező különféle elemeket. Az alábbiakban az MSAL-gyorsítótárban lévő entitások összegzése látható:
-
Tartós artefaktumok (a kérés befejezése után is fennmaradnak – lásd még: tokenek élettartama)
- hozzáférési jogkivonatok
- azonosító tokenek
- frissítési tokenek
- accounts
-
Rövid élettartamú összetevők (a kérelem élettartamára korlátozva)
- metaadatok kérése (pl. állapot, nem ce, hatóság)
- Hibák
- interakció állapota
-
Telemetria
- előző sikertelen kérés
- teljesítményadatok
Note
Az ideiglenes gyorsítótárbejegyzések mindig a munkamenet-tárolóban vagy a memóriában vannak tárolva. Az MSAL a memóriatárolót használja, ha a munkamenet-tárolás nem érhető el.
Note
Az engedélyezési kódot csak a memóriában tárolják, és a tokenekre történő beváltás után eldobják.
temporaryCacheLocation felülírása
Note
A temporaryCacheLocation konfigurációs beállítás elavult a MSAL.js v4-ben. Ez a szakasz megmarad a MSAL.js v3-at vagy korábbi verziót használó alkalmazások esetében.
Warning
A(z) temporaryCacheLocation felülírásakor körültekintően kell eljárni, különösen a(z) localStorage kiválasztásakor. A több lapon/ablakban történő interakció nem támogatott, és váratlanul hibaüzenetek jelenhetnek meg interaction_in_progress . Ez egy menekülési nyílás, nem teljes mértékben támogatott funkció.
Ha MSAL.js használ az alapértelmezett konfigurációval olyan forgatókönyvben, amelyben a rendszer átirányítja a felhasználót a sikeres hitelesítés után egy új ablakban vagy lapon, az OAuth 2.0 engedélyezési kód és a PKCE-folyamat megszakad. Ebben az esetben az eredeti ablak vagy lap, ahol a hitelesítési állapot (kódhitelesítő és feladat) tárolódik, elveszik, és a hitelesítési folyamat meghiúsul.
A forgatókönyv kezeléséhez úgy konfigurálhatja az MSAL-t, hogy a temporaryCacheLocation konfigurációs tulajdonság felülbírálásával a localStorage elemet használja gyorsítótár-helyként. Ez lehetővé teszi a kód hitelesítőjének és feladatának tárolását a böngészőben localStorage, amely több lapon és ablakban is állandó.
Gyorsítótár-megőrzés MSAL.js frissítések és visszaállítások során
Időnként MSAL.js módosítania kell a gyorsítótárazott összetevők alakját az új követelmények, funkciók vagy hibajavítások támogatásához. Ezeket a módosításokat a lehető leggyakrabban visszafelé kompatibilis módon hajtják végre, így biztosítva, hogy amikor egy alkalmazás frissít egy új verzióra, vagy visszatér egy régebbi verzióra, a felhasználó böngészőjében található gyorsítótár továbbra is használható legyen. Ez azonban nem mindig lehetséges, és előfordulhat, hogy olyan állapotba kerül, amelyben egyszerre több másolat is létezik a gyorsítótárról, az egyiket a MSAL.js aktuális verziója használja, a másikat pedig a frissítés előtt használt verzió írta. Erre azért van szükség, hogy az alkalmazások szükség esetén zökkenőmentesen visszaállhassanak. A frissítések túlnyomó többségében MSAL.js minden meglévő gyorsítótárat áttelepít az új formátumba a zökkenőmentes frissítési élmény érdekében. Ritkán, például a 3-as verzióról a 4-es verzióra való frissítés, ez biztonsági vagy adatvédelmi követelmények miatt nem lehetséges, és ez mindig a főverziók ütközését eredményezi.
A feltört gyorsítótár módosításakor a rendszer alapértelmezés szerint 5 napig megőrzi a régebbi gyorsítótárat, hogy szükség esetén lehetővé tegye a visszaállítást. A régi gyorsítótár megőrzési ideje a(z) PublicClientApplication rendszeren található cacheRetentionDays gyorsítótár-beállítással konfigurálható. Ha a gyorsítótárat ez idő alatt nem használták aktívan, akkor a rendszer törli a következő MSAL.js inicializálásakor. Emellett, ha várhatóan nem lesz szükség visszaállásra, beállíthatja ezt az értéket 0 értékre annak jelzésére, hogy a régi gyorsítótárat az MSAL.js új verziójára való frissítéskor mindig azonnal el kell távolítani. Ezzel szemben, ha hosszabb bevezetési időszak áll rendelkezésére a frissítésekhez, dönthet úgy, hogy hosszabb értékre állítja be.
Note
A hozzáférési és frissítési jogkivonatok a lejártuk után is törlődnek, még akkor is, ha a konfigurált cacheRetentionDays még nem lett elérve.
Az érvényes hozzáférési jogkivonatok bármikor eltávolíthatók, ha a böngészőtároló eléri a tárkvótát. Amikor a tárolási kvóták betelnek, a hozzáférési tokenek érkezési sorrendben (FIFO-elv szerint) kerülnek eltávolításra, kezdve az MSAL.js egy korábbi verziója által írt bejegyzésekkel, majd az MSAL.js aktuális verziója által írt bejegyzésekkel folytatva.
const config = {
auth: {
clientId: "<your-client-id>"
},
cache: {
cacheLocation: "localStorage",
cacheRetentionDays: 0 // Set this to the number of days you want old cache to be preserved in the event a rollback is needed (Default 5 days)
}
}
const pca = new PublicClientApplication(config);
await pca.initialize();
Megjegyzések
- Nem javasoljuk az olyan alkalmazásokat, amelyek üzleti logikája a gyorsítótárban lévő entitások közvetlen használatától függ. Ehelyett használja a megfelelő MSAL API-t, amikor tokeneket kell beszereznie vagy fiókokat kell lekérnie.
- A birtoklási igazolási (PoP) jogkivonatok titkosításához használt kulcsok az IndexedDB API és a memóriatároló kombinációjával vannak tárolva. További információkért tekintse meg a hozzáférési jogkivonat-igazolást a birtoklásról.