Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Fabric Extensibility Toolkit tillhandahåller ett JavaScript-API för att hämta autentiseringstokens som kan användas för att få tillgång till Fabric API:er, Azure-tjänster och alla Entra-säkrade applikationer. Denna artikel ger omfattande API-referenser och användningsexempel.
Tips/Råd
För en snabb startguide, se Förvärva Microsoft Entra-tokens.
API-referensen
acquireFrontendAccessToken(params: AcquireFrontendAccessTokenParams): Promise<AccessToken>;
export interface AcquireFrontendAccessTokenParams {
scopes: string[];
}
export interface AccessToken {
token: string;
}
Anmärkning
Den nuvarande implementeringen av utbyggbarhetsverktygslådan stödjer grundläggande tokenförvärv med scopes. Avancerade funktioner som full samtyckesprompt och hantering av villkorlig åtkomst är ännu inte tillgängliga men kan läggas till i framtida versioner.
API:et returnerar ett AccessToken objekt som innehåller:
- token: JWT-tokensträngen att använda i auktorisationshuvuden
Grundläggande användning
Enkel tokenförvärv
// 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 med specifika scopes
// Request specific scopes for Azure Storage
const token = await workloadClient.auth.acquireFrontendAccessToken({
scopes: ['https://storage.azure.com/user_impersonation']
});
Exempel på tokenanvändning
Fabric API-åtkomst
Token kan användas direkt med Fabric REST API:er:
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
Använd scopes för att specificera vilka Azure-tjänster du behöver tillgång till:
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();
}
Anpassad applikationsåtkomst
Få tillgång till dina egna Entra-säkrade applikationer:
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();
}
Parameterreferens
scopes
En array av scope-strängar som specificerar vilka behörigheter din token behöver.
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
Användningsexempel:
const token = await workloadClient.auth.acquireFrontendAccessToken({
scopes: [
'https://storage.azure.com/user_impersonation'
]
});
Tomt skikarray: Använd en tom array för att få en token med standardbehörigheter för Fabric:
const token = await workloadClient.auth.acquireFrontendAccessToken({ scopes: [] });
Samtyckeshantering
Automatiskt samtyckesflöde
Extensibility Toolkit hanterar automatiskt samtyckesflöden:
- Initial förfrågan: Om samtycke saknas öppnas ett popup-fönster
- Användarinteraktion: Användaren beviljar eller nekar behörigheter
- Automatisk stängning: Popupen stängs automatiskt efter användarens åtgärd
- Tokenleverans: Om tokenen lyckas returneras tokenen till din applikation
Hantering av samtyckespopup
Verktygslådan hanterar automatiskt samtyckespopups, men du kan anpassa omdirigerings-URI-beteendet. Skapa en omdirigeringssida som hanterar samtyckessvaret:
// 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();
}
Samtycke från korshyresgäst
För tillgång till resurser över olika hyresgäster:
// Request consent for cross-tenant access
const token = await workloadClient.auth.acquireAccessToken({
additionalScopesToConsent: ['https://api.partner-app.com/data.read']
});
Felhantering
Vanliga felscenarier
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;
}
}
Hantering av tokens utgång
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;
}
}
Metodtips
Token-cache och återanvändning
- Cache-tokens: Lagra tokens i minnet tills utgångspunkt
- Automatisk uppdatering: Implementera automatisk tokenuppdatering före utgångsdatum
- Säker lagring: Behåll aldrig tokens till lokal lagring eller cookies
Omfångshantering
- Minimala scopes: Begär endast de behörigheter du behöver
- Progressivt samtycke: Begär ytterligare teleskop när funktioner används
- Scope-validering: Verifiera att tokens inkluderar nödvändiga scopes före API-anrop
Avancerad felhantering
- Graciös försämring: Tillhandahålla reservfunktion när autentiseringen misslyckas
- Användarmeddelanden: Förklara tydligt varför behörigheter behövs
- Omprövarlogik: Implementera lämpliga återförsöksmekanismer för tillfälliga fel
Prestanda optimering
- Parallella förfrågningar: Hämta tokens för flera tjänster parallellt när det är möjligt
- Batchoperationer: Grupp-API-anrop för att minimera tokeninhämtningsöverhead
- Cachehantering: Implementera effektiva token-cachestrategier
Relaterat innehåll
- Snabb start: Skaffa Microsoft Entra-tokens – Enkel guide för att komma igång
- Översikt av autentisering - Koncept för högnivåautentisering
- Autentiseringsriktlinjer – Bästa praxis och rekommendationer
- Access Fabric API:er – Färdigbyggda API-wrappers