用于身份验证和授权的Microsoft标识平台代码示例

这些代码示例由 Microsoft 生成和维护,用于演示我们的身份验证库与 Microsoft 标识平台的使用。 常用的身份验证和授权方案在多种应用程序类型、开发语言和框架中实现。

  • 让用户登录到 Web 应用程序,并提供对受保护的 Web API 的授权访问。
  • 通过要求提供用于执行 API 操作的访问令牌来保护 Web API。

每个代码示例都包含 README.md 文件,该文件描述如何生成项目(如果适用)和如何运行示例应用程序。 代码中的注释有助于了解如何在应用程序中使用这些库,通过标识平台执行身份验证和授权。

示例和指南

使用选项卡按应用程序类型或首选语言/框架对示例进行排序。

  • 按应用类型
  • 按语言/框架

单页应用程序

这些示例展示了如何编写受 Microsoft 标识平台保护的单页应用程序。 这些示例使用下列种类的 MSAL.js 之一。

语言/
平台
代码示例
(在 GitHub 上)
Auth
库
身份验证流 快速入门 教程
React • 将用户登录 MSAL React 采用 PKCE 的授权代码 快速入门 教程
Angular • 将用户登录 MSAL Angular 采用 PKCE 的授权代码 快速入门 教程
JavaScript • 将用户登录
• 调用 Microsoft Graph
• 调用 Node.js Web API
• 部署到 Azure 存储和应用服务
MSAL.js 采用 PKCE 的授权代码 快速入门
Blazor WebAssembly • 将用户登录
• 调用 Microsoft Graph
• 部署到 Azure 应用服务
MSAL.js 采用 PKCE 的授权代码 快速入门

Web 应用程序

以下示例演示了将用户登录的 Web 应用。 一些示例还演示了使用用户标识调用 Microsoft Graph 或你自己的 Web API 的应用程序。

语言/平台 GitHub 上的代码示例 身份验证库 身份验证流 快速入门 教程
ASP.NET • Microsoft Graph 训练示例
• 将用户登录并以管理员限制的范围调用 Microsoft Graph
• MSAL.NET
• Microsoft。Identity.Web
• 高级令牌缓存场景
• OpenID Connect
• 授权代码
• 代表 (OBO)
快速入门
ASP.NET Core • 将用户登录
• 调用 Microsoft Graph
• 自定义令牌缓存
• 使用条件访问身份验证上下文执行升级身份验证
• 调用图(多租户)
• 调用 Azure REST API
• 保护 Web API
• 保护多租户 Web API
• 使用应用角色进行访问控制
• 使用安全组进行访问控制
• 部署到 Azure 存储和应用服务
• Active Directory 联合身份验证服务迁移到 Microsoft Entra
Microsoft.Identity.Web • OpenID Connect
• 授权代码
• 代理流 (OBO)
快速入门 教程
Blazor • 将用户登录
• 调用 Microsoft Graph
• 调用 Web API
MSAL.NET 混合流
Java Spring(Spring框架) • 将用户登录
• 调用 Microsoft Graph
• 使用应用角色进行访问控制
• 使用组进行访问控制
• 保护 Web API
• 部署到 Azure 应用服务
MSAL Java 授权代码 教程
Java Servlet • 将用户登录
• 调用 Microsoft Graph
• 使用应用角色进行访问控制
• 使用安全组进行访问控制
• 部署到 Azure 应用服务
MSAL Java 授权代码 快速入门
Node.js Express • 将用户登录
• 使用 MSAL Node 和 Microsoft 标识平台构建的 Express Web 应用程序
• 调用 Microsoft Graph
• 使用应用角色进行访问控制
• 使用安全组进行访问控制
• 部署到 Azure 应用服务
MSAL 节点 • 授权代码
• 用于前端的后端 (BFF) 代理
快速入门 教程
Python Flask • 将用户登录
• 以 Microsoft Entra ID 身份登录,并根据需要调用下游 API (Microsoft Graph) 的模板
MSAL Python 授权代码 快速入门 教程
Python Django • 将用户登录 MSAL Python 授权代码
Ruby • 将用户登录并调用 Microsoft Graph OmniAuth OAuth2 授权代码

网络应用程序接口

以下示例展示了如何使用 Microsoft 标识平台保护 Web API,以及如何从 Web API 调用下游 API。

语言/
平台
代码示例
(在 GitHub 上)
Auth
库
身份验证流 快速入门 教程
ASP.NET • 调用 Microsoft Graph MSAL.NET 代理 (OBO) 快速入门
ASP.NET Core • 使用 Microsoft 标识平台进行访问控制(受保护的路由) MSAL.NET 代理 (OBO) 快速入门 教程
Java • 使用 Microsoft 标识平台保护 Java Spring Boot Web API MSAL Java 代理 (OBO)
Node.js • 保护 Node.js Web API MSAL 节点 授权持有者

桌面

以下示例展示了以用户身份访问 Microsoft 图形 API 或你自己的 Web API 的公共客户端桌面应用程序。 除了“使用 Web 身份验证管理器 (WAM) 的桌面(控制台)”示例,所有这些客户端应用程序均使用 Microsoft 身份验证库 (MSAL)。

语言/
平台
代码示例
(在 GitHub 上)
Auth
库
身份验证流 快速入门 教程
.NET 核心 • 调用 Microsoft Graph
• 使用令牌缓存调用 Microsoft Graph
• 使用自定义 Web UI HTML 调用 Microsoft Graph
• 使用自定义 Web 浏览器调用 Microsoft Graph
• 使用设备代码流将用户登录
• 通过使用用户名/密码登录用户来调用 Microsoft Graph
MSAL.NET • 采用 PKCE 的授权代码
• 设备代码
• 资源所有者密码凭据
Java • 调用 Microsoft Graph MSAL Java Windows 集成身份验证
Node.js • 将用户登录 MSAL 节点 采用 PKCE 的授权代码 快速入门 教程
Python • 将用户登录 MSAL Python 资源所有者密码凭据
Windows Presentation Foundation (WPF) • 将用户登录并调用 Microsoft Graph
• Windows Presentation Foundation (WPF) 用户登录、受保护的 Web API 访问 (Microsoft Graph)
• 使用户登录并调用 ASP.NET Core Web API
• 将用户登录并调用 Microsoft Graph
MSAL.NET 采用 PKCE 的授权代码 快速入门 教程

移动型

以下示例显示了访问 Microsoft 图形 API 的公共客户端移动应用程序。 这些客户端应用程序均使用 Microsoft 身份验证库 (MSAL)。

语言/
平台
代码示例
(在 GitHub 上)
Auth
库
身份验证流 快速入门 教程
.NET 核心 • 使用 MAUI 调用 Microsoft Graph
•通过中转站使用 MAUI 调用 Microsoft Graph
MSAL.NET 采用 PKCE 的授权代码
iOS • 调用本机 Microsoft Graph MSAL iOS 采用 PKCE 的授权代码 快速入门 教程
Java • 将用户登录并调用 Microsoft Graph MSAL Android 采用 PKCE 的授权代码 快速入门 教程
Kotlin • 将用户登录并调用 Microsoft Graph MSAL Android 采用 PKCE 的授权代码

服务/守护程序

下面的示例展示了一个应用程序,它使用自己的标识(没有用户)访问 Microsoft 图形 API。

语言/
平台
代码示例
(在 GitHub 上)
Auth
库
身份验证流 快速入门 教程
.NET • 访问受保护 Web API 的 .NET 控制台应用
使用 Microsoft 标识平台终结点的多租户
MSAL.NET 客户端凭据授予 快速入门 教程
.NET 核心 • 调用 Microsoft Graph
• 调用 Web API
• 使用托管标识调用 MSGraph
• 使用托管标识调用 API
• 调用 API 的辅助角色
Microsoft.Identity.Web 客户端凭据授予
Java • 使用机密调用 Microsoft Graph
• 使用证书调用 Microsoft Graph
MSAL Java 客户端凭据授予 快速入门
Node.js • 使用机密调用 Microsoft Graph MSAL 节点 客户端凭据授予 快速入门 教程
Python • 使用机密调用 Microsoft Graph
• 使用证书调用 Microsoft Graph
MSAL Python 客户端凭据授予 快速入门

无浏览器(无外设)

以下示例展示了在没有 Web 浏览器的设备上运行的公共客户端应用程序。 该应用可以是命令行工具,可以是在 Linux 或 Mac 上运行的应用,还可以是 IoT 应用程序。 该示例以另一台设备(例如手机)交互方式登录的用户的名义,使用访问 Microsoft 图形 API 的应用。 此客户端应用程序使用 Microsoft 身份验证库 (MSAL)。

语言/
平台
代码示例
(在 GitHub 上)
Auth
库
身份验证流 快速入门 教程
.NET 核心 • 从纯文本设备调用受保护的 API MSAL.NET 设备代码
Java • 使登录用户并从纯文本设备调用受保护的 API MSAL Java 设备代码
Python • 调用 Microsoft Graph MSAL Python 设备代码

Azure Functions 作为 Web API

以下示例演示如何使用 HttpTrigger 保护 Azure Function 并通过 Microsoft 标识平台公开 Web API,以及如何从 Web API 调用下游 API。

语言/
平台
代码示例
(在 GitHub 上)
Auth
库
身份验证流 快速入门 教程
Python • 受 Microsoft Entra ID 保护的 Python Azure 函数 Web API MSAL Python 授权代码

Microsoft Teams 应用程序

下面的示例演示了使用户登录的 Microsoft Teams Tab 应用程序。 此外,它还演示了如何使用 Microsoft 身份验证库 (MSAL),利用用户的标识调用 Microsoft 图形 API。

语言/
平台
代码示例
(在 GitHub 上)
Auth
库
身份验证流 快速入门 教程
Node.js • Teams Tab 应用:单一登录 (SSO) 并调用 Microsoft Graph MSAL 节点 代理 (OBO)

多租户 SaaS

以下示例演示了如何配置应用程序,使其接受来自 Microsoft Entra 租户的登录。 将应用程序配置为多租户是指,你可向多个组织提供软件即服务 (SaaS) 应用程序,使它们的用户能够在同意后登录到你的应用程序。

语言/
平台
代码示例
(在 GitHub 上)
Auth
库
身份验证流 快速入门 教程
ASP.NET Core • ASP.NET Core MVC Web 应用程序调用 Microsoft 图形 API
• ASP.NET Core MVC Web 应用程序调用 ASP.NET Core Web API
MSAL.NET • OpenID Connect
• 授权代码

若要深入了解更多示例代码,请参阅: