【问题标题】:Azure Bot Authentication from different machines来自不同机器的 Azure Bot 身份验证
【发布时间】:2020-02-18 06:33:34
【问题描述】:

我正在使用示例 Azure MSGraph Bot 身份验证 (https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-authentication?view=azure-bot-service-4.0&tabs=csharp),没有任何代码更改(仅更改 APP id 和连接名称)。 我有一个带有 WebChat 示例的 html 页面,在 Azure 门户的后面,我有 MSGraph 身份验证。以下是错误的步骤:

  1. 我已将我的机器人部署到 Azure 并使用 WebChat 创建了一个 html 页面
  2. 我在WebChat窗口登录,bot返回我的域名,这里一切正常
  3. 如果我将在第二台机器上打开与机器人相同的页面,我希望另一个用户会再次看到身份验证对话框。但是我从第一台机器上看到了我自己的凭据,没有任何身份验证过程。
  4. 如果我在第二台计算机上单击“注销”并尝试登录,我会看到第二个用户的域名 - 正如预期的那样。因此身份验证过程运行良好,机器人知道谁在尝试登录。

换句话说,我的身份验证会话在其他浏览器和其他机器上为其他域用户保持活动状态。我怎样才能防止这种情况发生?

【问题讨论】:

  • 你是如何发起网络聊天的?您能否在最初的问题中分享您的 Javascript 代码。我的第一个猜测是您为每个用户使用相同的用户 ID。
  • @Mick,我根本没有使用用户 ID:window.WebChat.renderWebChat( { directLine: window.WebChat.createDirectLine({ token: 'token here' }), userID: 'YOUR_USER_ID', username: 'Web Chat User', locale: 'en-US', botAvatarInitials: 'WC', userAvatarInitials: 'WW' } 我在这里隐藏了我的令牌,其他所有内容都与我的 html 页面中的完全一样。

标签: azure botframework


【解决方案1】:

(...) 如果未指定 userID,则默认为随机用户 ID。不建议多个用户共享同一个用户 ID;他们的用户状态将被共享。 (API documentation)

您将用户 ID 设置为 YOUR_USER_ID,这意味着状态将在所有用户之间共享。这会导致您出现问题,并且在您对用户进行身份验证时存在安全风险。

删除代码中声明userID 的行,如下例所示。如果没有设置userID,则默认为随机用户ID。

   window.WebChat.renderWebChat(
            {
               directLine: window.WebChat.createDirectLine({
                  token: 'YOUR_DIRECT_LINE_TOKEN'
               }),
               userID: 'YOUR_USER_ID', <!-- REMOVE THIS LINE -->
               username: 'Web Chat User',
               locale: 'en-US',
               botAvatarInitials: 'WC',
               userAvatarInitials: 'WW'
            },
            document.getElementById('webchat')
         );

【讨论】:

    猜你喜欢
    • 2016-06-04
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2014-11-13
    相关资源
    最近更新 更多