Obs!
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Selv om trinnene i delen koble til programmer kreves for å gi tilgang til brukerkontohavere, er det også mulig å få tilgang til GraphQL-API-en med en tjenestekontohaver:
Følg trinnene i koble programmer for å opprette en Microsoft Entra-app, men husk at omfang ikke er nødvendig for tjenestekontohavere. Legg til en klienthemmelighet under Sertifikater og Hemmeligheter i den nye appen, hvis du vil ha mer informasjon, kan du se Registrere en Microsoft Entra-app og opprette en tjenestekontohaver.
Kontroller at leieradministratorer aktiverte bruken av tjenestekontohavere i Fabric. Gå til Leierinnstillinger i leieradministratorportalen. Under Utviklerinnstillinger kan tjenestekontohavere bruke Stoff-API-er. Når denne innstillingen er aktivert, er programmet synlig i Stoffportalen for rolle- eller tillatelsestilordning. Du finner mer informasjon om identitetsstøtte.
Tjenestekontohaveren trenger tilgang til både GraphQL-API-en og datakilden, mer spesifikt kjøre tillatelse til GraphQL-API-en og lese- eller skrivetilgang som kreves i den valgte datakilden tilsvarende. Åpne arbeidsområdet i stoffportalen, og velg ellipsen ved siden av API-en. Velg Administrer tillatelser for API-en, og legg deretter til bruker. Legg til programmet, og velg Kjør spørringer og mutasjoner, som gir de nødvendige kjøretillatelsene til tjenestekontohaveren. For testformål er den enkleste måten å implementere de nødvendige tillatelsene for både API-en og datakilden på, ved å legge til programmet som et arbeidsområdemedlem med en bidragsyterrolle der både GraphQL-API-en og datakildeelementene er plassert.
Siden en tjenestekontohaver krever enten et sertifikat eller en klienthemmelighet, støttes det ikke av Microsoft Authentication Library (MSAL) i enkeltsideprogrammer (SPAer) som React-appen vi bygget i det siste trinnet. Du kan dra nytte av en serverdeltjeneste som er riktig sikret med veldefinert autorisasjonslogikk, avhengig av dine krav og brukstilfeller.
Når API-en er konfigurert til å åpnes av en tjenestekontohaver, kan du teste den lokalt ved hjelp av et enkelt Node.JS program på den lokale maskinen:
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);
}
}
Når du har installert avhengighetene (@azure/identity
) med den Node.JS pakkebehandlingen du ønsker, endrer du filen med den nødvendige informasjonen, lagrer og kjører den (node <filename.js>
), kan du hente et token fra Microsoft Entra.
Tokenet kan deretter brukes til å aktivere GraphQL-API-en ved hjelp av PowerShell ved å erstatte de riktige detaljene med tokenet du nettopp hentet, GraphQL-spørringen du vil kjøre, og GraphQL API-endepunktet:
$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
Alternativt kan du bruke cURL til å oppnå samme 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)>"}'
For lokale testformål kan Node.JS-koden endres litt med en ekstra avhengighet (axios
) for å hente tokenet og aktivere API-en i én enkelt kjøring:
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();