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
相关产品推荐
相关产品推荐

