You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 08:25:58