Verificatiestromen en toepassingsscenario's

De Microsoft identity platform ondersteuning voor verificatie voor verschillende soorten moderne toepassingsarchitectarchitecten. Alle architecturen zijn gebaseerd op de industriestandaardprotocollen OAuth 2.0en OpenID Verbinding maken . Met behulp van de verificatiebibliotheken voor de Microsoft identity platformverifiëren toepassingen identiteiten en verkrijgen ze tokens voor toegang tot beveiligde API's.

In dit artikel worden verificatiestromen en de toepassingsscenario's beschreven waarin ze worden gebruikt.

Toepassingscategorieën

Tokens kunnen worden verkregen uit verschillende typen toepassingen, waaronder:

  • Web-apps
  • Mobiele apps
  • Desktop-apps
  • Web-API's

Tokens kunnen ook worden verkregen door apps die worden uitgevoerd op apparaten die geen browser hebben of die worden uitgevoerd op de Internet of Things (IoT).

In de volgende secties worden de categorieën toepassingen beschreven.

Beveiligde resources versus clienttoepassingen

Verificatiescenario's hebben betrekking op twee activiteiten:

  • Beveiligingstokens verkrijgen voor een beveiligde web-API:we raden u aan de Microsoft Authentication Library (MSAL)te gebruiken, ontwikkeld en ondersteund door Microsoft.
  • Een web-API of web-app beveiligen:een uitdaging van het beveiligen van deze resources is het valideren van het beveiliging token. Op sommige platforms biedt Microsoft middleware-bibliotheken.

Met gebruikers of zonder gebruikers

In de meeste verificatiescenario's worden tokens namens aangemelde gebruikers verkregen.

Scenarios with users

Er zijn echter ook daemon-apps. In deze scenario's verkrijgen toepassingen tokens namens zichzelf zonder gebruiker.

Scenarios with daemon apps

Toepassingen met één pagina, openbare client en vertrouwelijke clienttoepassingen

Beveiligingstokens kunnen worden verkregen door meerdere typen toepassingen. Deze toepassingen zijn doorgaans onderverdeeld in de volgende drie categorieën. Elke wordt gebruikt met verschillende bibliotheken en objecten.

  • Toepassingen met één pagina:dit zijn web-apps waarin tokens worden verkregen door een JavaScript- of TypeScript-app die wordt uitgevoerd in de browser. Veel moderne apps hebben een toepassing met één pagina aan de front-end die voornamelijk is geschreven in JavaScript. De toepassing gebruikt vaak een framework zoals Angular, React of Vue. MSAL.js is de enige Microsoft Authentication Library die toepassingen met één pagina ondersteunt.

  • Openbare clienttoepassingen:apps in deze categorie, zoals de volgende typen, melden altijd gebruikers aan:

    • Bureaublad-apps die web-API's aanroepen namens aangemelde gebruikers
    • Mobiele apps
    • Apps die worden uitgevoerd op apparaten die geen browser hebben, zoals apps die worden uitgevoerd op IoT
  • Vertrouwelijke clienttoepassingen:Apps in deze categorie omvatten:

    • Web-apps die een web-API aanroepen
    • Web-API's die een web-API aanroepen
    • Daemon-apps, zelfs wanneer deze zijn geïmplementeerd als een consoleservice zoals een Linux-daemon of een Windows service

Aanmeldingsdoelgroep

De beschikbare verificatiestromen verschillen afhankelijk van de aanmeldings doelgroep. Sommige stromen zijn alleen beschikbaar voor werk- of schoolaccounts. Andere zijn beschikbaar voor werk- of schoolaccounts en voor persoonlijke Microsoft-accounts.

Zie Ondersteunde accounttypen voor meer informatie.

Toepassingsscenario's

De Microsoft identity platform ondersteunt verificatie voor deze app-architecturen:

  • Toepassingen met één pagina
  • Web-apps
  • Web-API's
  • Mobiele apps
  • Systeemeigen apps
  • Daemon-apps
  • Apps aan serverzijde

Toepassingen gebruiken de verschillende verificatiestromen om gebruikers aan te melden en tokens op te halen om beveiligde API's aan te roepen.

Toepassing met één pagina

Veel moderne web-apps zijn gebouwd als toepassingen met één pagina aan de clientzijde. Deze toepassingen gebruiken JavaScript of een framework zoals Angular, Vue en React. Deze toepassingen worden uitgevoerd in een webbrowser.

Toepassingen met één pagina verschillen van traditionele web-apps aan de serverzijde wat betreft verificatiekenmerken. Met behulp van Microsoft identity platform kunnen toepassingen met één pagina gebruikers aanmelden en tokens krijgen voor toegang tot back-endservices of web-API's. De Microsoft identity platform biedt twee toekenningstypen voor JavaScript-toepassingen:

MSAL.js (2.x) MSAL.js (1.x)
A single-page application auth A single-page application implicit

Web-app waarmee een gebruiker wordt aangegeven

A web app that signs in a user

Als u een web-app wilt beveiligen waarmee een gebruiker wordt aangegeven:

  • Als u in .NET ontwikkelt, gebruikt u ASP.NET of ASP.NET Core met de ASP.NET OpenID Verbinding maken middleware. Het beveiligen van een resource omvat het valideren van het beveiliging token, dat wordt uitgevoerd door de IdentityModel-extensies voor .NET en niet door MSAL-bibliotheken.

  • Als u ontwikkelt in Node.js, gebruikt u MSAL Node of Passport.js.

Zie Web-app waarmee gebruikers worden aangegeven voor meer informatie.

Web-app waarmee een gebruiker wordt aangeroepen en een web-API namens de gebruiker wordt aangeroepen

A web app calling web APIs

Als u namens een gebruiker een web-API wilt aanroepen vanuit een web-app, gebruikt u de autorisatiecodestroom en slaan u de verkregen tokens op in de tokencache. Indien nodig vernieuwt MSAL tokens en verkrijgt de controller op de silently tokens uit de cache.

Zie Web-app die web-API's aanroept voor meer informatie.

Desktop-app die een web-API aanroept namens een aangemelde gebruiker

Gebruik de interactieve methoden voor het verkrijgen van tokens van MSAL om een web-API aan te roepen waarmee gebruikers worden aangeroepen. Met deze interactieve methoden kunt u de aanmeldings-UI-ervaring bepalen. MSAL maakt voor deze interactie gebruik van een webbrowser.

A desktop app calling a web API

Er is een andere mogelijkheid voor Windows gehoste toepassingen op computers die zijn verbonden met een Windows-domein of door Azure Active Directory (Azure AD). Deze toepassingen kunnen een token op de stilzwijgend verkrijgen met behulp van geïntegreerde Windows verificatie.

Toepassingen die worden uitgevoerd op een apparaat zonder browser kunnen nog steeds een API namens een gebruiker aanroepen. Voor verificatie moet de gebruiker zich aanmelden op een ander apparaat met een webbrowser. Voor dit scenario moet u de apparaatcodestroom gebruiken.

Device code flow

Hoewel het niet raadzaam is om deze te gebruiken, is de stroom voor gebruikersnaam en wachtwoord beschikbaar in openbare clienttoepassingen. Deze stroom is nog steeds nodig in sommige scenario's, zoals DevOps.

Als u de stroom voor gebruikersnaam en wachtwoord gebruikt, beperkt u uw toepassingen. Toepassingen kunnen bijvoorbeeld geen gebruiker aanmelden die meervoudige verificatie of het hulpprogramma voor voorwaardelijke toegang in Azure AD moet gebruiken. Uw toepassingen profiteren ook niet van een enkele aanmelding. Verificatie met de stroom gebruikersnaam/wachtwoord gaat in strijd met de principes van moderne verificatie en wordt alleen om verouderde redenen verstrekt.

Als u wilt dat de tokencache in desktop-apps blijft bestaan, kunt u de serialisatie van de tokencache aanpassen. Door dual-tokencacheseralisatie teimplementeren, kunt u achterwaarts compatibele en voorwaarts compatibele tokencaches gebruiken. Deze tokens ondersteunen eerdere generaties van verificatiebibliotheken. Specifieke bibliotheken zijn Azure AD Authentication Library voor .NET (ADAL.NET) versie 3 en versie 4.

Zie Desktop-app die web-API's aanroept voor meer informatie.

Mobiele app die een web-API aanroept namens een interactieve gebruiker

Net als bij een desktop-app roept een mobiele app de interactieve methoden voor het verkrijgen van tokens van MSAL aan om een token te verkrijgen voor het aanroepen van een web-API.

A mobile app calling a web API

MSAL iOS en MSAL Android gebruiken standaard de systeemwebbrowser. U kunt ze echter in plaats daarvan de ingesloten webweergave laten gebruiken. Er zijn specifieke functies die afhankelijk zijn van het mobiele platform: Universal Windows Platform (UWP), iOS of Android.

Voor sommige scenario's, zoals scenario's met voorwaardelijke toegang met betrekking tot een apparaat-id of apparaatinschrijving, moet er een broker op het apparaat worden geïnstalleerd. Voorbeelden van brokers zijn Microsoft Bedrijfsportal op Android en Microsoft Authenticator op Android en iOS. MSAL kan nu communiceren met brokers. Zie Brokers gebruiken op Android en iOSvoor meer informatie over brokers.

Zie Mobiele app die web-API's aanroept voor meer informatie.

Notitie

Een mobiele app die gebruikmaakt van MSAL.iOS, MSAL. Op Android of MSAL.NET Xamarin kan app-beveiligingsbeleid worden toegepast. Het beleid kan bijvoorbeeld verhinderen dat een gebruiker beveiligde tekst kopieert. De mobiele app wordt beheerd door Intune en wordt door Intune herkend als een beheerde app. Zie overzicht van Microsoft Intune App SDK voor meer informatie.

De Intune App SDK staat los van MSAL-bibliotheken en communiceert zelf met Azure AD.

Beveiligde web-API

U kunt het eindpunt Microsoft identity platform webservices te beveiligen, zoals de RESTful-API van uw app. Een beveiligde web-API wordt aangeroepen via een toegangs token. Het token helpt de API-gegevens te beveiligen en binnenkomende aanvragen te verifiëren. De aanroeper van een web-API appendeert een toegangs token in de autorisatie-header van een HTTP-aanvraag.

Als u uw web-API wilt beveiligen ASP.NET of ASP.NET Core web-API, valideert u het toegangsken. Voor deze validatie gebruikt u de ASP.NET JWT-middleware. De validatie wordt uitgevoerd door de IdentityModel-extensies voor .NET-bibliotheek en niet door MSAL.NET.

Zie Beveiligde web-API voor meer informatie.

Web-API die een andere web-API aanroept namens een gebruiker

Uw beveiligde web-API kan alleen een andere web-API aanroepen namens een gebruiker als uw app een token voor de downstream web-API moet verkrijgen. Dergelijke aanroepen worden soms ook wel service-naar-service-aanroepen genoemd. Web-API's die andere web-API's aanroepen, moeten aangepaste cacheseralisatie bieden.

A web API calling another web API

Zie Web-API die web-API's aanroept voor meer informatie.

Daemon-app die een web-API aanroept in de naam van de daemon

Apps met langlopende processen of die werken zonder tussenkomst van de gebruiker, hebben ook een manier nodig om toegang te krijgen tot beveiligde web-API's. Een dergelijke app kan tokens verifiëren en downloaden met behulp van de identiteit van de app. De app toont zijn identiteit aan met behulp van een clientgeheim of -certificaat.

U kunt dergelijke daemon-apps schrijven die een token voor de aanroepbare app verkrijgen met behulp van de methoden voor het verkrijgen van clientreferenties in MSAL. Voor deze methoden is een clientgeheim vereist dat u toevoegt aan de app-registratie in Azure AD. De app deelt het geheim vervolgens met de zogenaamde daemon. Voorbeelden van dergelijke geheimen zijn toepassingswachtwoorden, certificaatverklaring en clientverklaring.

A daemon app called by other apps and APIs

Zie Daemon-toepassing die web-API's aanroept voor meer informatie.

Scenario's en ondersteunde verificatiestromen

U gebruikt verificatiestromen om de toepassingsscenario's te implementeren die tokens aanvragen. Er is geen een-op-een-toewijzing tussen toepassingsscenario's en verificatiestromen.

Scenario's waarbij tokens moeten worden verkrijgen, worden ook aan OAuth 2.0-verificatiestromen toe te staan. Zie OAuth 2.0 and OpenID Verbinding maken protocols on the Microsoft identity platform voor meer informatie.

Scenario Gedetailleerd scenario OAuth 2.0-stroom en -toekenning Doelgroep
Single-Page App with Auth code App met één pagina Autorisatiecode met PKCE Werk- of schoolaccounts, persoonlijke accounts en Azure Active Directory B2C (Azure AD B2C)
Single-Page App with Implicit App met één pagina Impliciet Werk- of schoolaccounts, persoonlijke accounts en Azure Active Directory B2C (Azure AD B2C)
Web app that signs in users Web-app waarmee gebruikers worden aangemeld Autorisatiecode Werk- of schoolaccounts, persoonlijke accounts en Azure AD B2C
Web app that calls web APIs Web-app die web-API's aanroept Autorisatiecode Werk- of schoolaccounts, persoonlijke accounts en Azure AD B2C
Desktop app that calls web APIs Desktop-app die web-API's aanroept Interactief met behulp van autorisatiecode met PKCE Werk- of schoolaccounts, persoonlijke accounts en Azure AD B2C
Geïntegreerde Windows verificatie Werk- of schoolaccounts
Wachtwoord van resource-eigenaar Werk- of schoolaccounts en Azure AD B2C
Browserless application Apparaatcode Werk- of schoolaccounts, persoonlijke accounts, maar niet Azure AD B2C
Mobile app that calls web APIs Mobiele app die web-API's aanroept Interactief met behulp van autorisatiecode met PKCE Werk- of schoolaccounts, persoonlijke accounts en Azure AD B2C
Wachtwoord van resource-eigenaar Werk- of schoolaccounts en Azure AD B2C
Daemon app that calls web APIs Daemon-app die web-API's aanroept Clientreferenties Alleen-app-machtigingen die geen gebruiker hebben en alleen worden gebruikt in Azure AD-organisaties
Web API that calls web APIs Web-API die web-API's aanroept Namens Werk- of schoolaccounts en persoonlijke accounts

Scenario's en ondersteunde platforms en talen

Microsoft Authentication Libraries ondersteunen meerdere platforms:

  • .NET Core
  • .NET Framework
  • Java
  • Javascript
  • macOS
  • Native Android
  • Native iOS
  • Node.js
  • Python
  • Windows 10/UWP
  • Xamarin.iOS
  • Xamarin.Android

U kunt ook verschillende talen gebruiken om uw toepassingen te bouwen.

Notitie

Sommige toepassingstypen zijn niet op elk platform beschikbaar.

In de Windows kolom van de volgende tabel is elke keer dat .NET Core wordt vermeld, .NET Framework mogelijk. Het laatste wordt weggelaten om te voorkomen dat de tabel rommelig wordt.

Scenario Windows Linux Mac iOS Android
App met één pagina
Single-Page App Auth
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
App met één pagina
Single-Page App Implicit
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js
MSAL.js MSAL.js MSAL.js
MSAL.js
Web-app waarmee gebruikers worden aangemeld
Web app that signs-in users
ASP.NET Core
ASP.NET Core MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core MSAL Node
MSAL Node
Web-app die web-API's aanroept

Web app that calls web APIs
ASP.NET Core
ASP.NET Core + MSAL.NETMSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core + MSAL.NETMSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL Node
MSAL Node
ASP.NET Core
ASP.NET Core + MSAL.NETMSAL Java
MSAL Java
MSAL Python
Flask + MSAL Python MSAL Node
MSAL Node
Desktop-app die web-API's aanroept

Desktop app that calls web APIsDevice code flow
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python
MSAL Node
MSAL Node
iOS / Objective C or swift MSAL.objc
Mobiele app die web-API's aanroept
Mobile app that calls web APIs
UWP MSAL.NET Xamarin MSAL.NET iOS / Objective C or swift MSAL.objc Android MSAL. Android
Daemon-apps
Daemon app
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET Core MSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET CoreMSAL.NET MSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
Web-API die web-API's aanroept

Web API that calls web APIs
ASP.NET Core
ASP.NET Core + MSAL.NETMSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET Core
ASP.NET Core + MSAL.NETMSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node
.NET Core
ASP.NET Core + MSAL.NETMSAL Java
MSAL Java
MSAL Python
MSAL Python MSAL Node
MSAL Node

Zie verificatiebibliotheken Microsoft identity platform meer informatie.

Volgende stappen