Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Führen Sie die Schritte im Abschnitt "Verbinden von Anwendungen" aus, um den Zugriff auf Benutzerprinzipale zu ermöglichen. Sie können auch mit einem Service Principal auf die GraphQL-API zugreifen:
Führen Sie die Schritte zum Verbinden von Anwendungen aus, um eine Microsoft Entra-App zu erstellen, beachten Sie jedoch, dass Bereiche für Dienstprinzipale nicht benötigt werden. Fügen Sie in der neuen App unter "Zertifikate und Geheime Schlüssel" einen geheimen Clientschlüssel hinzu. Weitere Informationen finden Sie unter Registrieren einer Microsoft Entra-App und Erstellen eines Dienstprinzipal.
Stellen Sie sicher, dass Mandantenadministratoren die Verwendung von Dienstprinzipalen in Fabric aktivieren. Wechseln Sie im Mandantenadministratorportal zu Mandanteneinstellungen. Erweitern Sie unter Entwicklereinstellungen den Abschnitt Dienstprinzipale können Fabric-APIs verwenden.. Wenn diese Einstellung aktiviert ist, ist die Anwendung im Fabric-Portal für die Rollen- oder Berechtigungszuweisung sichtbar. Weitere Informationen finden Sie unter Unterstützung für Identitäten.
Der Dienstprinzipal benötigt Zugriff auf die GraphQL-API und die Datenquelle. Genauer gesagt, benötigt er die Berechtigung zum Ausführen für die GraphQL-API sowie je nach Bedarf Lese- oder Schreibzugriff in der gewählten Datenquelle. Öffnen Sie im Fabric-Portal den Arbeitsbereich, und wählen Sie die Auslassungspunkte neben der API aus. Wählen Sie Berechtigungen verwalten für die API und dann Benutzer hinzufügen aus. Fügen Sie die Anwendung hinzu, und wählen Sie "Abfragen und Mutationen ausführen" aus, die die erforderlichen Execute-Berechtigungen für den Dienstprinzipal bereitstellt. Zu Testzwecken ist es am einfachsten, die erforderlichen Berechtigungen sowohl für die API als auch für die Datenquelle zu implementieren, indem Sie die Anwendung als Arbeitsbereichsmitglied mit der Rolle „Mitwirkender“ hinzufügen,in der sich sowohl die GraphQL-API als auch Datenquellenelemente befinden.
Da ein Dienstprinzipal entweder ein Zertifikat oder ein Clientgeheimnis erfordert, wird er von der Microsoft Authentication Library (MSAL) in Single-Page-Anwendungen (SPAs) wie der im letzten Schritt erstellten React-App nicht unterstützt. Sie können je nach Ihren Anforderungen und Anwendungsfällen einen ordnungsgemäß gesicherten Back-End-Dienst mit klar definierter Autorisierungslogik verwenden.
Nachdem Ihre API für den Zugriff durch einen Dienstprinzipal konfiguriert wurde, können Sie sie lokal mithilfe einer einfachen Node.JS-Anwendung auf Ihrem lokalen Computer testen:
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);
}
}
Installieren Sie die Abhängigkeiten (@azure/identity) mit Dem Node.js Paket-Manager ihrer Wahl, ändern Sie die Datei mit den erforderlichen Informationen, speichern Sie sie, und führen Sie sie aus (node <filename.js>). Dadurch wird ein Token von Microsoft Entra abgerufen.
Das Token kann dann verwendet werden, um Ihre GraphQL-API mithilfe von PowerShell aufzurufen, indem sie die entsprechenden Details durch das abgerufene Token , die GraphQL-Abfrage , die Sie ausführen möchten, und den GraphQL-API-Endpunkt ersetzen:
$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
Alternativ können Sie cURL verwenden, um dasselbe Ergebnis zu erzielen:
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)>"}'
Ändern Sie für lokale Tests den Node.js Code geringfügig mit einer zusätzlichen Abhängigkeit (axios), um das Token abzurufen und die API in einer einzigen Ausführung aufzurufen:
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();
Verwandte Inhalte
- Erstellen einer Microsoft Entra-App in Azure
- Erfahren Sie, wie Sie eine API für GraphQL in Fabric erstellen und Daten hinzufügen.
- Erfahren Sie, wie Sie mehrere Datenquellen in der Fabric-API für GraphQL abfragen.