Auktorisera åtkomst till API:er med Microsoft Authentication Library
Nu kan du logga in företagets användare i webbappen. Sedan vill du visa information som deras befattning, e-post för arbete och så vidare från deras medarbetares profil på sidan. Du upptäcker att Microsoft Graph API ger åtkomst till användarrelaterade data.
I den här lektionen får du lära dig hur MSAL kan hjälpa dig att få auktoriserad åtkomst till Microsoft-tjänster till exempel Microsoft Graph API.
API-behörigheter och omfång
Webbtjänster som skyddas av Microsoft Entra-ID definierar en uppsättning behörigheter som ger åtkomst till de API-funktioner och data som tjänsten exponerar. Ett program kan begära dessa behörigheter från användare och administratörer, som måste godkänna begäran innan programmet kan komma åt data eller agera för en användares räkning. Microsoft Graph har till exempel definierat behörigheter för att utföra följande uppgifter, bland annat:
- Läsa en användares kalender
- Skriva till en användares kalender
- Skicka e-post som användare
Användare och administratörer kan utöva kontroll och veta vilka data programmet kan komma åt. Innan ditt program kan komma åt ett API som skyddas av Microsoft måste du ange programbehörigheterna för att utföra åtgärderna.
Microsoft Entra-ID stöder två typer av behörigheter: delegerade behörigheter och programbehörigheter.
Delegerade behörigheter används av appar som har en inloggad användare. För dessa appar godkänner antingen användaren eller en administratör de behörigheter som appen begär. Appen delegeras behörighet att fungera som den inloggade användaren när den gör anrop till mål-API:et. Vissa behörigheter med hög behörighet kräver administratörsmedgivande.
Programbehörigheter används av appar som körs utan en inloggad användare, till exempel appar som körs som bakgrundstjänster eller daemoner. Endast en administratör kan godkänna programbehörigheter.
Du kan tilldela dessa API-behörigheter till din appregistrering från Azure Portal.
Omfattningar
Microsoft Entra ID implementerar OAuth 2.0-auktoriseringsprotokollet genom vilket ett program kan komma åt webbaserade resurser åt en användare.
I OAuth 2.0 kallas dessa typer av behörighetsuppsättningar för omfång. När du gör en auktoriseringsbegäran scope
till Microsoft Entra-ID begär ett program de behörigheter som krävs genom att ange behörigheten i frågeparametern för begäran. Omfångsvärdet https://graph.microsoft.com/Calendars.Read
används till exempel för att begära behörighet att läsa användarens kalendrar i Microsoft Graph.
Hämta åtkomsttoken med MSAL
Med åtkomsttoken kan klientprogram anropa webb-API:er som skyddas av Microsoft Entra-ID på ett säkert sätt. Det finns flera sätt att hämta en åtkomsttoken med hjälp av Microsoft Authentication Library (MSAL). I allmänhet beror den metod som används för att hämta en token på om programmet är ett offentligt klientprogram som skrivbord eller mobilapp, eller ett konfidentiellt klientprogram som webbapp, webb-API eller daemonprogram.
Flera av MSAL:s metoder för tokenförvärv kräver en scopes
parameter, som är en lista med strängar som deklarerar önskade behörigheter och de resurser som begärs.
Rekommenderat anropsmönster för webbappar
MSAL cachelagrar en token efter att den har hämtats. För webbprogram som använder OpenID Connect-auktoriseringskodflödet är det rekommenderade mönstret i kontrollanterna att:
Försök först att hämta en token tyst från cachen innan du försöker hämta en token på annat sätt. Följande kod är ett utdrag från implementeringen av
acquireTokenSilently
metoden iAuthHelper
klassen.final SilentParameters parameters = SilentParameters .builder(Collections.singleton(Config.SCOPES), context.getAccount()) .build(); final ConfidentialClientApplication client = getConfidentialClientInstance(); client.tokenCache().deserialize(context.getTokenCache()); final IAuthenticationResult result = client.acquireTokenSilently(parameters).get();
Om det inte finns någon token i cacheminnet och begäran om tyst token inte kan hämta en token kan du hämta token med hjälp av auktoriseringskodflödet:
final AuthorizationCodeParameters authParams = AuthorizationCodeParameters .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES)) .build(); final IAuthenticationResult result = app.acquireToken(authParams).get();
MSAL kan också uppdatera en token när den närmar sig förfallodatum (eftersom tokencacheminnet också innehåller en uppdateringstoken).
Autentiseringsresultat
När klienten begär en åtkomsttoken returnerar Microsoft Entra-ID också ett autentiseringsresultat som innehåller metadata om åtkomsttoken. Med dessa data kan din app utföra intelligent cachelagring av åtkomsttoken utan att behöva parsa själva åtkomsttoken. MSAL-returnerar AuthenticationResult
exponerar:
- Åtkomsttoken för webb-API:et.
- ID-token för användaren (en JWT).
- Tokens förfallodatum, som anger datum/tid när token upphör att gälla.
- Klientorganisations-ID:t innehåller klientorganisationen där användaren hittades.
- De omfång som token utfärdades för.
- Det unika ID:t för användaren.
Introduktion till Microsoft Graph
Microsoft Graph API erbjuder en enda slutpunkt, https://graph.microsoft.com
, för att ge åtkomst till omfattande, personcentrerade data och insikter i Microsoft-molnet. Du kan använda REST-API:er eller SDK:er för att komma åt slutpunkten och skapa appar som stöder Microsoft 365-scenarier, som sträcker sig över produktivitet, samarbete, utbildning, personer och arbetsplatsinformation och mycket mer. Microsoft Graph innehåller också en kraftfull uppsättning tjänster som hanterar användar- och enhetsidentitet.
Du kan till exempel läsa egenskaperna för en inloggad användare genom att https://graph.microsoft.com/v1.0/me
komma åt slutpunkten.