【问题标题】:No token response returned when using Trusted Origin in Direct Line OAuth在 Direct Line OAuth 中使用 Trusted Origin 时未返回令牌响应
【发布时间】:2019-06-01 01:53:25
【问题描述】:

在使用带有 OAuthPrompt(带 ADB2C 的通用 Oauth2)和瀑布对话框的可信来源时,我似乎遇到了问题。第一步是确保用户通过身份验证,下一步从步骤上下文结果中收集令牌响应并继续。使用魔法代码,这一切都可以正常工作。

public async Task<DialogTurnResult> EnsureUserAuthenticated(WaterfallStepContext sc, CancellationToken cancellationToken)
{
     return await sc.BeginDialogAsync(nameof(OAuthPrompt), null, cancellationToken);
}

public async Task<DialogTurnResult> AskForDateTime(WaterfallStepContext sc, CancellationToken cancellationToken)

{
     var tokenResponse = sc.Result as TokenResponse;
     ...
}

我已在本地和 Azure 中尝试过此操作,并且在身份验证浏览器窗口关闭后,没有任何反应。您必须重新触发瀑布对话框才能获得在第二步中返回的令牌响应。

这个机器人正在使用 CDN WebChat 浮出水面。

有什么想法可能会出错吗?

【问题讨论】:

  • 只是为了确认复制:这是否直接从 EnsureUserAuthenticated 到 AskForDateTime?
  • 是的,应该。禁用受信任的来源时会这样做。如果我再次单击相同的自适应卡按钮以重新触发相同的流程,AskForDateTime 确实会在 EnsureUserAuthenticated 之后立即被调用 - 我猜它此时已缓存了令牌。 var steps = new WaterfallStep[] { EnsureUserAuthenticated, AskForDate, AskToProvideShowTitle, AskForShowTitle, ConfirmWithUser, FinishDialog, };

标签: .net botframework direct-line-botframework


【解决方案1】:

这个链接帮助了我:https://blog.botframework.com/2018/09/25/enhanced-direct-line-authentication-features/

我的理解是,默认情况下,WebChat 是安全的,因此 OAuthCard 登录链接不会导致“验证码”响应。 模拟器使用 WebChat 控件来显示与机器人的对话。

我们可以在模拟器中模拟魔法令牌体验。为此,请确保在模拟器的设置中检查了“使用 OAuthCards 的登录验证码”。如果它在模拟器中运行,则代码非常好。

【讨论】:

  • 这一切都在没有启用可信来源的情况下工作(魔术代码)。据我了解,在发送到令牌请求 REST API 的 json 有效负载之外,机器人处理令牌响应接受的方式没有任何区别。
猜你喜欢
  • 1970-01-01
  • 2018-02-24
  • 2017-09-16
  • 2012-07-22
  • 2021-10-27
  • 2021-11-21
  • 1970-01-01
  • 2019-10-07
  • 2021-03-12
相关资源
最近更新 更多