Microsoft 标识 Web 身份验证库Microsoft Identity Web authentication library

Microsoft 标识 Web 是一组 ASP.NET Core 库,可简化向与 Microsoft 标识平台集成的 Web 应用和 Web API 添加身份验证和授权支持的过程。Microsoft Identity Web is a set of ASP.NET Core libraries that simplifies adding authentication and authorization support to web apps and web APIs integrating with the Microsoft identity platform. 它提供了一个单面 API 便利层,该层将 ASP.NET Core、其身份验证中间件以及适用于 .NET 的 Microsoft 身份验证库 (MSAL) 绑定在一起。It provides a single-surface API convenience layer that ties together ASP.NET Core, its authentication middleware, and the Microsoft Authentication Library (MSAL) for .NET.

支持的应用程序方案Supported application scenarios

如果要构建 ASP.NET Core Web 应用或 Web API,并希望使用 Azure Active Directory (Azure AD) 或 Azure AD B2C 进行标识和访问管理 (IAM),建议在所有这些情况下使用 Microsoft 标识 Web:If you're building ASP.NET Core web apps or web APIs and want to use Azure Active Directory (Azure AD) or Azure AD B2C for identity and access management (IAM), we recommend using Microsoft Identity Web for all of these scenarios:

获取该库Get the library

你可以从 NuGet.NET Core 项目模板GitHub 获取 Microsoft 标识 Web。You can get Microsoft Identity Web from NuGet, .NET Core project templates, and GitHub.

NuGetNuGet

Microsoft 标识 Web 在 NuGet 上以一组包的形式提供,这些包基于应用的需求提供模块化功能。Microsoft Identity Web is available on NuGet as a set of packages that provide modular functionality based on your app's needs. 使用 .NET CLI 的 dotnet add 命令或 Visual Studio 的 NuGet 包管理器 安装适用于项目的包:Use the .NET CLI's dotnet add command or Visual Studio's NuGet Package Manager to install the packages appropriate for your project:

项目模板Project templates

Microsoft 标识 Web 项目模板包含在 .NET 5.0 中,可以在下载后用于 ASP.NET Core 3.1 项目。Microsoft Identity Web project templates are included in .NET 5.0 and are available for download for ASP.NET Core 3.1 projects.

如果你使用的是 ASP.NET Core 3.1,请通过 .NET CLI 安装模板:If you're using ASP.NET Core 3.1, install the templates with the .NET CLI:

dotnet new --install Microsoft.Identity.Web.ProjectTemplates::1.0.0

下图显示了受支持的应用类型及其相关参数的概要视图:The following diagram shows a high-level view of the supported app types and their relevant arguments:

适用于 Microsoft 标识 Web 的 .NET CLI 项目模板图示
* MultiOrg 不支持与 webapi2 一起使用,但你可以通过将租户设置为 commonorganizations 在 appsettings.json 中启用它。* MultiOrg is not supported with webapi2, but can be enabled in appsettings.json by setting tenant to common or organizations
** --calls-graph 不支持用于 Azure AD B2C** --calls-graph is not supported for Azure AD B2C

此示例 .NET CLI 命令取自我们的 Blazor Server 教程,它生成一个新的 Blazor Server 项目,其中包含正确的包和起始代码(已显示占位符值):This example .NET CLI command, taken from our Blazor Server tutorial, generates a new Blazor Server project that includes the right packages and starter code (placeholder values shown):

dotnet new blazorserver2 --auth SingleOrg --calls-graph --client-id "00000000-0000-0000-0000-000000000000" --tenant-id "11111111-1111-1111-1111-111111111111" --output my-blazor-app

GitHubGitHub

Microsoft 标识 Web 是 GitHub 上承载的一个开源项目:AzureAD/microsoft-identity-webMicrosoft Identity Web is an open-source project hosted on GitHub: AzureAD/microsoft-identity-web

存储库 wiki 包含其他文档,如果你需要帮助或发现了 bug,可以提交问题The repository wiki contains additional documentation, and if you need help or discover a bug, you can file an issue.

功能Features

如果你使用默认的 ASP.NET 3.1 项目模板,则 Microsoft 标识 Web 包括多项未提供的功能。Microsoft Identity Web includes several features not provided if you use the default ASP.NET 3.1 project templates.

功能Feature ASP.NET Core 3.1ASP.NET Core 3.1 Microsoft 标识 WebMicrosoft Identity Web
在 Web 应用中将用户登录Sign in users in web apps
  • 工作或学校帐户Work or school accounts
  • 社交标识(使用 Azure AD B2C)Social identities (with Azure AD B2C)
  • 工作或学校帐户Work or school accounts
  • 社交标识(使用 Azure AD B2C)Social identities (with Azure AD B2C)
  • 保护 Web APIProtect web APIs
  • 工作或学校帐户Work or school accounts
  • 社交标识(使用 Azure AD B2C)Social identities (with Azure AD B2C)
  • 工作或学校帐户Work or school accounts
  • 社交标识(使用 Azure AD B2C)Social identities (with Azure AD B2C)
  • 多租户应用中的颁发者验证Issuer validation in multi-tenant apps No 是,适用于所有云Azure AD B2CYes, for all clouds and Azure AD B2C
    Web 应用/API 调用 Microsoft GraphWeb app/API calls Microsoft graph No Yes
    Web 应用/API 调用 Web APIWeb app/API calls web API No Yes
    支持证书凭据Supports certificate credentials No 是,包括 Azure Key VaultYes, including Azure Key Vault
    Web 应用中的增量同意和条件访问支持Incremental consent and conditional access support in web apps No 是,在 MVC、Razor 页面和 Blazor 中Yes, in MVC, Razor pages, and Blazor
    Web API 中的令牌加密证书Token encryption certificates in web APIs No Yes
    Web API 中的作用域/应用角色验证Scopes/app role validation in web APIs No Yes
    Web API 中的 WWW-Authenticate 标头生成WWW-Authenticate header generation in web APIs No Yes

    后续步骤Next steps

    若要查看操作中的 Microsoft 标识 Web,请尝试我们的 Blazor Server 教程:To see Microsoft Identity Web in action, try our Blazor Server tutorial:

    教程:创建使用 Microsoft 标识平台进行身份验证的 Blazor Server 应用Tutorial: Create a Blazor Server app that uses the Microsoft identity platform for authentication

    GitHub上的 Microsoft 标识 Web Wiki 包含了广泛的参考文档,涉及此库的各个方面。The Microsoft Identity Web wiki on GitHub contains extensive reference documentation for various aspects of the library. 例如,可以在下面找到证书用法、增量同意和条件访问参考:For example, certificate usage, incremental consent, and conditional access reference can be found here: