Hitelesítés a Microsoft Authentication Library (MSAL) használatával az alkalmazásokban
A fürttel való programozott hitelesítéshez hozzáférési jogkivonatot kell kérnie az Azure Data Explorer Microsoft Entra azonosítójától. Ez a hozzáférési jogkivonat identitásigazolásként szolgál, amikor kéréseket ad ki a fürtnek. Hozzáférési jogkivonat létrehozásához használhatja a Microsoft Authentication Library (MSAL)-folyamatok egyikét.
Ez a cikk bemutatja, hogyan használhatja az MSAL-t a fürtön lévő egyszerű hitelesítéshez. Az MSAL közvetlen használata az egyszerű hitelesítéshez elsősorban olyan webalkalmazások esetében fontos, amelyek nevében (OBO) vagy egyoldalas alkalmazás (SPA) hitelesítést igényelnek. Más esetekben a Kusto-ügyfélkódtárak használatát javasoljuk , mivel leegyszerűsítik a hitelesítési folyamatot.
Ebben a cikkben megismerheti a fő hitelesítési forgatókönyveket, a sikeres hitelesítés biztosításához szükséges információkat, valamint az MSAL hitelesítéshez való használatát.
Hitelesítési forgatókönyvek
A fő hitelesítési forgatókönyvek a következők:
Felhasználói hitelesítés: Az emberi felhasználók identitásának ellenőrzésére szolgál.
Alkalmazáshitelesítés: Egy olyan alkalmazás identitásának ellenőrzésére szolgál, amelyhez emberi beavatkozás nélkül kell hozzáférnie az erőforrásokhoz konfigurált hitelesítő adatok használatával.
OBO-hitelesítés: Lehetővé teszi, hogy egy alkalmazás jogkivonatot cseréljen az említett alkalmazáshoz egy jogkivonattal a Kusto-szolgáltatás eléréséhez. Ezt a folyamatot az MSAL használatával kell implementálni.
Egyoldalas alkalmazás (SPA) hitelesítése: Lehetővé teszi, hogy az ügyféloldali SPA-webalkalmazások bejelentkezhessenek a felhasználókba, és jogkivonatokat szerezzenek be a fürt eléréséhez. Ezt a folyamatot az MSAL használatával kell implementálni.
A felhasználó- és alkalmazáshitelesítéshez a Kusto-ügyfélkódtárak használatát javasoljuk. OBO- és SPA-hitelesítés esetén a Kusto-ügyfélkódtárak nem használhatók.
Hitelesítési paraméterek
A jogkivonat-beszerzési folyamat során az ügyfélnek a következő paramétereket kell megadnia:
Paraméter neve | Leírás |
---|---|
Erőforrás-azonosító | Az erőforrás-azonosító, amelyhez ki szeretné adni a Microsoft Entra hozzáférési jogkivonatot. Az erőforrás-azonosító a fürt URI-ja portinformációk és elérési út nélkül. Példa: A fürt erőforrás-azonosítója help .https://help.kusto.windows.net |
Microsoft Entra bérlőazonosító | Microsoft Entra azonosító egy több-bérlős szolgáltatás, és minden szervezet létrehozhat egy könyvtár nevű objektumot, amely biztonsági objektumokat, például felhasználói fiókokat és alkalmazásokat tárol. Microsoft Entra azonosító gyakran bérlőként hivatkozik a könyvtárra. Minden bérlő rendelkezik egy GUID formátumú bérlőazonosítóval. A szervezet tartományneve sok esetben a Microsoft Entra bérlő identitására is használható. Példa: Egy "Contoso" szervezet rendelkezhet a bérlőazonosítóval 12345678-a123-4567-b890-123a456b789c és a tartománynévvel contoso.com . |
Microsoft Entra szolgáltató URI-ja | A hitelesítéshez használt végpont. A Microsoft Entra könyvtár vagy bérlő határozza meg a Microsoft Entra szolgáltató URI-jait. Az URI a https://login.microsoftonline.com/{tenantId} {tenantId} bérlőazonosító vagy a tartománynév.Példa: Például: https://login.microsoftonline.com/12345678-a123-4567-b890-123a456b789c . |
Megjegyzés
A Microsoft Entra szolgáltatásvégpont megváltozik az országos felhőkben. Ha egy országos felhőben üzembe helyezett Azure Data Explorer szolgáltatással dolgozik, állítsa be a megfelelő nemzeti felhőbeli Microsoft Entra szolgáltatásvégpontot.
Felhasználói hitelesítés végrehajtása MSAL használatával
Az alábbi kódminta bemutatja, hogyan szerezhet be engedélyezési jogkivonatot az MSAL használatával a fürthöz. Az engedélyezés olyan módon történik, amely elindítja az interaktív bejelentkezési felhasználói felületet. Az appRedirectUri
az URL-cím, amelyre Microsoft Entra azonosító átirányítja a hitelesítés sikeres befejezése után. Az MSAL kinyeri az engedélyezési kódot ebből az átirányításból.
var kustoUri = "https://<clusterName>.<region>.kusto.windows.net";
var authClient = PublicClientApplicationBuilder.Create("<appId>")
.WithAuthority($"https://login.microsoftonline.com/<appTenant>")
.WithRedirectUri("<appRedirectUri>")
.Build();
var result = authClient.AcquireTokenInteractive(
new[] { $"{kustoUri}/.default" } // Define scopes for accessing Azure Data Explorer cluster
).ExecuteAsync().Result;
var bearerToken = result.AccessToken;
var request = WebRequest.Create(new Uri(kustoUri));
request.Headers.Set(HttpRequestHeader.Authorization, string.Format(CultureInfo.InvariantCulture, "{0} {1}", "Bearer", bearerToken));
Megjegyzés
- Javasoljuk, hogy amikor csak lehetséges, használja a Kusto-ügyfélkódtárakat . Ezek a kódtárak leegyszerűsítik a hitelesítési folyamatot azáltal, hogy lehetővé teszik a hitelesítési tulajdonságok megadását a Kusto kapcsolati karakterlánc.
- A Kusto-ügyfélkódtárakkal Microsoft Entra jogkivonatokat a rendszer a felhasználó számítógépén található helyi jogkivonat-gyorsítótárban tárolja, hogy csökkentse a hitelesítő adatok kérésének számát. A gyorsítótárfájl %APPDATA%\Kusto\userTokenCache.data , és csak a bejelentkezett felhasználó férhet hozzá.
Alkalmazáshitelesítés végrehajtása MSAL használatával
Az alábbi kódminta bemutatja, hogyan szerezhet be engedélyezési jogkivonatot az MSAL használatával a fürthöz. Ebben a folyamatban nem jelenik meg kérdés. Az alkalmazásnak Microsoft Entra azonosítóval kell regisztrálnia, és rendelkeznie kell egy alkalmazáskulccsal vagy egy X509v2-tanúsítvánnyal, amelyet Microsoft Entra ID állított ki. Alkalmazás beállításához lásd: Microsoft Entra alkalmazás kiépítése.
var kustoUri = "https://<clusterName>.<region>.kusto.windows.net";
var authClient = ConfidentialClientApplicationBuilder.Create("<appId>")
.WithAuthority($"https://login.microsoftonline.com/<appTenant>")
.WithClientSecret("<appKey>") // Can be replaced by .WithCertificate to authenticate with an X.509 certificate
.Build();
var result = authClient.AcquireTokenForClient(
new[] { $"{kustoUri}/.default" } // Define scopes for accessing Azure Data Explorer cluster
).ExecuteAsync().Result;
var bearerToken = result.AccessToken;
var request = WebRequest.Create(new Uri(kustoUri));
request.Headers.Set(HttpRequestHeader.Authorization, string.Format(CultureInfo.InvariantCulture, "{0} {1}", "Bearer", bearerToken));
Megjegyzés
Javasoljuk, hogy amikor csak lehetséges, használja a Kusto-ügyfélkódtárakat . Ezek a kódtárak leegyszerűsítik a hitelesítési folyamatot azáltal, hogy lehetővé teszik a hitelesítési tulajdonságok megadását a Kusto kapcsolati karakterlánc.
Helyszíni (OBO) hitelesítés végrehajtása
A hitelesítés akkor fontos, ha a webalkalmazás vagy szolgáltatás közvetítőként működik a felhasználó vagy az alkalmazás és a fürt között.
Ebben a forgatókönyvben egy alkalmazás egy Microsoft Entra hozzáférési jogkivonatot küld egy tetszőleges erőforráshoz. Ezután az alkalmazás ezt a jogkivonatot használja egy új Microsoft Entra hozzáférési jogkivonat beszerzéséhez az Azure Data Explorer-erőforráshoz. Ezután az alkalmazás hozzáférhet a fürthöz az eredeti Microsoft Entra hozzáférési jogkivonat által jelzett rendszernév nevében. Ezt a folyamatot OAuth 2.0-nak nevezzük a hitelesítés nevében. Általában több konfigurációs lépésre van szükség Microsoft Entra azonosítóval, és bizonyos esetekben a Microsoft Entra bérlő rendszergazdájának külön hozzájárulására lehet szükség.
A nevében történő hitelesítés végrehajtása:
Hozzon létre megbízhatósági kapcsolatot az alkalmazás és a fürt között. Ehhez kövesse a Delegált engedélyek konfigurálása című témakör lépéseit.
A kiszolgálókódban az MSAL használatával hajtsa végre a tokencserét.
var kustoUri = "https://<clusterName>.<region>.kusto.windows.net"; var authClient = ConfidentialClientApplicationBuilder.Create("<appId>") .WithAuthority($"https://login.microsoftonline.com/<appTenant>") .WithClientSecret("<appKey>") // Can be replaced by .WithCertificate to authenticate with an X.509 certificate .Build(); var result = authClient.AcquireTokenOnBehalfOf( new[] { $"{kustoUri}/.default" }, // Define scopes for accessing your cluster new UserAssertion("<userAccessToken>") // Encode the "original" token that will be used for exchange ).ExecuteAsync().Result; var accessTokenForAdx = result.AccessToken;
Lekérdezések futtatásához használja a tokent. Például:
var request = WebRequest.Create(new Uri(kustoUri)); request.Headers.Set(HttpRequestHeader.Authorization, string.Format(CultureInfo.InvariantCulture, "{0} {1}", "Bearer", accessTokenForAdx));
Egyoldalas alkalmazás (SPA) hitelesítésének végrehajtása
SPA-webügyfél hitelesítéséhez használja az OAuth engedélyezési kódfolyamatot.
Ebben a forgatókönyvben a rendszer átirányítja az alkalmazást, hogy bejelentkezjen Microsoft Entra azonosítóba. Ezután Microsoft Entra azonosító visszakerül az alkalmazásba egy engedélyezési kóddal az URI-ban. Ezután az alkalmazás kérést küld a jogkivonatvégpontnak a hozzáférési jogkivonat lekéréséhez. A jogkivonat 24 órán át érvényes, amely alatt az ügyfél újra felhasználhatja a jogkivonat csendes beszerzésével.
Microsoft Identitásplatform részletes oktatóanyagokkal rendelkezik a különböző használati esetekhez, például React, Angular és JavaScripthez.
Webügyfél hitelesítésének beállítása:
Konfigurálja az alkalmazást a MSAL.js 2.0-s verzióban leírt módon hitelesítési kódfolyamattal.
A MSAL.js 2.0 kódtár használatával jelentkezzen be egy felhasználóba, és hitelesítse magát a fürtben. Microsoft Identitásplatform részletes oktatóanyagokkal rendelkezik a különböző használati esetekhez, például React, Angular és JavaScripthez.
Az alábbi példa a MSAL.js kódtárat használja az Azure Data Explorer eléréséhez.
import * as msal from "@azure/msal-browser"; const msalConfig = { auth: { clientId: "<AAD client application ID>", authority: "https://login.microsoftonline.com/<AAD tenant ID>", }, }; const msalInstance = new msal.PublicClientApplication(msalConfig); const myAccounts = msalInstance.getAllAccounts(); // If no account is logged in, redirect the user to log in. if (myAccounts === undefined || myAccounts.length === 0) { try { await msalInstance.loginRedirect({ scopes: ["https://help.kusto.windows.net/.default"], }); } catch (err) { console.error(err); } } const account = myAccounts[0]; const name = account.name; window.document.getElementById("main").innerHTML = `Hi ${name}!`; // Get the access token required to access the specified Azure Data Explorer cluster. const accessTokenRequest = { account, scopes: ["https://help.kusto.windows.net/.default"], }; let acquireTokenResult = undefined; try { acquireTokenResult = await msalInstance.acquireTokenSilent(accessTokenRequest); } catch (error) { if (error instanceof InteractionRequiredAuthError) { await msalInstance.acquireTokenRedirect(accessTokenRequest); } } const accessToken = acquireTokenResult.accessToken; // Make requests to the specified cluster with the token in the Authorization header. const fetchResult = await fetch("https://help.kusto.windows.net/v2/rest/query", { headers: { Authorization: `Bearer ${accessToken}`, "Content-Type": "application/json", }, method: "POST", body: JSON.stringify({ db: "Samples", csl: "StormEvents | count", }), }); const jsonResult = await fetchResult.json(); // The following line extracts the first cell in the result data. const count = jsonResult.filter((x) => x.TableKind === "PrimaryResult")[0].Rows[0][0];
Kapcsolódó tartalom
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: