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

Blazor WebAssembly托管项目源码控制敏感信息移除及AAD认证咨询

一、Blazor WebAssembly托管项目的AAD认证流程

你的项目采用托管模式,认证流程逻辑如下:

  • 用户在Blazor客户端触发登录操作,会被重定向到ASP.NET Core服务器的认证端点
  • 服务器通过OIDC协议,将用户引导至Microsoft AAD的登录页面
  • 用户完成身份验证后,AAD返回授权码到服务器配置的CallbackPath(即你配置里的/signin-oidc)
  • 服务器携带授权码、自身的ClientId和ClientSecret,向AAD请求访问令牌与ID令牌
  • 服务器生成认证Cookie返回给客户端,后续客户端的请求都会附带该Cookie,服务器验证通过后允许访问受保护资源
  • Blazor客户端从服务器获取用户身份信息,同步更新登录状态
二、需要从版本控制中移除的敏感文件

仅删除appsettings.json里的AzureAd配置块远远不够,你需要确保以下敏感内容不流入公开版本控制:

  • appsettings.json/appsettings.Development.json:其中的ClientSecret是核心敏感信息,哪怕是占位符也要彻底移除,改用环境变量或用户机密的引用方式
  • 用户机密文件:如果你通过dotnet user-secrets存储ClientSecret,对应文件路径为%APPDATA%\Microsoft\UserSecrets\<GUID>\secrets.json(Windows)或~/.microsoft/usersecrets/<GUID>/secrets.json(Linux/macOS),默认.gitignore会包含该路径,但要确认你的.gitignore配置了**/secrets.json规则
  • 证书文件:如果配置了ClientCertificates,对应的.pfx/.cer等证书文件必须排除在版本控制外
  • 建议将appsettings中的ClientSecret替换为${AzureAd:ClientSecret}这类环境变量占位符,或通过配置提供者读取用户机密,确保源码中无任何敏感信息残留
三、Microsoft AAD应用注册的工作原理

应用注册本质是在Azure AD租户内为你的应用创建唯一身份标识:

  • TenantId:你的Azure AD租户唯一ID,限定了身份验证的组织范围
  • ClientId:应用在AAD中的唯一标识符,AAD通过它识别发起认证请求的应用
  • ClientSecret/证书:应用的身份凭证,用于证明应用本身的合法性,防止恶意应用冒充你的服务向AAD请求令牌
  • Scopes:定义应用需要获取的权限范围,模板默认的access_as_user代表应用可以用户身份访问后端API
  • 回调地址:AAD验证身份后,将授权码/令牌发送至该地址,必须与Azure Portal中应用注册的回调地址完全匹配
四、仅TenantId和ClientId是否足够使用Microsoft认证

分场景判断:

  1. Blazor客户端层面:如果是纯客户端Blazor WASM(非托管架构),采用PKCE认证流程,无需ClientSecret,仅TenantId和ClientId即可发起认证请求。但你的项目是托管模式,客户端认证依赖服务器代理完成。
  2. ASP.NET Core服务器层面:服务器作为受信任的后端服务,必须提供ClientSecret(或证书)来与AAD完成授权码交换令牌的步骤,否则AAD会拒绝服务器的请求。因此仅靠TenantId和ClientId不足以完成完整的认证流程,服务器必须具备有效的ClientSecret或证书。

内容的提问来源于stack exchange,提问作者Shriram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:15:32