Microsoft 标识平台代码示例

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

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

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

示例和指南

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

单页应用程序

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

Web 应用程序

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

语言/
平台
代码示例
(在 GitHub 上)
Auth
身份验证流
ASP.NET Core ASP.NET Core 系列
将用户登录
将用户登录 (B2C)
调用 Microsoft Graph
自定义令牌缓存
调用 Graph(多租户)
调用 Azure REST API
保护 Web API
保护 Web API (B2C)
保护多租户 Web API
使用应用角色进行访问控制
使用安全组进行访问控制
部署到 Azure 存储和应用服务
Microsoft.Identity.Web • OpenID Connect
• 授权代码
• 代表
Blazor Blazor Server 系列
将用户登录
将用户登录 (B2C)
调用 Microsoft Graph
调用 Web API
调用 Web API (B2C)
MSAL.NET 混合流
ASP.NET Core 高级令牌缓存场景 Microsoft.Identity.Web On-Behalf-Of (OBO)
ASP.NET Core 使用条件访问身份验证上下文执行升级身份验证 Microsoft.Identity.Web 授权代码
ASP.NET Core 将 Active Directory 联合身份验证服务迁移到 Microsoft Entra MSAL.NET • SAML
• OpenID Connect
ASP.NET Microsoft Graph 训练示例
将用户登录并调用 Microsoft Graph
将用户登录并以管理员限制的范围调用 Microsoft Graph
快速入门:将用户登录
MSAL.NET • OpenID Connect
• 授权代码
Java

Spring
Microsoft Entra Spring Boot 初学者系列
将用户登录
将用户登录 (B2C)
调用 Microsoft Graph
使用应用角色进行访问控制
使用组进行访问控制
部署到 Azure 应用服务
保护 Web API
MSAL Java
• Microsoft Entra ID Boot Starter
授权代码
Java

Servlet
无 Spring Servlet 系列
将用户登录
将用户登录 (B2C)
调用 Microsoft Graph
使用应用角色进行访问控制
使用安全组进行访问控制
部署到 Azure 应用服务
MSAL Java 授权代码
Node.js

Express
Express Web 应用系列
快速入门:使用户登录
将用户登录
将用户登录 (B2C)
调用 Microsoft Graph
通过 BFF 代理调用 Microsoft Graph
部署到 Azure 应用服务
使用应用角色进行访问控制
使用安全组进行访问控制
MSAL Node • 授权代码
• 用于前端的后端 (BFF) 代理
Python

Flask
Flask 系列
将用户登录
将用户登录 (B2C)
用于登录 Microsoft Entra ID 或 B2C 用户,并选择性地调用下游 API 的模板 (Microsoft Graph)
调用 Microsoft Graph
部署到 Azure 应用服务
MSAL Python 授权代码
Python

Django
Django 系列
将用户登录
将用户登录 (B2C)
调用 Microsoft Graph
部署到 Azure 应用服务
MSAL Python 授权代码
Ruby Graph 训练
将用户登录并调用 Microsoft Graph
OmniAuth OAuth2 授权代码

Web API

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

语言/
平台
代码示例
(在 GitHub 上)
Auth
身份验证流
ASP.NET 调用 Microsoft Graph MSAL.NET On-Behalf-Of (OBO)
ASP.NET Core 使用户登录并调用 Microsoft Graph MSAL.NET On-Behalf-Of (OBO)
Java 用户登录 MSAL Java On-Behalf-Of (OBO)
Node.js 保护 Node.js Web API
使用 Azure AD B2C 保护 Node.js Web API
MSAL Node 授权持有者

桌面

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

语言/
平台
代码示例
(在 GitHub 上)
Auth
身份验证流
.NET Core 调用 Microsoft Graph
使用令牌缓存调用 Microsoft Graph
使用自定义 Web UI HTML 调用 Microsoft Graph
使用自定义 Web 浏览器调用 Microsoft Graph
使用设备代码流将用户登录
在 WinUI 桌面应用程序中使用 MSAL.NET 对用户进行身份验证
MSAL.NET • 采用 PKCE 的授权代码
• 设备代码
.NET 通过集成 Windows 身份验证调用受保护的 API MSAL.NET Windows 集成身份验证
Java 调用 Microsoft Graph MSAL Java Windows 集成身份验证
Node.js 用户登录 MSAL Node 采用 PKCE 的授权代码
.NET Core 通过使用用户名/密码登录用户来调用 Microsoft Graph MSAL.NET 资源所有者密码凭据
Python 用户登录 MSAL Python 资源所有者密码凭据
通用 Window 平台 (UWP) 调用 Microsoft Graph MSAL.NET Web 帐户管理器
Windows Presentation Foundation (WPF) 使用户登录并调用 Microsoft Graph MSAL.NET 采用 PKCE 的授权代码
Windows Presentation Foundation (WPF) 使用户登录并调用 ASP.NET Core Web API
将用户登录并调用 Microsoft Graph
MSAL.NET 采用 PKCE 的授权代码

移动型

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

语言/
平台
代码示例
(在 GitHub 上)
Auth
身份验证流
.NET Core 使用 MAUI 调用 Microsoft Graph
通过中转站使用 MAUI 调用 Microsoft Graph
使用 MAUI 调用 Active Directory B2C 租户
MSAL.NET 采用 PKCE 的授权代码
iOS 调用本机 Microsoft Graph MSAL iOS 采用 PKCE 的授权代码
Java 使用户登录并调用 Microsoft Graph MSAL Android 采用 PKCE 的授权代码
Kotlin 使用户登录并调用 Microsoft Graph MSAL Android 采用 PKCE 的授权代码
Xamarin 将用户登录并调用 Microsoft Graph
使用代理将用户登录并调用 Microsoft Graph
MSAL.NET 采用 PKCE 的授权代码

服务/守护程序

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

语言/
平台
代码示例
(在 GitHub 上)
Auth
身份验证流
.NET Core 调用 Microsoft Graph
调用 Web API
使用托管标识和 Azure 密钥保管库
MSAL.NET 客户端凭据授予
ASP.NET 使用 Microsoft 标识平台终结点的多租户守护程序 MSAL.NET 客户端凭据授予
Java 使用机密调用 Microsoft Graph
使用证书调用 Microsoft Graph
MSAL Java 客户端凭据授予
Node.js 使用机密调用 Microsoft Graph MSAL Node 客户端凭据授予
Python 使用机密调用 Microsoft Graph
使用证书调用 Microsoft Graph
MSAL Python 客户端凭据授予

Azure Functions 作为 Web API

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

语言/
平台
代码示例
(在 GitHub 上)
Auth
身份验证流
.NET 受 Microsoft Entra ID 保护的 .NET Azure 函数 Web API MSAL.NET 授权代码
Python 受 Microsoft Entra ID 保护的 Python Azure 函数 Web API MSAL Python 授权代码

无浏览器(无外设)

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

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

Microsoft Teams 应用程序

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

语言/
平台
代码示例
(在 GitHub 上)
Auth
身份验证流
Node.js Teams Tab 应用:单一登录 (SSO) 并调用 Microsoft Graph MSAL Node On-Behalf-Of (OBO)

多租户 SaaS

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

语言/
平台
代码示例
(在 GitHub 上)
Auth
身份验证流
ASP.NET Core ASP.NET Core MVC Web 应用程序调用 Microsoft Graph API MSAL.NET OpenID 连接
ASP.NET Core ASP.NET Core MVC Web 应用程序调用 ASP.NET Core Web API MSAL.NET 授权代码
Angular Angular 单页应用程序调用 ASP.NET Core Web API MSAL Angular 授权代码

后续步骤

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