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

如何将Microsoft Azure应用OAuth2.0限制为仅内部用户使用

解决Microsoft社交认证仅允许组织内部用户登录的问题

核心问题排查

你已选择单租户账户类型但仍允许外部Microsoft账户登录,大概率是授权端点使用了通用公共端点,或后端未校验令牌的租户归属信息。以下是具体修复步骤:


1. 替换为租户专属的授权/令牌端点

单租户应用必须使用租户特定端点,禁止使用通用的common端点:

  • 授权端点:https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/authorize
  • 令牌端点:https://login.microsoftonline.com/{你的租户ID}/oauth2/v2.0/token

租户ID可在Azure AD「概述」页面获取,格式为GUID或租户域名(如yourcompany.onmicrosoft.com)

2. 后端强制校验令牌的租户属性

后端接收ID Token后,必须严格检查以下字段:

  • tid:必须完全匹配你的组织租户ID,拒绝非本租户的令牌
  • iss:必须为https://login.microsoftonline.com/{你的租户ID}/v2.0,确保令牌由你的组织租户颁发

3. 配置应用的用户分配限制(可选,增强安全性)

通过用户分配可进一步限定仅指定内部用户/组能登录:

  • 进入Azure AD「企业应用」页面,搜索你的应用名称
  • 打开「属性」面板,将「需要用户分配?」设为是
  • 切换到「用户和组」页面,添加允许登录的内部用户或组,未被添加的用户将无法访问应用

4. 修正后端认证框架配置(以ASP.NET Core为例)

若使用Microsoft官方认证中间件,必须明确指定租户ID,禁止留空或使用common:

services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
    .AddMicrosoftIdentityWebApp(options =>
    {
        options.ClientId = "你的客户端ID";
        options.ClientSecret = "你的客户端密钥";
        options.TenantId = "你的租户ID"; // 关键:必须指定租户ID
        options.Instance = "https://login.microsoftonline.com/";
    });

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 08:27:08