探索 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 和客户端机密)。