Godkjenne tilgang til API-er med Microsoft Authentication Library
Nå kan du logge på firmaets brukere i nettprogrammet. Deretter vil du vise informasjon som stilling, jobb-e-post og så videre fra ansattprofilen på siden. Du finner ut at Microsoft Graph-API-en gir tilgang til brukerrelaterte data.
I denne enheten lærer du hvordan MSAL kan hjelpe deg med å få autorisert tilgang til Microsoft-tjenester, for eksempel Microsoft Graph API.
API-tillatelser og omfang
Nettjenester sikret av Microsoft Entra ID definerer et sett med tillatelser som gir tilgang til API-funksjonaliteten og dataene som tjenesten viser. Et program kan be om disse tillatelsene fra brukere og administratorer, som må godkjenne forespørselen før programmet kan få tilgang til data eller handle på vegne av en bruker. Som et eksempel har Microsoft Graph definerte tillatelser til blant annet å utføre følgende oppgaver:
- Lese en brukers kalender
- Skrive til en brukers kalender
- Sende e-post som bruker
Brukere og administratorer kan utøve kontroll og vite hvilke data programmet har tilgang til. Før programmet har tilgang til en API som er sikret av Microsoft, må du angi programtillatelser for å utføre handlingene.
Microsoft Entra ID støtter to typer tillatelser: delegerte tillatelser og programtillatelser.
delegerte tillatelser brukes av apper som har en pålogget bruker til stede. For disse appene samtykker enten brukeren eller administratoren til tillatelsene som appen ber om. Appen delegerer tillatelse til å fungere som den påloggede brukeren når den foretar kall til mål-API-en. Noen tillatelser med høy privilegerte rettigheter krever administratorsamtykke.
programtillatelser brukes av apper som kjører uten en pålogget bruker til stede. apper som for eksempel kjører som bakgrunnstjenester eller daemoner. Bare en administrator kan samtykke til programtillatelser.
Du kan tilordne disse API-tillatelsene til appregistreringen fra Azure-portalen.
Omfang
Microsoft Entra ID implementerer OAuth 2.0-autorisasjonsprotokollen der et program kan få tilgang til nettbaserte ressurser på vegne av en bruker.
I OAuth 2.0 kalles disse typene tillatelsessett omfang. Når du foretar en godkjenningsforespørsel til Microsoft Entra ID, ber et program om tillatelsene den trenger ved å angi tillatelsen i forespørselens scope spørringsparameter. Omfangsverdien https://graph.microsoft.com/Calendars.Read brukes for eksempel til å be om tillatelse til å lese brukerens kalendere i Microsoft Graph.
Hent tilgangstokener med MSAL
Access-tokener aktivere klientprogrammer for sikkert å kalle web-API-er beskyttet av Microsoft Entra ID. Det finnes flere måter å skaffe et tilgangstoken på ved hjelp av Microsoft Authentication Library (MSAL). Generelt avhenger metoden som brukes til å anskaffe et token, om programmet er et offentlig klientprogram som skrivebord eller mobilapp, eller et konfidensielt klientprogram som nettapp, nett-API eller daemonprogram.
Flere av MSAL-tokenoppkjøpsmetodene krever en scopes parameter, som er en liste over strenger som erklærer de ønskede tillatelsene og de forespurte ressursene.
Anbefalt samtalemønster for nettapper
MSAL bufrer et token etter at det er anskaffet. For webprogrammer som bruker openID Connect-godkjenningskodeflyten, er det anbefalte mønsteret i kontrollerne å:
Prøv først å få et token stille fra hurtigbufferen før du prøver å skaffe et token på andre måter. Følgende kode er et utdrag fra implementeringen av
acquireTokenSilentlymetoden iAuthHelperklassen.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();Hvis det ikke er noe token i hurtigbufferen, og den stille tokenforespørselen ikke får et token, kan du skaffe tokenet ved hjelp av godkjenningskodeflyten:
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 er også i stand til å oppdatere et token når det nærmer seg utløpsdato (ettersom tokenbufferen også inneholder et oppdateringstoken).
Godkjenningsresultater
Når klienten ber om et tilgangstoken, returnerer Microsoft Entra ID også et godkjenningsresultat som inneholder metadata om tilgangstokenet. Med disse dataene kan appen gjøre intelligent hurtigbufring av tilgangstokener uten å måtte analysere selve tilgangstokenet. Den AuthenticationResult MSAL-returen viser:
- Tilgangstokenet for web-API-en.
- ID-tokenet for brukeren (en JWT).
- Tokenets utløp, som forteller datoen/klokkeslettet når tokenet utløper.
- Leier-ID-en inneholder leieren brukeren ble funnet i.
- Omfanget som tokenet ble utstedt for.
- Den unike ID-en for brukeren.
Innføring i Microsoft Graph
Microsoft Graph-API-en tilbyr ett enkelt endepunkt, https://graph.microsoft.com, for å gi tilgang til rike, personer-sentriske data og innsikter i Microsoft-skyen. Du kan bruke REST-API-er eller SDK-er til å få tilgang til endepunktet og bygge apper som støtter Microsoft 365-scenarier, som strekker seg over produktivitet, samarbeid, utdanning, personer og intelligens på arbeidsplassen og mye mer. Microsoft Graph inneholder også et kraftig sett med tjenester som administrerer bruker- og enhetsidentitet.
Du kan for eksempel lese egenskapene til en pålogget bruker ved å få tilgang til det https://graph.microsoft.com/v1.0/me endepunktet.