Microsoft Identity Web 概述

Microsoft。Identity.Web 是一组库,可简化向与Microsoft 标识平台集成的应用程序(包括Microsoft Entra ID)添加身份验证和授权。 它支持:

  • .NET Aspire分布式应用程序
  • ASP.NET Core Web 应用程序和 Web API
  • .NET Framework 上的 OWIN 应用程序
  • .NET守护程序应用程序和后台服务

无论是生成用于登录用户的 Web 应用、验证令牌的 Web API,还是调用受保护 API 的后台服务,Microsoft。Identity.Web 为你处理身份验证复杂性。

为何使用 Microsoft 身份 Web?

Microsoft。Identity.Web 可减少样本代码,并为常见标识方案提供内置最佳做法。 关键功能包括:

  • 简化的身份验证 - 用于登录用户和验证令牌的最小配置
  • Downstream API 调用 - 使用自动令牌管理调用Microsoft Graph、Azure SDK或你自己的受保护 API
    • 令牌获取 - 代表用户或应用程序获取令牌
    • Token 缓存管理 - Redis、SQL Server、Cosmos DB 和 PostgreSQL 的分布式缓存支持
  • 多个凭据类型 - 支持证书、托管标识和无证书身份验证
  • 自动授权标头 - 调用 API 时以透明方式处理身份验证

有关所有可用包及其使用时间的概述,请参阅 NuGet 包

使用自动身份验证调用 API

无需手动管理令牌即可调用受保护的 API。 Microsoft。Identity.Web 支持以下集成模式:

  • Microsoft Graph - 使用GraphServiceClient自动获取令牌
  • Azure SDK - 使用与 Microsoft.Identity.Web 集成的 TokenCredential 实现。
  • 你自己的 API - 使用 IDownstreamApiIAuthorizationHeaderProvider 用于无缝 API 调用
  • 代理身份 - 使用自动凭据处理来代表托管身份或服务主体调用 API

身份验证标头会自动添加到请求中,令牌以透明方式获取和缓存。 有关详细信息,请参阅调用下游 API守护程序应用程序和代理标识指南

配置方法

可以配置Microsoft。Identity.Web 通过设置文件或以编程方式进行。 这两种方法都支持所有身份验证方案。

appsettings.json中配置身份验证

{
  "AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "your-tenant-id",
    "ClientId": "your-client-id"
  }
}

重要

对于守护程序应用和控制台应用程序,请确保将 appsettings.json 文件复制到输出目录。 在 Visual Studio 中,将复制到输出目录属性设置为如果较新则复制始终复制,或将以下内容添加到.csproj

<ItemGroup>
  <None Update="appsettings.json">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </None>
</ItemGroup>

按代码配置

或者,直接在应用程序启动代码中配置身份验证:

builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(options =>
    {
        options.Instance = "https://login.microsoftonline.com/";
        options.TenantId = "your-tenant-id";
        options.ClientId = "your-client-id";
    });

后续步骤

选择与应用程序匹配的方案: