WebChat OAuth SSO在登录后不会继续对话框流程

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

我们现在遇到的问题是,一旦我们从网聊中单击OAuthPrompt中的Login按钮,SSO就会接管并发生登录,但是当流程返回到网聊时,什么也没有发生,僵尸程序挂起。

在我们正在构建的Microsoft Bot Framework(v4)机器人中,我们实现了此博客herehere中推荐的新SSO OAuth功能。

1]我们最初有一个<iframe>设置,提示输入Magic代码。

2)然后,我们更改了<iframe>设置,并通过更改网络聊天的源代码以将bot机密交换为令牌来迁移到DirectLine频道(我们还以[-C0]格式传递了唯一的userId)

3)我们将该令牌向下传递给源自CDN的dl_guid()方法-window.WebChat.createDirectLine

4)我们拥有具有正确范围的AADV2安装程序,并且我们还为该AAD配置了漫游器。

5)我们还为DirectLine通道启用了https://cdn.botframework.com/botframework-webchat/latest/webchat.js,并将Enhanced Authentication options开发环境和托管服务器环境添加到受信任的来源列表

6)我们还在浏览器中启用了第三方Cookie

屏幕截图

<<

Bot源代码

这是我们正在使用的(AuthScript)的AuthDialog中的代码段

localhost

[如果我们看一下代码,该机器人实际上应该输入export class AuthDialog extends BaseDialog {
  constructor(
    private dialogContextUtils: DialogContextUtils,
    private userManager: UserManager,
    appConfig: AppConfig
  ) {
    super(AUTH_DIALOG_ID, AUTH_WATERFALL_DIALOG, [
      step => this.promptStep(step),
      step => this.loginStep(step)
    ]);

    this.addDialog(
      new OAuthPrompt(OAUTH_PROMPT, {
        connectionName: appConfig.connectionName,
        text: 'Please login',
        title: 'Login',
        timeout: 300000
      })
    );
  }

  private async promptStep(step: WaterfallStepContext) {
    return await step.beginDialog(OAUTH_PROMPT);
  }

  private async loginStep(step: WaterfallStepContext) {
    const tokenResponse = step.result;

    if (tokenResponse) {
            await step.context.sendActivity(`Hi`);   
    }

    return await step.endDialog(tokenResponse);
  }
,但实际上不是(通过设置断点对其进行尝试)

非常感谢您对此问题的帮助。

我们现在遇到的问题是,一旦我们从网聊中单击OAuthPrompt中的“登录”按钮,SSO就会接管并且发生登录,但是当流程返回到网聊时,...

oauth botframework direct-line-botframework
1个回答
0
投票
我想出了这个问题。我们必须在中间件中添加此行代码,然后一切正常]

loginStep

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