Skip to content

MSAL.NET supports multiple application architectures and multiple platforms

Jean-Marc Prieur edited this page Apr 30, 2018 · 18 revisions

Why use MSAL.NET ?

MSAL.NET (Microsoft Authentication Library for .NET) enables developers of .NET applications to acquire tokens in order to call secured Web APIs. These Web APIs can be the Microsoft Graph, or 3rd party Web APIs.

MSAL.NET Supports multiple application architectures

MSAL.NET supports all the possible application topologies including:

  • native client (mobile/desktop applications) calling the Microsoft Graph in the name of the user,
  • daemons/services or web clients (Web Apps/ Web APIs) calling the Microsoft Graph in the name of a user, or without a user.

With the exception of:

  • User-agent based client which is only supported in JavaScript
  • and getting a token for a Web API which is not the Microsoft Graph.

Note that calling your own Web API is a work in progress

MSAL.NET Supports multiple platforms

ADAL.NET supports several platforms:

Important

Not all the authentication features are available in all platforms, mostly because:

  • they would not make sense in those platforms (for instance iOS and Android applications don't support confidential client flows as these platforms cannot guarantee that application secrets would be safe),
  • or because of limitations of the platform itself (for instance .NET Core does not provide UI, and therefore acquisition of tokens requiring user interaction through a Web browser is not possible in .NET Core).

Most of the pages in the wiki describe the most complete platform (.NET Framework), but, topic by topic, it occasionally calls out differences between platforms.

MSAL.NET is about acquiring tokens, not protecting an API

MSAL.NET is used to acquire tokens. It's not used to protect a Web API. If you are interested in protecting a Web API with Azure AD, you might want to check out:

Getting started with MSAL.NET

Acquiring tokens

Web Apps / Web APIs / daemon apps

Desktop/Mobile apps

Advanced topics

FAQ

Other resources

Clone this wiki locally