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 - 使用
IDownstreamApi或IAuthorizationHeaderProvider用于无缝 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";
});
后续步骤
选择与应用程序匹配的方案:
- Web 应用 - 登录用户 - 向 ASP.NET Core Web 应用程序添加身份验证
- Web API - 保护 API - 使用持有者令牌保护 ASP.NET Core Web API
- 守护程序应用 - 调用 API - 生成调用受保护 API 的后台服务