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.
A Fabric Extensibility Toolkit JavaScript API-t biztosít hitelesítési tokenek megszerzéséhez, amelyekkel hozzáférhetünk Fabric API-khoz, Azure szolgáltatásokhoz és bármely Entra-védett alkalmazáshoz. Ez a cikk átfogó API hivatkozási és használati példákat kínál.
Jótanács
Gyors kezdési útmutatóért lásd: Microsoft Entra tokenek beszerzése.
API-referencia
acquireFrontendAccessToken(params: AcquireFrontendAccessTokenParams): Promise<AccessToken>;
export interface AcquireFrontendAccessTokenParams {
scopes: string[];
}
export interface AccessToken {
token: string;
}
Megjegyzés:
A jelenlegi bővíthetőségi eszköztár megvalósítása támogatja az alapvető token megszerzést scope-okkal. Fejlett funkciók, mint a teljes beleegyezés kérése és feltételes hozzáférési kezelés, még nem elérhetők, de a jövőbeni kiadásokban hozzáadhatják.
Az API egy AccessToken olyan objektumot ad vissza, amely tartalmazza:
- token: A JWT token string, amelyet az Authorization fejlécekben használnak
Alapszintű használat
Egyszerű token beszerzés
// Acquire a token with default Fabric permissions
const token = await workloadClient.auth.acquireFrontendAccessToken({ scopes: [] });
// Use the token in API calls
const response = await fetch('https://api.fabric.microsoft.com/v1/workspaces', {
headers: {
'Authorization': `Bearer ${token.token}`,
'Content-Type': 'application/json'
}
});
Token specifikus távcokkal
// Request specific scopes for Azure Storage
const token = await workloadClient.auth.acquireFrontendAccessToken({
scopes: ['https://storage.azure.com/user_impersonation']
});
Token használati példák
Fabric API hozzáférés
A token közvetlenül használható Fabric REST API-kkal:
async function listWorkspaces() {
const token = await workloadClient.auth.acquireFrontendAccessToken({ scopes: [] });
const response = await fetch('https://api.fabric.microsoft.com/v1/workspaces', {
headers: {
'Authorization': `Bearer ${token.token}`
}
});
return await response.json();
}
Azure service access
Használd a scopes-t, hogy meghatározd, mely Azure szolgáltatásokhoz szükséged van hozzá:
async function readFromStorage(accountName, containerName, blobName) {
const token = await workloadClient.auth.acquireFrontendAccessToken({
scopes: ['https://storage.azure.com/user_impersonation']
});
const url = `https://${accountName}.blob.core.windows.net/${containerName}/${blobName}`;
const response = await fetch(url, {
headers: {
'Authorization': `Bearer ${token.token}`,
'x-ms-version': '2021-12-02'
}
});
return await response.text();
}
Egyedi alkalmazás-hozzáférés
Hozzáférés saját Entra által védett alkalmazásaihoz:
async function callCustomAPI() {
const token = await workloadClient.auth.acquireFrontendAccessToken({
scopes: ['https://myapp.contoso.com/data.read']
});
const response = await fetch('https://myapp.contoso.com/api/data', {
headers: {
'Authorization': `Bearer ${token.token}`
}
});
return await response.json();
}
Paraméterhivatkozás
scopes
Egy scope-stringek tömbje, amelyek megadják a tokennek szükséges jogosultságait.
Common Azure service scopes:
-
https://storage.azure.com/user_impersonation- Azure Storage -
https://vault.azure.net/user_impersonation- Azure Key Vault -
https://management.azure.com/user_impersonation- Azure Resource Manager -
https://graph.microsoft.com/User.Read- Microsoft Graph
Használati példa:
const token = await workloadClient.auth.acquireFrontendAccessToken({
scopes: [
'https://storage.azure.com/user_impersonation'
]
});
Üres távcső tömb: Használj egy üres tömböt, hogy egy alapértelmezett Fabric jogosultságú tokent kapj:
const token = await workloadClient.auth.acquireFrontendAccessToken({ scopes: [] });
Hozzájárulás kezelése
Automatikus beleegyezési folyamat
Az Extensibility Toolkit automatikusan kezeli a beleegyezési munkafolyamatokat:
- Kezdeti kérés: Ha hiányzik a beleegyezés, egy felugró ablak nyílik meg
- Felhasználói interakció: A felhasználó engedélyeket ad vagy megtagad
- Automatikus zárás: A felugró ablak automatikusan bezáródik a felhasználó lépése után
- Token kézbesítés: Ha sikeres, a token visszakerül az alkalmazásodhoz
Beleegyezés felugró ablak kezelése
A toolkit automatikusan kezeli a beleegyezési felugró ablakokat, de testreszabhatod az átirányítási URI viselkedést. Hozzon létre egy átirányítási oldalt, amely kezeli a beleegyezési választ:
// redirect.js - Handle consent redirect
const redirectUriPath = '/close';
const url = new URL(window.location.href);
if (url.pathname?.startsWith(redirectUriPath)) {
// Handle consent errors
if (url?.hash?.includes("error")) {
// Extract error information
const errorMatch = url.hash.match(/error=([^&]+)/);
const errorDescription = url.hash.match(/error_description=([^&]+)/);
// Handle specific errors
if (url.hash.includes("AADSTS650052")) {
console.error("Service principal not configured");
} else if (url.hash.includes("AADSTS65004")) {
console.error("User declined consent");
}
}
// Always close the popup immediately
window.close();
}
Bérlői átruházási hozzájárulás
A különböző bérlők erőforrásainak eléréséhez:
// Request consent for cross-tenant access
const token = await workloadClient.auth.acquireAccessToken({
additionalScopesToConsent: ['https://api.partner-app.com/data.read']
});
Hibakezelés
Gyakori hibaforgatókönyvek
async function robustTokenAcquisition() {
try {
return await workloadClient.auth.acquireAccessToken();
} catch (error) {
switch (error.code) {
case 'user_cancelled':
console.log('User cancelled the consent dialog');
break;
case 'consent_required':
console.log('Additional consent required');
break;
case 'interaction_required':
console.log('User interaction required');
break;
default:
console.error('Authentication error:', error.message);
}
throw error;
}
}
Token lejárati kezelés
class TokenManager {
private currentToken: AccessToken | null = null;
async getValidToken(): Promise<AccessToken> {
if (!this.currentToken || this.isTokenExpired(this.currentToken)) {
this.currentToken = await workloadClient.auth.acquireAccessToken();
}
return this.currentToken;
}
private isTokenExpired(token: AccessToken): boolean {
// Add buffer time to prevent requests with almost-expired tokens
const bufferMinutes = 5;
const expirationWithBuffer = new Date(token.expiresOn.getTime() - (bufferMinutes * 60 * 1000));
return new Date() >= expirationWithBuffer;
}
}
Ajánlott eljárások
Token gyorsítótár és újrahasznosítás
- Cache tokenek: Tokeneket tárolnak memóriában a lejáratig.
- Automatikus frissítés: Automatikus token frissítés bevezetése a lejárat előtt
- Biztonságos tárolás: Soha ne maradj tokeneket helyi tárolóba vagy sütikbe
Hatókörkezelés
- Minimális hatókör: Csak a szükséges jogosultságokat kérd
- Progresszív beleegyezés: További hatókör kérése a funkciók használatának ahogy kerül
- Scope-ellenőrzés: Ellenőrizd a tokenek tartalmazzák a szükséges hatókkábbákat az API-hívások előtt
Speciális hibakezelés
- Kegyes lebontás: Tartalék funkciót biztosíts, ha hitelesítés meghibásodik
- Felhasználói üzenetküldés: Világosan magyarázd el, miért van szükség jogosultságokra
- Újrapróbálkozás logika: Megfelelő újrapróbálási mechanizmusok megvalósítása átmeneti hibákra
Teljesítményoptimalizálás
- Párhuzamos kérések: Lehetőség szerint több szolgáltatás tokenjeit szerezzen párhuzamosan
- Kötött műveletek: Csoportos API hívások a token beszerzési többletterhelés minimalizálása érdekében
- Cache menedzsment: Hatékony token gyorsítótárázási stratégiák bevezetése
Kapcsolódó tartalom
- Gyors kezdet: Microsoft Entra tokenek beszerzése – Egyszerű kezdési útmutató
- Hitelesítési áttekintés – Magas szintű hitelesítési fogalmak
- Hitelesítési irányelvek – Legjobb gyakorlatok és ajánlások
- Access Fabric API-k – előre összeállított API wrapperek