Microsoft 标识平台代码示例(v2.0 终结点)

你可以使用 Microsoft 标识平台执行以下操作:

  • 向 Web 应用程序和 Web API 添加身份验证和授权。
  • 要求使用访问令牌来访问受保护的 Web API。

本文简要介绍了 Microsoft 标识平台示例并提供了这些示例的链接。 这些示例将展示其工作原理,并提供可以在应用程序中使用的代码片段。 在代码示例页上,可以找到在要求、安装和设置方面提供帮助的详细自述主题。 代码中的注释可帮助你理解关键部分。

若要了解每种示例类型的基本方案,请参阅 Microsoft 标识平台的应用类型

你也可以为 GitHub 上的示例做出补充。 若要了解如何操作,请参阅 Azure Active Directory 示例和文档

单页应用程序

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

语言/
平台
代码示例 说明 身份验证库 身份验证流
Angular GitHub 存储库 • 通过 AAD 让用户登录
• 调用 Microsoft Graph
MSAL Angular 授权代码流(使用 PKCE)
Angular GitHub 存储库 让用户登录
让用户登录 (B2C)
调用 Microsoft Graph
调用 .NET Core Web API
调用 .NET Core Web API (B2C)
通过 OBO 调用 Microsoft Graph
使用 PoP 调用 .NET Core Web API
使用应用角色进行访问控制
使用安全组进行访问控制
部署到 Azure 存储和应用服务
MSAL Angular • 授权代码流(使用 PKCE)
• 代理 (OBO) 流
• 所有权证明 (PoP)
Blazor WebAssembly GitHub 存储库 • 让用户登录
• 调用 Microsoft Graph
MSAL.js 授权代码流(使用 PKCE)
JavaScript GitHub 存储库 • 让用户登录
• 调用 Microsoft Graph
MSAL.js 授权代码流(使用 PKCE)
JavaScript GitHub 存储库 • 让用户登录 (B2C)
• 调用 Node.js Web API
MSAL.js 授权代码流(使用 PKCE)
JavaScript GitHub 存储库 让用户登录
让用户登录 (B2C)
调用 Microsoft Graph
调用 Node.js Web API
调用 Node.js Web API (B2C)
通过 OBO 调用 Microsoft Graph
通过 OBO 和 CA 调用 Node.js Web API
部署到 Azure 存储和应用服务
MSAL.js • 授权代码流(使用 PKCE)
• 代理 (OBO) 流
• 条件访问 (CA)
React GitHub 存储库 • 让用户登录
• 调用 Microsoft Graph
MSAL React 授权代码流(使用 PKCE)
React GitHub 存储库 让用户登录
让用户登录 (B2C)
调用 Microsoft Graph
调用 Node.js Web API
调用 Node.js Web API (B2C)
通过 OBO 调用 Microsoft Graph
使用 PoP 调用 Node.js Web API
使用应用角色进行访问控制
使用安全组进行访问控制
部署到 Azure 存储和应用服务
部署到 Azure Static Web Apps
MSAL React • 授权代码流(使用 PKCE)
• 代理 (OBO) 流
• 条件访问 (CA)
• 所有权证明 (PoP)

Web 应用程序

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

平台 仅让用户登录 让用户登录并调用 Microsoft Graph
此图显示了 ASP.NET Core 徽标

ASP.NET Core
ASP.NET Core WebApp 让用户登录教程 ASP.NET Core Web 应用调用 Microsoft Graph 阶段中的同一示例

高级示例:从后台应用、API 和服务访问已登录用户的令牌缓存
此图显示了 ASP.NET Framework 徽标

ASP.NET Core
请参阅适用于开发人员的 AD FS 到 Azure AD 应用程序迁移手册了解如何将与 Active Directory 联合身份验证服务 (AD FS) 集成的应用程序安全可靠地迁移到 Azure Active Directory (Azure AD)
此图显示了 ASP.NET Framework 徽标

ASP.NET
ASP.NET 快速入门

dotnet-webapp-openidconnect-v2
dotnet-admin-restricted-scopes-v2

msgraph-training-aspnetmvcapp
此图显示了 Java 徽标 Java Servlet 教程 - 第 1.1 章使用 AAD 登录
此图显示了 Java 徽标 Java Servlet 教程 - 第 1.2 章使用 B2C 登录
此图显示了 Java 徽标 Java Servlet 教程 - 第 2.1 章使用 AAD 登录并调用 Graph
此图显示了 Java 徽标 Java Servlet 教程 - 第 3.1 章使用 AAD 登录并使用角色声明控制访问
此图显示了 Java 徽标 Java Servlet 教程 - 第 3.2 章使用 AAD 登录并使用组声明控制访问
此图显示了 Java 徽标 Java Servlet 教程 - 第 4.1 章部署到 Azure 应用服务
此图显示了 Java 徽标 ms-identity-java-webapp
此图显示了 Java 徽标 ms-identity-b2c-java-servlet-webapp-authentication
此图显示了 Node.js 徽标

Node.js (MSAL Node)
Express Web 应用登录用户教程
此图显示了 Python 徽标 Python Flask 教程 - 第 1.1 章使用 AAD 登录
此图显示了 Python 徽标 Python Flask 教程 - 第 1.2 章使用 B2C 登录
此图显示了 Python 徽标 Python Flask 教程 - 第 2.1 章使用 AAD 登录并调用 Graph
此图显示了 Python 徽标 Python Flask 教程 - 第 3.1 章部署到 Azure 应用服务
此图显示了 Python 徽标 Python Django 教程 - 第 1.1 章使用 AAD 登录
此图显示了 Python 徽标 Python Django 教程 - 第 1.2 章使用 B2C 登录
此图显示了 Python 徽标 Python Django 教程 - 第 2.1 章使用 AAD 登录并调用 Graph
此图显示了 Python 徽标 Python Django 教程 - 第 3.1 章部署到 Azure 应用服务
此图显示了 Python 徽标 Python Flask Web 应用
此图显示了 Ruby 徽标 msgraph-training-rubyrailsapp
此图显示了 Blazor 徽标

Blazor 服务器
Blazor Server 应用用户登录教程 Blazor Server 应用调用 Microsoft Graph

Chapterwise 教程:通过 Azure Active Directory 让用户登录并调用 API 的 Blazor Server 应用

桌面和移动公共客户端应用

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

客户端应用程序 平台 流/授权 调用 Microsoft Graph 调用 ASP.NET Core Web API
桌面教程 (.NET Core) - 可选择使用:

- 跨平台令牌缓存

- 自定义 Web UI
此图显示了 .NET/C# 徽标 授权代码 ms-identity-dotnet-desktop-tutorial
桌面 (WPF) 此图显示了 .NET 桌面/C# 徽标 授权代码 dotnet-desktop-msgraph-v2 dotnet-native-aspnetcore-v2
桌面(控制台) 此图显示了 .NET/C#(桌面)徽标 Windows 集成身份验证 dotnet-iwa-v2
桌面(控制台) 此图显示了 .NET/C#(桌面)徽标 授权代码 active-directory-dotnetcore-daemon-v2 active-directory-dotnetcore-daemon-v2
桌面(控制台)
使用证书而不是机密
此图显示了 .NET/C#(桌面)徽标 授权代码 active-directory-dotnetcore-daemon-v2 active-directory-dotnetcore-daemon-v2
桌面(控制台) 此图显示了 Java 徽标 Windows 集成身份验证 ms-identity-java-desktop
桌面(控制台) 这是 .NET/C#(桌面)徽标 用户名/密码 dotnetcore-up-v2
使用 WAM 的桌面(控制台) 这是 .NET/C#(桌面)的徽标 Web 帐户管理器 (WAM) 交互 dotnet-native-uwp-wam
桌面(控制台) 此图显示了 Java 徽标 用户名/密码 ms-identity-java-desktop
桌面(控制台) 此图显示了 Python 徽标 用户名/密码 ms-identity-python-desktop
Desktop (Electron) 此图显示了 Node.js 徽标

Node.js (MSAL Node)
授权代码 (PKCE) ms-identity-javascript-nodejs-desktop
移动(Android、iOS、UWP) 此图显示了 .NET/C# (Xamarin) 徽标 授权代码 xamarin-native-v2
移动 (iOS) 此图显示了 iOS/Objective-C 或 Swift 授权代码 ios-swift-objc-native-v2

ios-native-nxoauth2-v2
桌面 (macOS) macOS 授权代码 macOS-swift-objc-native-v2
移动 (Android-Java) 此图显示了 Android 徽标 授权代码 android-Java
移动 (Android-Kotlin) 此图显示了 Android 徽标 授权代码 android-Kotlin

守护程序应用程序

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

客户端应用程序 平台 流/授权 调用 Microsoft Graph
控制台 此图显示了 .NET Core 徽标

ASP.NET
客户端凭据 dotnetcore-daemon-v2
Web 应用 显示 ASP.NET 徽标的屏幕截图。

ASP.NET
客户端凭据 dotnet-daemon-v2
控制台 此图显示了 Java 徽标 客户端凭据 ms-identity-java-daemon
控制台 此图显示了 Node.js 徽标

Node.js (MSAL Node)
客户端凭据 ms-identity-javascript-nodejs-console
控制台 此图显示了 Python 徽标 客户端凭据 ms-identity-python-daemon

无外设应用程序

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

客户端应用程序 平台 流/授权 调用 Microsoft Graph
桌面(控制台) 此图显示了 .NET/C#(桌面)徽标 设备代码流 dotnetcore-devicecodeflow-v2
桌面(控制台) 此图显示了 Java 徽标 设备代码流 ms-identity-java-devicecodeflow
桌面(控制台) 此图显示了 Python 徽标 设备代码流 ms-identity-python-devicecodeflow

多租户 SaaS 应用程序

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

平台 说明 链接
此图显示了 Angular 徽标 Angular (MSAL Angular 2.0) 多租户 SPA 调用多租户自定义 Web API ms-identity-javascript-angular-spa-aspnet-webapi-multitenant
此图显示了 ASP.NET Core 徽标 .NET Core (MSAL.NET) ASP.NET Core MVC Web 应用程序调用图形 API active-directory-aspnetcore-webapp-openidconnect-v2
此图显示了 ASP.NET Core 徽标 .NET Core (MSAL.NET) ASP.NET Core MVC Web 应用程序调用 ASP.NET Core Web API active-directory-aspnetcore-webapp-openidconnect-v2

Web API

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

平台 示例
此图显示了 ASP.NET Core 徽标

ASP.NET Core
dotnet-native-aspnetcore-v2 的 ASP.NET Core Web API(服务)
此图显示了 ASP.NET 徽标

ASP.NET MVC
ms-identity-aspnet-webapi-onbehalfof 的 Web API(服务)
此图显示了 Java 徽标 ms-identity-java-webapi 的 Web API(服务)
此图显示了 Node.js 徽标

Node.js (Passport.js)
active-directory-javascript-nodejs-webapi-v2 的 Web API(服务)
此图显示了 Node.js 徽标

Node.js (Passport.js)
active-directory-b2c-javascript-nodejs-webapi 的 B2C Web API(服务)

Azure Functions 作为 Web API

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

平台 示例
此图显示了 ASP.NET Core 徽标

ASP.NET Core
dotnet-native-aspnetcore-v2 的 ASP.NET Core Web API(服务)Azure Functions
此图显示了 Python 徽标

Python
Python 的 Web API(服务)
此图显示了 Node.js 徽标

Node.js (Passport.js)
Node.js 和 passport-azure-ad 的 Web API(服务)
此图显示了 Node.js 徽标

Node.js (Passport.js)
使用 on behalf of 的 Node.js 和 passport-azure-ad 的 Web API(服务)

其他 Microsoft Graph 示例

若要了解演示 Microsoft Graph API 的各种使用模式(包括向 Azure AD 进行身份验证)的示例和教程,请参阅 Microsoft Graph Community samples & tutorials(Microsoft Graph 社区示例和教程)。

另请参阅

Microsoft Graph API 概念和参考