Folyamatos hozzáférés-kiértékelést engedélyező API-k használata az alkalmazásokban
A folyamatos hozzáférés-kiértékelés (CAE) egy Microsoft Entra-funkció, amely lehetővé teszi a hozzáférési jogkivonatok visszavonását kritikus események és szabályzatok kiértékelése alapján, nem pedig a jogkivonatok élettartamon alapuló lejáratára támaszkodva. Egyes erőforrás API-k esetében, mivel a kockázat és a szabályzat valós időben van kiértékelve, ez akár 28 órára is növelheti a jogkivonatok élettartamát. Ezeket a hosszú élettartamú jogkivonatokat a Microsoft Authentication Library (MSAL) proaktív módon frissíti, ami növeli az alkalmazások rugalmasságát.
Ez a cikk bemutatja, hogyan használhatja a CAE-kompatibilis API-kat az alkalmazásokban. MSAL-t nem használó alkalmazások esetében hozzáadható a jogcímproblémák, jogcímkérelmek és ügyfélképességek támogatása a CAE használatához.
Implementálási szempontok
A CAE használatához az alkalmazásnak és a hozzá hozzáférő erőforrás API-nak caE-kompatibilisnek kell lennie. Ha azonban a kódot caE-kompatibilis erőforrás használatára készíti elő, az nem akadályozza meg, hogy olyan API-kat használjon, amelyek nincsenek engedélyezve.
Ha egy erőforrás API implementálja a CAE-t, és az alkalmazás deklarálja, hogy képes kezelni a CAE-t, az alkalmazás a CAE-jogkivonatokat kapja az adott erőforráshoz. Ezért, ha az alkalmazás CAE-jának készen áll, az alkalmazásnak kezelnie kell a CaE-jogcímre vonatkozó kihívást az összes olyan erőforrás-API-ra vonatkozóan, amelyek elfogadják a Microsoft Identity hozzáférési jogkivonatait. Ha nem kezeli a CAE-válaszokat ezekben az API-hívásokban, az alkalmazás egy ciklusban próbálkozhat újra egy API-hívással egy olyan jogkivonattal, amely még a jogkivonat visszaadott élettartama alatt van, de a hitelesítésszolgáltató miatt visszavonták.
A kód
Az első lépés a cae miatt a hívást elutasító erőforrás API-ból érkező válasz kezelésére vonatkozó kód hozzáadása. A CAE használatával az API-k 401-es állapotot és www-authenticate fejlécet adnak vissza, amikor a hozzáférési jogkivonatot visszavonták, vagy az API észleli a használt IP-cím módosítását. A WWW-Authenticate fejléc egy jogcímkérdést tartalmaz, amellyel az alkalmazás új hozzáférési jogkivonatot szerezhet be.
Példa:
// Line breaks for legibility only
HTTP 401; Unauthorized
Bearer authorization_uri="https://login.windows.net/common/oauth2/authorize",
error="insufficient_claims",
claims="eyJhY2Nlc3NfdG9rZW4iOnsibmJmIjp7ImVzc2VudGlhbCI6dHJ1ZSwgInZhbHVlIjoiMTYwNDEwNjY1MSJ9fX0="
Az alkalmazás a következőt ellenőrzi:
- a 401-es állapotot visszaadó API-hívás
- a www-authenticate fejléc megléte, amely a következőket tartalmazza:
- egy "error" paraméter a "insufficient_claims" értékkel
- egy "jogcím" paraméter
Ha ezek a feltételek teljesülnek, az alkalmazás kinyerheti és dekódolhatja a jogcímekkel kapcsolatos kihívást MSAL.NET WwwAuthenticateParameters
osztály használatával.
if (APIresponse.IsSuccessStatusCode)
{
// ...
}
else
{
if (APIresponse.StatusCode == System.Net.HttpStatusCode.Unauthorized
&& APIresponse.Headers.WwwAuthenticate.Any())
{
string claimChallenge = WwwAuthenticateParameters.GetClaimChallengeFromResponseHeaders(APIresponse.Headers);
Az alkalmazás ezután a jogcímekkel kapcsolatos kihívással szerez be egy új hozzáférési jogkivonatot az erőforráshoz.
try
{
authResult = await _clientApp.AcquireTokenSilent(scopes, firstAccount)
.WithClaims(claimChallenge)
.ExecuteAsync()
.ConfigureAwait(false);
}
catch (MsalUiRequiredException)
{
try
{
authResult = await _clientApp.AcquireTokenInteractive(scopes)
.WithClaims(claimChallenge)
.WithAccount(firstAccount)
.ExecuteAsync()
.ConfigureAwait(false);
}
// ...
Ha az alkalmazás készen áll a CAE-kompatibilis erőforrás által visszaadott jogcím-kihívás kezelésére, megadhatja a Microsoft Identity-nek, hogy az alkalmazás készen áll a CAE-ra. Ehhez az MSAL-alkalmazásban hozza létre a nyilvános ügyfelet a "cp1" ügyfélképességével.
_clientApp = PublicClientApplicationBuilder.Create(App.ClientId)
.WithDefaultRedirectUri()
.WithAuthority(authority)
.WithClientCapabilities(new [] {"cp1"})
.Build();
Az alkalmazást úgy tesztelheti, hogy bejelentkezik egy felhasználóval az alkalmazásba, majd az Azure Portal használatával visszavonja a felhasználó munkameneteit. Amikor az alkalmazás legközelebb meghívja a CAE-kompatibilis API-t, a rendszer felkéri a felhasználót, hogy újrahitelesítse.
Az alkalmazást úgy tesztelheti, hogy bejelentkezik egy felhasználóba, majd az Azure Portal használatával visszavonja a felhasználó munkamenetét. Amikor az alkalmazás legközelebb meghívja a CAE-kompatibilis API-t, a rendszer felkéri a felhasználót az újrahitelesítésre.
Kódminták
- Az Angular egyoldalas alkalmazásának engedélyezése a felhasználók bejelentkezéséhez és a Microsoft Graph meghívásához
- A React egyoldalas alkalmazásának engedélyezése a felhasználók bejelentkezéséhez és a Microsoft Graph meghívásához
- A ASP.NET Core-webalkalmazás engedélyezése a felhasználók bejelentkezéséhez és a Microsoft Graph meghívásához
Következő lépések
- A folyamatos hozzáférés kiértékelése elméleti áttekintése
- Jogcímproblémák, jogcímkérelmek és ügyfélképességek