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

SSO权限提示点击「继续」无响应问题求助

Teams Bot OAuthPrompt点击Continue无响应排查方案

以下是针对问题的具体排查要点,按优先级排序:

1. 补全OAuthPrompt的SSO关键配置

当前代码中的OAuthPrompt未配置tokenExchangeUrl参数,这是Teams SSO令牌交换的核心配置项。缺少该参数时,用户点击Continue后Teams无法完成令牌交换,导致流程卡在OAUTH_PROMPT。

修改ssoDialog.js中的OAuthPrompt配置:

this.addDialog(new OAuthPrompt(OAUTH_PROMPT, {
    connectionName: process.env.connectionName,
    text: 'Please Sign In',
    title: 'Sign In',
    timeout: 300000,
    // 添加SSO令牌交换路由,使用Bot Framework标准端点
    tokenExchangeUrl: 'api/botframework/auth/v2/token'
}));

2. 确认令牌交换中间件的有效性

  • 检查TeamsSSOTokenExchangeMiddleware的connectionName是否与Azure门户中配置的Bot连接名称完全一致(大小写敏感)。
  • 确保中间件加载顺序正确:TeamsSSOTokenExchangeMiddleware必须在自定义中间件(如TranslatorMiddleware)之前添加到adapter,当前代码中的顺序是正确的,无需调整,但需确认无其他中间件拦截令牌交换请求。

3. 验证Bot端点的回调接收能力

  • 确认Bot的/api/messages端点可正常接收POST请求,无防火墙、反向代理或路由规则拦截令牌交换的回调请求。
  • 检查ConfigurationBotFrameworkAuthentication是否正确加载了MicrosoftAppId和MicrosoftAppPassword环境变量,这两个参数是验证令牌交换请求合法性的必要条件。

4. 检查对话状态的持久化逻辑

  • 确认DialogBot的onTurn方法中正确保存了对话状态和用户状态,示例代码需包含:
    await this.conversationState.saveChanges(context, false);
    await this.userState.saveChanges(context, false);
    
    若状态未及时保存,OAuthPrompt的流程上下文会丢失,导致后续步骤无法触发。
  • 开发环境使用MemoryStorage是可行的,但生产环境需替换为持久化存储(如Azure Blob Storage),避免多实例部署时状态不一致。

5. 复查Azure AD应用的重定向URI

确保Azure AD应用的重定向URI已设置为Bot Framework标准地址:https://token.botframework.com/.auth/web/redirect,这是用户授权后回调的必经路径,配置错误会导致授权流程中断。

6. 验证Teams客户端兼容性

建议使用最新版本的Teams客户端(桌面端、网页端或移动端)测试,旧版本可能存在SSO令牌交换的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:42:48