排查 Microsoft Teams 扩展开发环境中的 SSO 身份验证错误

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

问题描述:

我目前正在为 Microsoft Teams 开发一个扩展,使用 React.js 作为前端,使用 C# 作为后端,旨在管理许可证。该扩展打包为包含 manifest.json 的压缩文件,通过将其导入 Teams 来简化测试。但是,我遇到了 SSO(单点登录)身份验证错误的一致问题,但我一直无法解决。

重现问题的步骤:

1 在 Google Chrome 中,打开隐身窗口并导航至 https://dev.teams.microsoft.com/。 2 登录 Microsoft Teams 开发者平台 UI。 3 尝试通过 UI 使用压缩文件导入扩展。 4 尝试启动应用程序时,开发人员控制台中会显示与 SSO 相关的错误。

有趣的是,当我通过 admin.teams.microsoft.com 访问应用程序时,不会发生这些 SSO 错误。这种差异让我质疑问题的根本原因,特别是考虑到即将弃用经典 Teams,转而使用新版本。两个版本都存在该问题,这表明可能存在更复杂的潜在问题。

技术细节:

  • 身份验证流程利用 Teams JavaScript SDK (teams-js) 进行 SSO。
  • 我担心此问题是否源于我的身份验证流程中潜在的配置错误、即将过渡到新版本的 Teams,或者可能是由于使用了过时的 Teams SDK 版本(teams-js 和 team-fx)。
  • “@microsoft/teams-js”:“^1.11.0”,“@microsoft/teamsfx”:“^0.5.0”是我现在使用的库的版本。

请求帮助:我寻求有关诊断和解决这些 SSO 身份验证错误的指导。深入了解此问题是否与我的身份验证流程、即将进行的 Teams 平台更新或可能需要更新 Teams SDK 版本有关,将非常有价值。任何 社区分享的建议或类似经验将极大地帮助解决此问题。预先感谢您的支持。

Error Image as microsoft teams response

代码片段;

function initializeTeamsSdk(): Promise<void> {
    return new Promise((resolve, reject) => {
        microsoftTeams.initialize(() => {
            console.log("Teams SDK initialized successfully.");
            resolve();
        });
    });
}

async function AuthenticateWithSSO(): Promise<IAccessTokenRequestBody> {
    await initializeTeamsSdk(); 
    return new Promise((resolve, reject) => {
        microsoftTeams.authentication.getAuthToken({
            successCallback: (token: string) => {
                try{
                    const decoded = jwtDecode(token);
                    const requestBody = {
                        tenantId: decoded.tid,
                        ssoToken: token,
                        clientId: decoded.aud,
                    };

                    SetClientId(requestBody.clientId);
                    SetSsoToken(requestBody.ssoToken);
                    SetTenantId(requestBody.tenantId);

                    microsoftTeams.appInitialization.notifySuccess();
                    resolve(requestBody);
                }catch(error){
                    reject("Token decoding failed");
                }
            },
            failureCallback: (error: string) => {
                microsoftTeams.appInitialization.notifyFailure({
                    reason: microsoftTeams.appInitialization.FailedReason.AuthFailed,
                    message: error,
                });
                    reject(error);
            },
            resources: [process.env.SSO_TAB_APP_URI as string],
        });
    });
}

我尝试从微软服务器获取 sso 令牌,但在微软团队环境的开放扩展期间未能检索到它,如上所述。我希望检索 sso 令牌并验证用户是否拥有许可证或不想打开应用程序,但在流程开始时,由于 sso 问题的响应,我无法成功加载应用程序。

javascript reactjs typescript single-sign-on microsoft-teams
1个回答
0
投票

我的应用程序中也有这个问题。有谁可以帮助我吗?

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