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

Teams Bot三种SSO实现方案失效,求问题排查及替代方案

Teams Bot SSO实现问题求助

前置检查确认

  • 已对照官方文档完成应用注册及配置校验
  • 已将token.botframework.com、graph.microsoft.com、*.ngrok-free.app、*.ngrok.io、[my-domain].asse.devtunnels.ms添加至清单文件的有效域名列表

三种尝试方案及具体问题

1. 使用botbuilder-dialogs中的OAuthPrompt

参考实现:官方Bot对话SSO快速启动示例(JS版本)
问题表现:

  • 调用beginDialog(OAUTH_PROMPT)后无响应,最终请求超时,未收到OAuthPrompt返回结果
  • 未显示常规的“Continue”登录按钮
  • 在Azure门户的“Test in Web Chat”环境中可正常运行

核心代码片段:

async promptStep(stepContext) {
    try {
        return await stepContext.beginDialog(OAUTH_PROMPT);
    } catch (err) {
        console.error(err);
    }
}

this.addDialog(new OAuthPrompt(OAUTH_PROMPT, {
    connectionName: process.env.connectionName,
    text: 'Please Sign In',
    title: 'Sign In',
    timeout: 300000
}));

async loginStep(stepContext) {
    const tokenResponse = stepContext.result;
    if (!tokenResponse || !tokenResponse.token) {
        await stepContext.context.sendActivity('Login was not successful please try again.');
    } else {
        const client = new SimpleGraphClient(tokenResponse.token);
        const me = await client.getMe();
        const title = me ? me.jobTitle : 'UnKnown';
        await stepContext.context.sendActivity(`You're logged in as ${me.displayName} (${me.userPrincipalName}); your job title is: ${title}; your photo is: `);
        const photoBase64 = await client.GetPhotoAsync(tokenResponse.token);
        const card = CardFactory.thumbnailCard("", CardFactory.images([photoBase64]));
        await stepContext.context.sendActivity({attachments: [card]});
        return await stepContext.prompt(CONFIRM_PROMPT, 'Would you like to view your token?');
    }
    return await stepContext.endDialog();
}

2. 使用CardFactory中带OAuthCard的AdaptiveCard

参考实现:官方Bot AdaptiveCard SSO示例
问题表现:

  • 返回的token无法通过Microsoft Graph API验证,报错invalid audience
  • 未弹出SSO登录窗口(与OAuthPrompt表现一致)
  • 已确认应用注册的“API Permission”中配置了Graph User.Read权限
  • 即使将环境变量connectionName设置为Bot OAuth连接中不存在的“xxxx”,仍会返回token

3. 使用@microsoft/teamsfx中的TeamsBotSsoPrompt

参考实现:官方Teams Toolkit Bot SSO示例
问题表现:

  • 与OAuthPrompt类似,调用后无tokenResponse返回,只能向用户返回错误信息,未收到预期的token响应

求助需求

  • 排查上述三种方案失败的可能原因
  • 提供其他可行的Teams Bot SSO实现方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:19:55