Not
Å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.
Följ stegen i avsnittet Anslut program för att ge åtkomst till användarprinciper. Du kan också komma åt GraphQL-API:et med tjänstens huvudnamn:
Följ stegen i Ansluta program för att skapa en Microsoft Entra-app, men tänk på att omfång inte behövs för tjänstens huvudnamn. I den nya appen lägger du till en klienthemlighet under Certifikat och hemligheter. Mer information finns i Registrera en Microsoft Entra-app och skapa ett huvudnamn för tjänsten.
Se till att klientadministratörer aktiverar användningen av tjänstens huvudinstanser i Fabric. Gå till Klientorganisationsinställningar i administrationsportalen för klientorganisationen. Under Inställningar för utvecklare kan tjänstens huvudnamn använda Infrastruktur-API:er. Med den här inställningen aktiverad visas programmet i Infrastrukturportalen för roll- eller behörighetstilldelning. Du hittar mer information om identitetsstöd.
Tjänstens huvudprincip behöver åtkomst till både GraphQL-API:et och datakällan, mer specifikt Kör behörighet till GraphQL-API:et och läs- eller skrivbehörighet som krävs i den datakälla som du väljer beroende på behov. Öppna arbetsytan i Infrastrukturportalen och välj ellipsen bredvid API:et. Välj Hantera behörigheter för API:et och sedan Lägg till användare. Lägg till programmet och välj Kör frågor och förändringar, vilket ger nödvändiga Kör-behörigheter till tjänsthuvudnamn. I testsyfte är det enklaste sättet att implementera de behörigheter som krävs för både API:et och datakällan genom att lägga till programmet som medlem i arbetsytan med en deltagarroll där både GraphQL-API:et och datakällobjekten finns.
Eftersom ett tjänstehuvudnamn kräver antingen ett certifikat eller en klienthemlighet stöds det inte av Microsoft Authentication Library (MSAL) i enkeltsideapplikationer (SPA) som React-appen vi byggde i det sista steget. Du kan använda en serverdelstjänst som är korrekt skyddad med väldefinierad auktoriseringslogik beroende på dina krav och användningsfall.
När api:et har konfigurerats för åtkomst av tjänstens huvudnamn kan du testa det lokalt med hjälp av ett enkelt Node.JS program på den lokala datorn:
const { ClientSecretCredential } = require('@azure/identity');
// Define your Microsoft Entra ID credentials
const tenantId = "<YOUR_TENANT_ID>";
const clientId = "<YOUR_CLIENT_ID>";
const clientSecret = "<YOUR_CLIENT_SECRET>"; // Service principal secret value
const scope = "https://api.fabric.microsoft.com/.default"; // The scope of the token to access Fabric
// Create a credential object with service principal details
const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
// Function to retrieve the token
async function getToken() {
try {
// Get the token for the specified scope
const tokenResponse = await credential.getToken(scope);
console.log("Access Token:", tokenResponse.token);
} catch (err) {
console.error("Error retrieving token:", err.message);
}
}
Installera beroendena (@azure/identity) med valfri Node.js pakethanterare, ändra filen med nödvändig information, spara den och köra den (node <filename.js>). Detta hämtar en token från Microsoft Entra.
Token kan sedan användas för att anropa GraphQL-API:et med Hjälp av PowerShell genom att ersätta lämplig information med den token som du hämtade, Den GraphQL-fråga som du vill köra och GraphQL API-slutpunkten:
$headers = @{
Authorization = "Bearer <YOUR_TOKEN>"
'Content-Type' = 'application/json'
}
$body = @{
query = @"
<YOUR_GRAPHQL_QUERY>
"@
}
# Make the POST request to the GraphQL API
$response = Invoke-RestMethod -Uri "<YOUR_GRAPHQL_API_ENDPOINT>" -Method POST -Headers $headers -Body ($body | ConvertTo-Json)
# Output the response
$response | ConvertTo-Json -Depth 10
Du kan också använda cURL för att uppnå samma resultat:
curl -X POST <YOUR_GRAPHQL_API_ENDPOINT> \
-H "Authorization: <YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"query": "<YOUR_GRAPHQL_QUERY(in a single line)>"}'
För lokal testning ändrar du Node.js koden något med ett extra beroende (axios) för att hämta token och anropa API:et i en enda körning:
const { ClientSecretCredential } = require('@azure/identity');
const axios = require('axios');
// Microsoft Entra ID credentials
const tenantId = "<YOUR_TENANT_ID>";
const clientId = "<YOUR_CLIENT_ID>";
const clientSecret = "<YOUR_CLIENT_SECRET>"; // Service principal secret value
// GraphQL API details
const graphqlApiUrl = "YOUR_GRAPHQL_API_ENDPOINT>";
const scope = "https://api.fabric.microsoft.com/.default"; // The scope to request the token for
// The GraphQL query
const graphqlQuery = {
query: `
<YOUR_GRAPHQL_QUERY>
`
};
// Function to retrieve a token and call the GraphQL API
async function fetchGraphQLData() {
try {
// Step 1: Retrieve token using the ClientSecretCredential
const credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
const tokenResponse = await credential.getToken(scope);
const accessToken = tokenResponse.token;
console.log("Access token retrieved!");
// Step 2: Use the token to make a POST request to the GraphQL API
const response = await axios.post(
graphqlApiUrl,
graphqlQuery,
{
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json'
}
}
);
// Step 3: Output the GraphQL response data
console.log("GraphQL API response:", JSON.stringify(response.data));
} catch (err) {
console.error("Error:", err.message);
}
}
// Execute the function
fetchGraphQLData();