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

MS600认证自定义标签认证弹窗无法关闭 多显示器Teams JS SDK兼容问题

Teams自定义标签页身份验证弹窗无法关闭问题:多显示器环境复现

问题现象

部分环境下,使用MSAL/ADAL和React完成MS-600认证的「在自定义标签页中实现身份验证」练习时,身份验证弹窗始终无法关闭。
故障仅在Microsoft Teams桌面客户端中出现,网页版无异常,已切换客户端到开发者预览版调试。

临时解决方案

拔下或禁用计算机的一台显示器即可解决该问题。当前稳定复现故障的环境下,拔下DELL U2713HM显示器后重启Microsoft Teams即可恢复正常。

复现环境配置

Operating System
    Windows 10 Professionnel 64-bit
CPU
    Intel Core i7 @ 2.90GHz 70 °C
    Haswell 22nm Technology
RAM
    16,0 Go Dual-Channel DDR3 @ 798MHz (11-11-11-28)
Motherboard
    Dell Inc. 0V5GVY (SOCKET 0)
Graphics
    DELL U2713HM (2560x1440@59Hz)
    Generic PnP Monitor (1680x1050@60Hz)
    DELL E228WFP (1680x1050@60Hz)
    2047MB NVIDIA Quadro K2100M (Dell)  46 °C
Storage
    465GB Crucial CT500MX500SSD1 (SATA (SSD))
    931GB Western Digital WDC WD10JPVX-75JC3T0 (SATA )  36 °C
Optical Drives
    No optical disk drives detected
Audio
    Périphérique audio USB

调试信息

从控制台日志可以看到,microsoftTeams.initialize()执行成功,但microsoftTeams.getContext()的回调函数始终未被触发。
auth-start.html的完整代码如下:

<!DOCTYPE html>
<html>
<body>
  <script src="https://statics.teams.cdn.office.net/sdk/v1.9.0/js/MicrosoftTeams.min.js" crossorigin="anonymous"></script>
  <script src="https://secure.aadcdn.microsoftonline-p.com/lib/1.0.17/js/adal.min.js" crossorigin="anonymous"></script>
  <script type="text/javascript">

    console.log("initializing");
    microsoftTeams.initialize();
    console.log("initialized");
    try
    {

      microsoftTeams.getContext(function (msTeamsContext) {

        try{
          console.log("auth-start");
          // ADAL.js configuration
          let config = {
            clientId: "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
            redirectUri: window.location.origin + "/auth-end.html",
            cacheLocation: "localStorage",
            endpoints: {
              "https://graph.microsoft.com": "https://graph.microsoft.com"
            }
          };

        
          // add extra query parameters Azure AD login request
          //  include scope for OpenID connect and log-in hint by using the current Microsoft Teams logged-in user
          config.extraQueryParameters = "scope=open+profile";
          if (msTeamsContext.upn) {
            config.extraQueryParameters += "&login-hint=" + encodeURIComponent(msTeamsContext.userProfileName);
          }
          // check if consent required for new permission
          if (getUrlParameter('prompt') !== "") {
            config.extraQueryParameters += "&prompt=" + getUrlParameter('prompt');
          }

          // override URL to Azure AD auth endpoint to include extra query parameters
          config.displayCall = function (urlNavigate) {
            if (urlNavigate) {
              if (config.extraQueryParameters) {
                urlNavigate += "&" + config.extraQueryParameters;
              }
              window.location.replace(urlNavigate);
            }
          }

          console.log("auth-context");
          // login
          let authContext = new AuthenticationContext(config);
          console.log("clear-cache");
          authContext.clearCache();
          console.log("login");
          authContext.login();
        }
        catch(error2) {
          console.log("error2");
          console.log(error2);
        }
        
      });
    }
    catch(error) {
        console.log("error");
        console.log(error);
    }

    function getUrlParameter(name) {
      name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
      var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
      var results = regex.exec(location.search);
      return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
    };
  </script>
</body>
</html>

开发者预览版控制台截图:
开发者预览版控制台

根因说明与永久解决方案

这个问题和显示器硬件本身无关,是Windows多显示器DPI缩放/刷新率不一致导致的Teams桌面客户端SDK交互异常。
Teams桌面端基于Electron框架开发,旧版本的Electron在多显示器使用不同缩放比例、或者不同刷新率的场景下,会出现弹出窗口的父窗口上下文绑定错误,导致SDK的回调通知无法正常传递到弹出的认证页面,也就出现了getContext回调不触发、认证完成后弹窗无法自动关闭的问题。
你可以尝试以下几个永久解决方案,不需要拔掉显示器:

  • 先把所有显示器的DPI缩放比例调整为相同值,刷新率也尽量统一,重启Teams后测试是否恢复
  • 升级Teams桌面客户端到最新正式版,微软已经在1.5以上版本修复了多显示器场景下的多个SDK回调异常问题
  • 把auth-start.html引用的Teams SDK从1.9.0升级到最新的2.x版本,2.x版本对多窗口上下文通信做了兼容性优化
  • 启动Teams的时候右键快捷方式,在兼容性设置里勾选「禁用高DPI缩放优化」,重启Teams即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:39:03