当前位置: 首页 > news >正文

.NET Core WebAPI 中使用 MISE + S2S 的三种方式

.NET Core WebAPI 中使用 MISE + S2S 的三种方式

在 .NET Core WebAPI 中集成 MISE (Microsoft Identity Service Endpoint) 与 S2S (Service-to-Service) 认证授权时,常见有三种写法。本文将分别介绍它们的用法、配置方式,并在最后进行对比。


方式一:AddMicrosoftIdentityWebApi

用法

services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddMicrosoftIdentityWebApi(Configuration.GetSection("AzureAd"));

配置示例

{"AzureAd": {"Instance": "https://login.microsoftonline.com/","TenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","Audience": "api://your-api-app-id"}
}

特点

  • 通用的 Azure AD 集成方式,支持用户登录和 S2S 场景。

  • 需要手动配置 Issuer、Audience 等。

  • 灵活度高,可自定义授权策略。

方式二:AddAuthentication(S2SAuthenticationDefaults.AuthenticationScheme).AddMiseWithDefaultModules

用法

services.AddAuthentication(S2SAuthenticationDefaults.AuthenticationScheme).AddMiseWithDefaultModules(Configuration);

配置示例

{"Mise": {"TenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","Audience": "api://your-api-app-id","Authority": "https://login.microsoftonline.com/"}
}

特点

  • 专门针对 S2S 场景的封装。

  • 自动绑定配置并附加默认模块:

  • Token 验证模块

  • 日志模块

  • 健康检查模块

  • 缓存模块

  • 开箱即用,减少手工配置。

方式三:AddS2SAuthentication + AddMise + EnableTokenAcquisition

用法

builder.AddS2SAuthentication(S2SAuthenticationDefaults.AuthenticationScheme, config);builder.Services.AddMise(config, options.ClientId).EnableTokenAcquisitionToCallDownstreamApiAndDataProviderAuthentication(S2SAuthenticationDefaults.AuthenticationScheme).AddInMemoryTokenCaches();

配置示例

{"Mise": {"TenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","ClientSecret": "your-client-secret","Audience": "api://your-api-app-id","Authority": "https://login.microsoftonline.com/"}
}

特点

  • 同时完成 入站 Token 验证 和 出站 Token 获取。

  • 支持调用下游 API(如 Microsoft Graph)。

  • 内置 Token 缓存机制,提升性能。

  • 更适合微服务场景:既能被调用,又能调用其他服务。

📊 三种方式的差异对比

方式 配置绑定 Token 验证 默认模块 下游 API 调用 缓存支持 适用场景
AddMicrosoftIdentityWebApi 手动绑定 AzureAd 通用场景(用户登录 + S2S)
AddMiseWithDefaultModules 自动绑定 Mise 配置 ✅ 日志/健康检查/缓存 ✅ 默认缓存 专注 S2S,开箱即用
AddS2SAuthentication + AddMise 手动 + 自动结合 可扩展 ✅ 支持下游调用 ✅ 可选缓存 微服务场景,既入站又出站

🔑 总结

  • 方式一:通用,灵活,适合用户登录和简单的 S2S。

  • 方式二:专注 S2S,自动附加模块,开箱即用。

  • 方式三:最完整,既能验证入站 Token,又能获取下游 Token,支持缓存,适合复杂微服务架构。

仔细介绍

  • services.AddAuthentication(S2SAuthenticationDefaults.AuthenticationScheme)这个只是注册了一个Auth 的schema, 但是缺乏验证token的逻辑。如果不用上面的MISE,我们需要手动提供token验证的方式。下面是手动的方式
services.AddAuthentication(S2SAuthenticationDefaults.AuthenticationScheme).AddJwtBearer(S2SAuthenticationDefaults.AuthenticationScheme, options =>{options.Authority = "https://login.microsoftonline.com/{tenantId}/v2.0";options.Audience = "api://your-api-app-id";options.TokenValidationParameters = new TokenValidationParameters{ValidateIssuer = true,ValidIssuer = $"https://login.microsoftonline.com/{tenantId}/v2.0",ValidateAudience = true,ValidAudience = "api://your-api-app-id",ValidateLifetime = true,ValidateIssuerSigningKey = true};});
http://www.jsqmd.com/news/65129/

相关文章:

  • NetCore使用WCF简单方式
  • 2025年无锡上料机靠谱厂家推荐:看哪家技术实力强?
  • 2025年度靠谱的实验室反应釜厂家TOP5权威推荐
  • 基于Python+Vue开发的婚恋交友管理系统源码+运行步骤+计算机专业
  • 2025-12-07 GitHub 热点项目精选
  • Java集合List详解:从入门到精通 - 教程
  • Python线程指南
  • 【基础】Unity着色器编程的语言和数学基础介绍
  • 2025年评价高的Q235模具钢/模具钢45#锯切厂家最新权威推荐排行榜
  • 显微镜品牌哪家强?2025年最新市场格局分析与五大高价值品牌推荐
  • 2025年质量好的高温风机厂家推荐及选购参考榜
  • offline meta RL | 论文速读记录
  • 2025年重庆五大板栗鸡店排行榜,南坪好吃板栗鸡店推荐及测评
  • 无锡新世源科技有限公司的技术实力怎样?品牌知名度高不高?
  • 凸优化理论(五)-勒让德变换
  • 2025年重庆梁山鸡品牌排行榜,解析重庆李子坝梁山鸡适合朋友
  • 显微镜品牌哪家强?2025年最新市场分析与五大高价值品牌推荐
  • 2025年质量好的玄武岩除尘布袋厂家最新权威推荐排行榜
  • 2025年质量好的磁悬浮冷水机厂家最新实力排行
  • 2025年比较好的三维阻尼铰链行业内知名厂家排行榜
  • 2025年知名的珠地天鹅绒/素天鹅绒厂家最新推荐权威榜
  • 2025年山东AI公司选购决策指南:为企业数智化转型甄选五家可靠伙伴
  • 零基础从头教学Linux(Day 62) - 实践
  • 2025年企业债权处置专家TOP1推荐:从谈判到执行,雷诺律师的全流程解决方案
  • 2025年比较好的电柜真空包装袋厂家推荐及选购参考榜
  • 2025年比较好的喷射式绞丝染色机/低浴比成衣染色机品牌厂家排行榜
  • 2025年评价高的高粘瓷砖胶最新TOP厂家推荐
  • 完整教程:c#数据持久化:TXT文本保存、序列化与反序列化
  • 2025年质量好的粉末TAIC交联剂行业内口碑厂家排行榜
  • 山东AI公司哪家强?2025年最新区域产业观察及5家高潜力企业推荐