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 | 快速入门 | GA | ||
Angular | MSAL Angular3 | msal-angular | — | GA | ||
AngularJS | MSAL AngularJS3 | msal-angularjs | — | 公共预览版 | ||
JavaScript | MSAL.js v22 | msal-browser | 教程 | GA | ||
JavaScript | MSAL.js 1.03 | msal-core | — | GA | ||
React | MSAL React2 | msal-react | 快速入门 | 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 | — | GA | ||
.NET | Microsoft.IdentityModel | Microsoft.IdentityModel | — | 2 | 2 | GA |
ASP.NET Core | ASP.NET Core | Microsoft.AspNetCore.Authentication | 快速入门 | GA | ||
ASP.NET Core | Microsoft.Identity.Web | Microsoft.Identity.Web | 快速入门 | GA | ||
Java | MSAL4J | msal4j | 快速入门 | GA | ||
Spring | spring-cloud-azure-starter-active-directory | spring-cloud-azure-starter-active-directory | 教程 | GA | ||
Node.js | MSAL Node | msal-node | 快速入门 | GA | ||
Python | MSAL Python | msal | GA | |||
Python | identity | identity | 快速入门 | -- |
(1) 联机服务通用许可条款适用于公共预览版的库。
(2)Microsoft.IdentityModel 库仅能验证令牌,而无法请求 ID 或访问令牌。
桌面应用程序
桌面应用程序通常是二进制(编译的)代码,它显示用户界面,并设计为在用户的桌面上运行。
由于桌面应用程序在用户的桌面上运行,因此它被视为无法安全存储机密的公共客户端。
语言/框架 | 项目 GitHub |
包 | 获取 started |
用户登录 | 访问 Web API | 正式发布 (GA) 或 公共预览版1 |
---|---|---|---|---|---|---|
Electron | MSAL Node.js | msal-node | — | 公共预览版 | ||
Java | MSAL4J | msal4j | — | GA | ||
macOS (Swift/Obj-C) | 适用于 iOS 和 macOS 的 MSAL | MSAL | 教程 | GA | ||
UWP | MSAL.NET | Microsoft.Identity.Client | 教程 | GA | ||
WPF | MSAL.NET | Microsoft.Identity.Client | 教程 | GA |
1 联机服务通用许可条款适用于公共预览版中的库。
移动应用程序
移动应用程序通常是二进制(编译的)代码,它显示用户界面,并设计为在用户的移动设备上运行。
由于移动应用程序在用户的移动设备上运行,因此它被视为无法安全存储机密的公共客户端。
平台 | 项目 GitHub |
包 | 获取 started |
用户登录 | 访问 Web API | 正式发布 (GA) 或 公共预览版1 |
---|---|---|---|---|---|---|
Android (Java) | MSAL Android | MSAL | 快速入门 | GA | ||
Android (Kotlin) | MSAL Android | MSAL | — | GA | ||
iOS (Swift/Obj-C) | 适用于 iOS 和 macOS 的 MSAL | MSAL | 教程 | GA | ||
Xamarin (.NET) | MSAL.NET | Microsoft.Identity.Client | — | GA |
1 联机服务通用许可条款适用于公共预览版中的库。
服务/守护程序
服务和守护程序通常用于服务器到服务器通信以及其他无人参与(有时称为无外设)的通信。 因为没有用户在键盘上输入凭据或同意访问资源,所以在请求对 Web API 资源的授权访问时,这些应用程序将以自身而非用户身份进行身份验证。
在服务器上运行的服务或守护程序被视为可以安全存储其机密的机密客户端。
语言/框架 | 项目 GitHub |
包 | 获取 started |
用户登录 | 访问 Web API | 正式发布 (GA) 或 公共预览版1 |
---|---|---|---|---|---|---|
.NET | MSAL.NET | Microsoft.Identity.Client | 快速入门 | GA | ||
Java | MSAL4J | msal4j | — | GA | ||
节点 | MSAL Node | msal-node | 快速入门 | GA | ||
Python | MSAL Python | msal-python | 快速入门 | GA |
1 联机服务通用许可条款适用于公共预览版中的库。
后续步骤
有关 Microsoft 身份验证库的详细信息,请参阅 Microsoft 身份验证库 (MSAL) 概述。