使用外部 SAML 身份的 Microsoft 团队登录弹出窗口中未发生 Ajax 调用

问题描述 投票:0回答:1

我有一个本地 SAML2.0 身份提供商。此身份提供者的登录页面,对本地主机服务器进行 Ajax 调用。您可以假设在每个用户计算机上,本地主机服务器将侦听传入流量。

当用户尝试使用 chrome/edge 登录时,我在 localhost API 处遇到断点,一切都按预期工作。

当我尝试登录微软团队桌面应用程序时,输入电子邮件 ID 后,微软将我重定向到我的 SAML 身份提供商登录页面并触发 ajax 调用。但没有调用 localhost API。

我在localhost API调用中添加了CORS,并在allow-origin中添加了SAML身份域名。

下面是ajax调用:

 $.ajax({
    url: "https://localhost/auth",
    type: 'GET',
    success: successCb,
    crossDomain:true,
    error: function (xhr, exe) {
        window.location.href = 'https://parent.abc.com/sso/mobile/auth/showerror1?status=' + xhr.status + '&error='+exe;
    }
});

在上面的ajax中,当尝试从浏览器登录时,会触发successCb,但使用微软登录弹出窗口时,总是会执行错误。

无法理解这里出了什么问题。

完整详细信息在这里: https://learn.microsoft.com/en-us/answers/questions/1689092/login-not-working-into-desktop-team-app-from-exter

enter image description here

ajax single-sign-on microsoft-teams
1个回答
0
投票

使用外部 SAML 身份提供商的 Microsoft Teams 桌面应用程序登录弹出窗口中未发生 Ajax 调用的问题是由于严格的 CORS 策略造成的。要解决此问题,请按照以下步骤操作:

  1. 使用后端服务器进行令牌获取:从后端服务器进行令牌获取调用以避免 CORS 问题。
  2. 使用 microsoftTeams.authentication.getAuthToken():利用 Teams JavaScript SDK 方法在 Teams 上下文中获取令牌。
  3. 实施身份验证流程:使用
    authentication.authenticate
    启动外部身份验证登录流程,将
    isExternal
    设置为 true,并适当处理响应。
  4. 更新身份验证流程:遵循 Microsoft Teams 平台文档,确保您的流程在 Teams 桌面应用程序中无缝运行。 代码示例
authentication.authenticate({
    url: `${window.location.origin}/auth-start?oauthRedirectMethod={oauthRedirectMethod}&authId={authId}&hostRedirectUrl=${url}&googleId=${googleId}`,
    isExternal: true
}).then((result) => {
    this.getGoogleServerSideToken(result);
}).catch((reason) => {
    console.log("Authentication failed: " + reason);
});

其他资源

遵循这些步骤可确保 Microsoft Teams 桌面应用程序与外部 SAML 身份提供商实现无缝登录体验。

© www.soinside.com 2019 - 2024. All rights reserved.