如何在.NET 9 Blazor Server(CosmosDB)中实现Entra External ID用户认证?
Blazor Server 集成 Entra External ID 认证的实现参考
核心配置步骤(基于.NET 9)
虽然官方暂无专门针对Blazor Server的Entra External ID教程,但可基于Asp.Net MVC的配置逻辑适配,核心实现步骤如下:
- 注册认证服务:在
Program.cs中配置Microsoft Entra认证服务,设置客户ID、租户ID、回调路径等参数,同时适配Blazor Server的会话与Cookie规则:builder.Services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme) .AddMicrosoftIdentityWebApp(builder.Configuration.GetSection("AzureAdB2C")); builder.Services.AddAuthorization(options => { options.FallbackPolicy = options.DefaultPolicy; }); builder.Services.AddServerSideBlazor() .AddMicrosoftIdentityConsentHandler(); - 路由与认证组件配置:在
App.razor中使用<AuthorizeRouteView>保护受权限控制的路由,添加<LoginDisplay>组件处理登录、登出逻辑,这部分和常规Blazor Server认证的用法一致。 - 获取用户信息:通过
@inject AuthenticationStateProvider AuthenticationStateProvider注入服务,获取用户认证状态后即可读取Entra External ID返回的用户声明数据。
GitHub示例参考
微软官方的Microsoft.Identity.Web仓库中包含适配Blazor Server的认证示例,涵盖Entra External ID场景的核心实现:
- 包含完整的
Program.cs配置代码,展示如何设置租户、客户端ID、权限等关键参数 - 示例中实现了路由权限控制、用户信息展示、授权同意处理、登出回调等完整流程
- 可参考其中的配置文件结构,快速适配你的项目需求
Cosmos DB 用户数据关联
认证通过后,可通过用户的唯一标识(如ClaimTypes.NameIdentifier对应的声明值)关联Cosmos DB中的用户数据,实现用户数据的隔离存储,这部分逻辑和常规Blazor Server操作Cosmos DB的方式一致。
内容的提问来源于stack exchange,提问作者osotorrio
相关产品推荐
相关产品推荐

