我们现在遇到的问题是,一旦我们从网聊中单击OAuthPrompt中的Login
按钮,SSO就会接管并发生登录,但是当流程返回到网聊时,什么也没有发生,僵尸程序挂起。
在我们正在构建的Microsoft Bot Framework(v4)机器人中,我们实现了此博客here和here中推荐的新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源代码
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就会接管并且发生登录,但是当流程返回到网聊时,...
loginStep