Microsoft。Identity.Web 将Microsoft Entra ID身份验证扩展到 .NET Framework 和 .NET Standard 应用程序。 本文可帮助你为方案选择合适的包和集成模式。
选择场景
选择与应用程序类型匹配的集成模式。 Microsoft Entra为 Web 应用和后台服务提供不同的包。
MSAL.NET与Microsoft.Identity.Web包
针对控制台应用、守护程序服务和非 Web .NET Framework 应用程序
使用 Microsoft.Identity.Web.TokenCache 和 Microsoft.Identity.Web.Certificate 包,与 MSAL.NET 一起用于:
- 令牌缓存序列化(SQL Server、Redis、Cosmos DB、PostgreSQL)
- 从 KeyVault、证书存储或文件系统加载证书
- 控制台应用程序和守护程序服务
- .NET标准 2.0 库
适用于 Microsoft.Identity.Web 的 MSAL.NET 指南
用于 ASP.NET MVC/Web API 的 OWIN 集成
适用于 ASP.NET MVC 和 Web API 应用程序
使用 Microsoft.Identity.Web.OWIN 包以实现功能齐全的 Web 身份验证。
- 用于自动获取令牌的 TokenAcquirerFactory
- 用于轻松访问Microsoft Graph和下游 API 的控制器扩展
- 分布式令牌缓存支持
- 增量同意处理
比较集成选项
下表总结了两种集成方法之间的主要差异。
| 功能 | MSAL.NET + 令牌缓存/证书 | OWIN 集成 |
|---|---|---|
| 包 | Microsoft.Identity.Web.TokenCache Microsoft.Identity.Web.Certificate |
Microsoft.Identity.Web.OWIN |
| 目标 | 控制台应用、守护程序、工作服务 | ASP.NET MVC,ASP.NET Web API |
| 身份验证 | 手动 MSAL.NET 配置 | 自动 OWIN 中间件 |
| 令牌获取 | 手动操作 IConfidentialClientApplication |
使用控制器扩展自动 |
| 令牌缓存 | 所有提供程序(SQL、Redis、Cosmos、PostgreSQL) | 所有提供程序(SQL、Redis、Cosmos、PostgreSQL) |
| 证书加载 | KeyVault、store、file、Base64 | 通过 MSAL.NET 配置 |
| Microsoft Graph | 手动 GraphServiceClient 设置 |
this.GetGraphServiceClient() |
| 下游 API | 使用令牌手动进行 HTTP 调用 | this.GetDownstreamApi() |
| 增量许可 | 手动验证处理 | 自动使用 MsalUiRequiredException |
查看可用的包
从 Microsoft.Identity.Web 1.17+ 开始,可以在非 ASP.NET Core 环境中使用 Microsoft Identity 库。 以下包面向 .NET Framework 和 .NET Standard 工作负荷。
可用包
| Package | Purpose | 目标应用程序 |
|---|---|---|
| Microsoft。Identity.Web.TokenCache | 用于 MSAL.NET 的令牌缓存序列化程序 | 控制台、守护程序、工作者服务 |
| Microsoft.Identity.Web.Certificate | 证书加载工具 | 控制台、守护程序、工作者服务 |
| Microsoft。Identity.Web.OWIN | OWIN 中间件集成 | ASP.NET MVC,ASP.NET Web API |
了解包权益
这些包无需 ASP.NET Core即可简化常见身份验证任务。
| 功能 | 益处 |
|---|---|
| 令牌缓存序列化 | 内存中、SQL Server、Redis、Cosmos DB、PostgreSQL 的可重用缓存适配器 |
| 证书助手 | 从 KeyVault、文件系统或证书存储中简化的证书加载 |
| OWIN 集成 | ASP.NET MVC/Web API 的无缝身份验证 |
| .NET 标准版 2.0 | 与 .NET Framework 4.7.2+、.NET Core 和 .NET 5+ 兼容 |
| 最小依赖项 | 目标包没有 ASP.NET Core 依赖项 |
浏览示例应用程序
将这些示例用作你自己的实现的起点。
MSAL.NET 示例
- ConfidentialClientTokenCache - 具有令牌缓存的控制台应用
- active-directory-dotnetcore-daemon-v2 - 使用 Azure Key Vault 证书的守护程序
OWIN 示例
- ms-identity-aspnet-webapp-openidconnect - 与Microsoft.Identity.Web.OWIN一起使用的ASP.NET MVC