Microsoft 标识平台身份验证库

下表显示了针对多种应用程序类型的 Microsoft 身份验证库支持。 它们包括指向库源代码的链接,获取应用项目包的位置以及库是否支持用户登录(身份验证),访问受保护的 Web API(授权)或两者兼而有之。

Microsoft 标识平台已由 OpenID Foundation 认证为经认证的 OpenID 提供程序。 如果你希望使用 Microsoft 身份验证库 (MSAL) 以外的其他库或 Microsoft 支持的其他库,请选择具有经认证的 OpenID Connect 实现的库。

如果你选择手动编码自己的 OAuth 2.0 或 OpenID Connect 1.0 的协议级实现,请密切注意每个标准规范中的安全性注意事项,并遵循安全软件设计和开发做法,例如 Microsoft SDL 中所述的那些做法。

单页面应用程序 (SPA)

单页应用程序完全在浏览器中运行,并动态提取或在应用程序加载时提取页面数据(HTML、CSS 和 JavaScript)。 它可以调用 Web API 与后端数据源进行交互。

因为 SPA 的代码完全在浏览器中运行,所以它被视为公共客户端,无法安全存储机密。

语言/框架 项目
GitHub
获取
started
用户登录 访问 Web API 正式发布 (GA) 或
公共预览版1
Angular MSAL Angular v22 msal-angular 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
Angular MSAL Angular3 msal-angular 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
AngularJS MSAL AngularJS3 msal-angularjs 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 公共预览版
JavaScript MSAL.js v22 msal-browser 教程 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
JavaScript MSAL.js 1.03 msal-core 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
React MSAL React2 msal-react 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA

1 联机服务通用许可条款适用于公共预览版中的库

2 仅使用 PKCE 的身份验证代码流(建议)。

3隐式授权流(不建议)。

Web 应用程序

Web 应用程序在服务器上运行代码,该服务器生成 HTML、CSS 和 JavaScript 并将其发送到用户的 Web 浏览器以进行呈现。 系统将用户标识作为用户浏览器(前端)和 Web 服务器(后端)之间的会话来进行维护。

由于 Web 应用程序的代码在 Web 服务器上运行,因此它被视为可以安全存储机密的机密客户端。

语言/框架 项目
GitHub
获取
started
用户登录 访问 Web API 正式发布 (GA) 或
公共预览版1
.NET MSAL.NET Microsoft.Identity.Client 库无法为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
.NET Microsoft.IdentityModel Microsoft.IdentityModel Library cannot request ID tokens for user sign-in.2 Library cannot request access tokens for protected web APIs.2 GA
ASP.NET Core Microsoft.Identity.Web Microsoft.Identity.Web 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
Java MSAL4J msal4j 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
Spring spring-cloud-azure-starter-active-directory spring-cloud-azure-starter-active-directory 教程 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
Node.js MSAL Node msal-node 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
Python MSAL Python msal 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
Python identity identity 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 --

(1) 联机服务通用许可条款适用于公共预览版的库

(2)Microsoft.IdentityModel 库仅能验证令牌,而无法请求 ID 或访问令牌。

桌面应用程序

桌面应用程序通常是二进制(编译的)代码,它显示用户界面,并设计为在用户的桌面上运行。

由于桌面应用程序在用户的桌面上运行,因此它被视为无法安全存储机密的公共客户端。

语言/框架 项目
GitHub
获取
started
用户登录 访问 Web API 正式发布 (GA) 或
公共预览版1
Electron MSAL Node.js msal-node 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 公共预览版
Java MSAL4J msal4j 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
macOS (Swift/Obj-C) 适用于 iOS 和 macOS 的 MSAL MSAL 教程 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
UWP MSAL.NET Microsoft.Identity.Client 教程 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
WPF MSAL.NET Microsoft.Identity.Client 教程 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA

1 联机服务通用许可条款适用于公共预览版中的库

移动应用程序

移动应用程序通常是二进制(编译的)代码,它显示用户界面,并设计为在用户的移动设备上运行。

由于移动应用程序在用户的移动设备上运行,因此它被视为无法安全存储机密的公共客户端。

平台 项目
GitHub
获取
started
用户登录 访问 Web API 正式发布 (GA) 或
公共预览版1
Android (Java) MSAL Android MSAL 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
Android (Kotlin) MSAL Android MSAL 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
iOS (Swift/Obj-C) 适用于 iOS 和 macOS 的 MSAL MSAL 教程 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
Xamarin (.NET) MSAL.NET Microsoft.Identity.Client 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA

1 联机服务通用许可条款适用于公共预览版中的库

服务/守护程序

服务和守护程序通常用于服务器到服务器通信以及其他无人参与(有时称为无外设)的通信。 因为没有用户在键盘上输入凭据或同意访问资源,所以在请求对 Web API 资源的授权访问时,这些应用程序将以自身而非用户身份进行身份验证。

在服务器上运行的服务或守护程序被视为可以安全存储其机密的机密客户端。

语言/框架 项目
GitHub
获取
started
用户登录 访问 Web API 正式发布 (GA) 或
公共预览版1
.NET MSAL.NET Microsoft.Identity.Client 快速入门 库无法为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
Java MSAL4J msal4j 库无法为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
节点 MSAL Node msal-node 快速入门 库无法为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA
Python MSAL Python msal-python 快速入门 库无法为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 GA

1 联机服务通用许可条款适用于公共预览版中的库

后续步骤

有关 Microsoft 身份验证库的详细信息,请参阅 Microsoft 身份验证库 (MSAL) 概述