Abfragen von Daten mithilfe von MATLAB
MATLAB ist eine Programmier- und Numerische Computerplattform, die verwendet wird, um Daten zu analysieren, Algorithmen zu entwickeln und Modelle zu erstellen. In diesem Artikel wird erläutert, wie Sie ein Autorisierungstoken in TOKENS für Azure Data Explorer abrufen und wie Sie das Token für die Interaktion mit Ihrem Cluster verwenden.
Voraussetzungen
Wählen Sie die Registerkarte für das Betriebssystem aus, das zum Ausführen von ASPX verwendet wird.
Laden Sie die Microsoft Identity Client - und die Microsoft Identity Abstractions-Pakete von NuGet herunter.
Extrahieren Sie die heruntergeladenen Pakete und DLL-Dateien aus lib\net45 in einen Ordner der Wahl. In diesem Artikel verwenden wir den Ordner "C:\Ister\DLL".
Durchführen der Benutzerauthentifizierung
Bei der Benutzerauthentifizierung wird der Benutzer aufgefordert, sich über ein Browserfenster anzumelden. Bei erfolgreicher Anmeldung wird ein Benutzerautorisierungstoken gewährt. In diesem Abschnitt wird gezeigt, wie Sie diesen interaktiven Anmeldefluss konfigurieren.
So führen Sie die Benutzerauthentifizierung aus:
Definieren Sie die konstanten, die für die Autorisierung erforderlich sind. Weitere Informationen zu diesen Werten finden Sie unter Authentifizierungsparameter.
% The Azure Data Explorer cluster URL clusterUrl = 'https://<adx-cluster>.kusto.windows.net'; % The Azure AD tenant ID tenantId = ''; % Send a request to https://<adx-cluster>.kusto.windows.net/v1/rest/auth/metadata % The appId should be the value of KustoClientAppId appId = ''; % The Azure AD scopes scopesToUse = strcat(clusterUrl,'/.default ');
Laden Sie im STUDIOS die extrahierten DLL-Dateien:
% Access the folder that contains the DLL files dllFolder = fullfile("C:","Matlab","DLL"); % Load the referenced assemblies in the MATLAB session matlabDllFiles = dir(fullfile(dllFolder,'*.dll')); for k = 1:length(matlabDllFiles) baseFileName = matlabDllFiles(k).name; fullFileName = fullfile(dllFolder,baseFileName); fprintf(1, 'Reading %s\n', fullFileName); end % Load the downloaded assembly in MATLAB NET.addAssembly(fullFileName);
Verwenden Sie den PublicClientApplicationBuilder , um eine interaktive Benutzeranmeldung aufzufordern:
% Create an PublicClientApplicationBuilder app = Microsoft.Identity.Client.PublicClientApplicationBuilder.Create(appId)... .WithAuthority(Microsoft.Identity.Client.AzureCloudInstance.AzurePublic,tenantId)... .WithRedirectUri('http://localhost:8675')... .Build(); % System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; NET.setStaticProperty ('System.Net.ServicePointManager.SecurityProtocol',System.Net.SecurityProtocolType.Tls12) % Start with creating a list of scopes scopes = NET.createGeneric('System.Collections.Generic.List',{'System.String'}); % Add the actual scopes scopes.Add(scopesToUse); fprintf(1, 'Using appScope %s\n', scopesToUse); % Get the token from the service % and show the interactive dialog in which the user can login tokenAcquirer = app.AcquireTokenInteractive(scopes); result = tokenAcquirer.ExecuteAsync; % Extract the token and when it expires % and retrieve the returned token token = char(result.Result.AccessToken); fprintf(2, 'User token aquired and will expire at %s & extended expires at %s', result.Result.ExpiresOn.LocalDateTime.ToString,result.Result.ExtendedExpiresOn.ToLocalTime.ToString);
Verwenden Sie das Autorisierungstoken, um Ihren Cluster über die REST-API abzufragen:
options=weboptions('HeaderFields',{'RequestMethod','POST';'Accept' 'application/json';'Authorization' ['Bearer ', token]; 'Content-Type' 'application/json; charset=utf-8'; 'Connection' 'Keep-Alive'; 'x-ms-app' 'Matlab'; 'x-ms-client-request-id' 'Matlab-Query-Request'}); % The DB and KQL variables represent the database and query to execute querydata = struct('db', "<DB>", 'csl', "<KQL>"); querryresults = webwrite("https://sdktestcluster.westeurope.dev.kusto.windows.net/v2/rest/query", querydata, options); % Extract the results row results=querryresults{3}.Rows
Durchführen der Anwendungsauthentifizierung
Die Microsoft Entra-Anwendungsautorisierung kann für Szenarien verwendet werden, in denen die interaktive Anmeldung nicht erwünscht ist und automatisierte Ausführung erforderlich ist.
So führen Sie die Anwendungsauthentifizierung aus:
Stellen Sie eine Microsoft Entra-Anwendung bereit. Wählen Sie für den Umleitungs-URI Web und Eingabe http://localhost:8675 als URI aus.
Definieren Sie die konstanten, die für die Autorisierung erforderlich sind. Weitere Informationen zu diesen Werten finden Sie unter Authentifizierungsparameter.
% The Azure Data Explorer cluster URL clusterUrl = 'https://<adx-cluster>.kusto.windows.net'; % The Azure AD tenant ID tenantId = ''; % The Azure AD application ID and key appId = ''; appSecret = '';
Laden Sie im STUDIOS die extrahierten DLL-Dateien:
% Access the folder that contains the DLL files dllFolder = fullfile("C:","Matlab","DLL"); % Load the referenced assemblies in the MATLAB session matlabDllFiles = dir(fullfile(dllFolder,'*.dll')); for k = 1:length(matlabDllFiles) baseFileName = matlabDllFiles(k).name; fullFileName = fullfile(dllFolder,baseFileName); fprintf(1, 'Reading %s\n', fullFileName); end % Load the downloaded assembly NET.addAssembly(fullFileName);
Verwenden Sie " ConfidentialClientApplicationBuilder ", um eine nicht interaktive automatisierte Anmeldung mit der Microsoft Entra-Anwendung durchzuführen:
% Create an ConfidentialClientApplicationBuilder app = Microsoft.Identity.Client.ConfidentialClientApplicationBuilder.Create(appId)... .WithAuthority(Microsoft.Identity.Client.AzureCloudInstance.AzurePublic,tenantId)... .WithRedirectUri('http://localhost:8675')... .WithClientSecret(appSecret)... .Build(); % System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12; NET.setStaticProperty ('System.Net.ServicePointManager.SecurityProtocol',System.Net.SecurityProtocolType.Tls12) % Start with creating a list of scopes scopes = NET.createGeneric('System.Collections.Generic.List',{'System.String'}); % Add the actual scopes scopes.Add(scopesToUse); fprintf(1, 'Using appScope %s\n', scopesToUse); % Get the token from the service and cache it until it expires tokenAcquirer = app.AcquireTokenForClient(scopes); result = tokenAcquirer.ExecuteAsync; % Extract the token and when it expires % retrieve the returned token token = char(result.Result.AccessToken); fprintf(2, 'User token aquired and will expire at %s & extended expires at %s', result.Result.ExpiresOn.LocalDateTime.ToString,result.Result.ExtendedExpiresOn.ToLocalTime.ToString);
Verwenden Sie das Autorisierungstoken, um Ihren Cluster über die REST-API abzufragen:
options=weboptions('HeaderFields',{'RequestMethod','POST';'Accept' 'application/json';'Authorization' ['Bearer ', token]; 'Content-Type' 'application/json; charset=utf-8'; 'Connection' 'Keep-Alive'; 'x-ms-app' 'Matlab'; 'x-ms-client-request-id' 'Matlab-Query-Request'}); % The DB and KQL variables represent the database and query to execute querydata = struct('db', "<DB>", 'csl', "<KQL>"); querryresults = webwrite("https://sdktestcluster.westeurope.dev.kusto.windows.net/v2/rest/query", querydata, options); % Extract the results row results=querryresults{3}.Rows
Zugehöriger Inhalt
- Abfragen ihres Clusters mit der REST-API