Godkend adgang til API'er med Microsoft Authentication Library
Du kan nu logge på virksomhedens brugere i webprogrammet. Derefter skal du vise oplysninger som f.eks. stilling, arbejdsmail osv. fra deres medarbejderprofil på siden. Du finder ud af, at Microsoft Graph API giver adgang til brugerrelaterede data.
I dette undermodul lærer du, hvordan MSAL kan hjælpe dig med at få godkendt adgang til Microsoft-tjenester, f.eks. Microsoft Graph API.
API-tilladelser og -områder
Webtjenester, der er sikret med Microsoft Entra-id, definerer et sæt tilladelser, der giver adgang til den API-funktionalitet og de data, som tjenesten fremviser. Et program kan anmode om disse tilladelser fra brugere og administratorer, som skal godkende anmodningen, før programmet kan få adgang til data eller handle på en brugers vegne. Microsoft Graph har f.eks. defineret tilladelser til at udføre følgende opgaver:
- Læs en brugers kalender
- Skriv til en brugers kalender
- Send mail som bruger
Brugere og administratorer kan udøve kontrol og vide, hvilke data programmet kan få adgang til. Før dit program kan få adgang til en API, der er sikret af Microsoft, skal du angive programtilladelserne for at udføre handlingerne.
Microsoft Entra-id understøtter to typer tilladelser: delegerede tilladelser og programtilladelser.
delegerede tilladelser bruges af apps, der har en bruger, der er logget på. For disse apps accepterer brugeren eller en administrator de tilladelser, som appen anmoder om. Appen er delegeret tilladelse til at fungere som den bruger, der er logget på, når den foretager kald til destinations-API'en. Nogle tilladelser med højt rettigheder kræver administratorsamtykke.
programtilladelser, bruges af apps, der kører uden en bruger, der er logget på, til stede. apps, der kører som baggrundstjenester eller daemoner. Det er kun en administrator, der kan give samtykke til programtilladelser.
Du kan tildele disse API-tilladelser til din appregistrering fra Azure Portal.
Områder
Microsoft Entra ID implementerer OAuth 2.0-godkendelsesprotokollen, hvorigennem et program kan få adgang til webbaserede ressourcer på vegne af en bruger.
I OAuth 2.0 kaldes disse typer tilladelsessæt områder. Når der foretages en godkendelsesanmodning til Microsoft Entra ID, anmoder et program om de tilladelser, det har brug for, ved at angive tilladelsen i forespørgslens scope forespørgselsparameter. Områdeværdien https://graph.microsoft.com/Calendars.Read bruges f.eks. til at anmode om tilladelse til at læse brugerens kalendere i Microsoft Graph.
Hent adgangstokens med MSAL
Access-tokens gøre det muligt for klientprogrammer at kalde web-API'er, der er beskyttet af Microsoft Entra ID, sikkert. Der er flere måder at hente et adgangstoken på ved hjælp af Microsoft Authentication Library (MSAL). Den metode, der bruges til at hente et token, afhænger generelt af, om programmet er et offentligt klientprogram, f.eks. desktop- eller mobilapps, eller et fortroligt klientprogram som webapp, web-API eller daemonprogram.
Flere af MSAL's metoder til hentning af token kræver en scopes parameter, som er en liste over strenge, der deklarerer de ønskede tilladelser og de ressourcer, der anmodes om.
Anbefalet opkaldsmønster for webapps
MSAL cachelagrer et token, efter at det er blevet købt. I forbindelse med webprogrammer, der bruger OpenID Connect-godkendelseskodeflowet, er det anbefalede mønster i controllerne at:
Prøv først at hente et token uovervåget fra cachen, før du forsøger at hente et token på andre måder. Følgende kode er et uddrag fra implementeringen af metoden
acquireTokenSilentlyi klassenAuthHelper.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 der ikke er noget token i cachen, og anmodningen om uovervåget token ikke kan hente et token, kan du hente tokenet ved hjælp af godkendelseskodeflowet:
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 også opdatere et token, når det er ved at være ved at udløbe (da tokencachen også indeholder et opdateringstoken).
Godkendelsesresultater
Når din klient anmoder om et adgangstoken, returnerer Microsoft Entra ID også et godkendelsesresultat, der indeholder metadata om adgangstokenet. Disse data gør det muligt for din app at foretage intelligent cachelagring af adgangstokens uden at skulle fortolke selve adgangstokenet. Den AuthenticationResult MSAL returnerer fremviser:
- Adgangstokenet til web-API'en.
- Id-tokenet for brugeren (en JWT).
- Tokenets udløb, som fortæller datoen/klokkeslættet, hvornår tokenet udløber.
- Lejer-id'et indeholder den lejer, som brugeren blev fundet i.
- De områder, som tokenet er udstedt for.
- Det entydige id for brugeren.
Introduktion til Microsoft Graph
Microsoft Graph-API'en indeholder et enkelt slutpunkt, https://graph.microsoft.com, der giver adgang til omfattende personcentrerede data og indsigt i Microsoft-cloudmiljøet. Du kan bruge REST API'er eller SDK'er til at få adgang til slutpunktet og bygge apps, der understøtter Microsoft 365-scenarier, der spænder over produktivitet, samarbejde, uddannelse, personer og arbejdspladsintelligens og meget mere. Microsoft Graph indeholder også et effektivt sæt tjenester, der administrerer bruger- og enhedsidentitet.
Du kan f.eks. læse egenskaberne for en bruger, der er logget på, ved at få adgang til det https://graph.microsoft.com/v1.0/me slutpunkt.