探索 Microsoft 身份验证库

已完成

Microsoft 身份验证库 (MSAL) 可用于提供对 Microsoft Graph、其他 Microsoft API 或你自己的 Web API 的安全访问。 MSAL 支持许多不同的应用程序体系结构和平台,包括 .NET、JavaScript、Java、Python、Android 和 iOS。

MSAL 为你提供了许多获取令牌的方法,将一致的 API 用于许多平台。 使用 MSAL 具有以下好处:

  • 无需直接在应用程序中对协议使用 OAuth 库或代码。
  • 代表用户或代表应用程序获取令牌(如果适用于平台)。
  • 维护令牌缓存,并在即将过期时为你刷新令牌。 你不需要自行处理令牌过期。
  • 可帮助你指定你希望应用程序登录的受众。
  • 可帮助你通过配置文件设置应用程序。
  • 可显示可操作异常、日志和遥测,从而帮助你对应用进行故障排除。

应用程序类型和方案

在 MSAL 中,可从许多应用程序类型获取令牌:Web 应用程序、Web API、单页应用 (JavaScript)、移动和本机应用程序以及守护程序和服务器端应用程序。 MSAL 目前支持下表中列出的平台和框架。

支持的平台和框架
适用于 Android 的 MSAL Android
MSAL Angular 采用 Angular 和 Angular.js 框架的单页应用
适用于 iOS 和 macOS 的 MSAL iOS 和 macOS
MSAL Go(预览版) Windows、macOS、Linux
MSAL Java Windows、macOS、Linux
MSAL.js JavaScript/TypeScript 框架,例如 Vue.js、Ember.js 或 Durandal.js
MSAL.NET .NET Framework、.NET Core、Xamarin Android、Xamarin iOS、通用 Windows 平台
MSAL Node Express 的 Web 应用、Electron 的桌面应用、跨平台控制台应用
MSAL Python Windows、macOS、Linux
MSAL React 采用 React 和基于 React 的库(Next.js、Gatsby.js)的单页应用

身份验证流

下表显示了 Microsoft 身份验证库 (MSAL) 提供的一些不同的身份验证流。 这些流可用于各种应用程序方案。

流向 说明
授权代码 本机和 Web 应用以用户的名义安全地获取令牌
客户端凭据 服务应用程序无需用户交互即可运行
代理 应用程序调用服务/Web API,服务/Web API 又调用 Microsoft Graph
隐式 用于基于浏览器的应用程序
设备代码 允许使用具有浏览器的另一台设备登录到设备
集成的 Windows Windows 计算机在加入域时以无提示方式获取访问令牌
交互 移动和桌面应用程序以用户的名义调用 Microsoft Graph
用户名/密码 应用程序使用用户的用户名和密码登录用户帐户

公共客户端和机密客户端应用程序

多种类型的应用程序可以获取安全令牌。 这些应用程序往往分为下面两个类别。 每种应用程序配合不同的库和对象使用。

  • 公共客户端应用程序:在设备或台式计算机或 Web 浏览器中运行的应用。 我们并不确信这些应用程序能够安全保守应用程序的机密,因此,它们只是代表用户访问 Web API。 (它们仅支持公共客户端流。)公共客户端无法保存配置时机密,因此它们没有客户端机密。

  • 机密客户端应用程序:在服务器上运行的应用(Web 应用、Web API 应用,甚至是服务/守护程序应用)。 它们被认为很难访问,因此能够保守应用程序的机密。 机密客户端可以保存配置时机密。 客户端的每个实例采用不同的配置(包括客户端 ID 和客户端机密)。