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

如何复刻MS Graph Explorer认证流程实现Azure应用自注册

复刻MS Graph Explorer认证机制实现Azure应用自动注册方案

所有AAD认证流程都必须提供Client ID,不存在无Client ID的认证通路。MS Graph Explorer本身并未实现"零预注册应用"的逻辑,它使用的是微软提前在全球Azure环境注册完成的固定多租户公共客户端ID,所有访问用户共用这个ID完成初始登录授权,无需普通用户手动到Azure门户注册应用,这就是你要找的核心逻辑。

具体实现步骤

  • 初始认证阶段直接使用微软公开的通用公共客户端ID:1950a258-227b-4e31-a9cf-717495945fc2。这个ID是Azure CLI、Visual Studio、Graph Explorer等所有微软官方客户端工具共用的多租户公共客户端,默认支持http://localhost类本地回环重定向地址,适配任意工作/学校账号、个人微软账号登录,无需你自行提前配置。
  • 初始登录时必须显式申请Application.ReadWrite.All委托权限,拿到权限后即可调用创建应用的MS Graph接口,给当前登录用户所属的租户自动注册你自己的业务应用,保存返回的专属Application ID、密钥等凭据,后续所有业务调用切换到你自己的应用凭据即可,完全不需要用户手动操作门户。

代码修正

1. 交互式认证配置修正

你之前的代码无执行效果,核心原因是未使用可用的Client ID,且未申请创建应用所需的对应权限,调整为如下配置即可:

//Interactive credentials
InteractiveBrowserCredential _interactiveBrowserCredential;
CancellationToken cancellationToken = CancellationToken.None;

var options = new InteractiveBrowserCredentialOptions
{
    TenantId = "common", // 支持个人账号+任意组织账号必须填common,不能绑定固定租户ID
    ClientId = "1950a258-227b-4e31-a9cf-717495945fc2", // 填入微软公共多租户客户端ID
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
    RedirectUri = new Uri("http://localhost:44309/"),
};

_interactiveBrowserCredential = new InteractiveBrowserCredential(options);
// 必须声明Application.ReadWrite.All权限,否则创建应用接口会无权限
_userClient = new GraphServiceClient(_interactiveBrowserCredential, new[] { "User.Read", "Application.ReadWrite.All" });

调用创建应用的代码无需修改,权限配置正确后即可正常返回新建的应用对象。

2. Blazor服务端配置修正

你运行示例抛出IDW10106: The 'ClientId' option must be provided错误,是因为配置文件中缺失必填的ClientId字段,将appsettings.json中的AzureAd节点补全即可:

"AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "TenantId": "common",
    "ClientId": "1950a258-227b-4e31-a9cf-717495945fc2",
    "CallbackPath": "/signin-oidc"
}

Startup中注册认证的代码无需调整。

注意事项

  • 上述公共Client ID仅适合做初始引导流程使用,微软对这个公共客户端有明确的接口调用速率限制,不可用于正式生产环境的全量业务请求。正确的流程是:用户首次打开应用时用公共ID登录,自动完成自有业务应用的租户内注册,后续所有请求切换到自动注册生成的自有应用凭据,这也是MS Graph Explorer本身的实现逻辑。
  • 如果登录用户是租户内的普通用户(非全局管理员),需要提前确认租户开启了"用户可以注册应用"的配置,或者由管理员完成权限同意,否则调用创建应用接口会返回403错误。你之前调用接口无报错无结果,就是无权限场景下SDK的静默处理导致的,可以加全局异常捕获查看具体的HTTP响应码定位问题。
  • 要支持个人微软账号登录,自动创建应用时需要将应用的signInAudience字段设置为AzureADandPersonalMicrosoftAccount,否则个人账号登录时会抛出不支持的账号类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 04:42:35