Authentication BOT Directline通道用户身份验证

Authentication BOT Directline通道用户身份验证,authentication,botframework,direct-line-botframework,Authentication,Botframework,Direct Line Botframework,我们有一个web应用程序,并启用了直接客户端通道,以便使用directline secret与托管的BOT框架进行通信 链接: 示例代码: BotChat.App({ directLine: { secret: Key }, //dynamically retrieve the logged in user info in your mvc View once the user logged in and pass it on

我们有一个web应用程序,并启用了直接客户端通道,以便使用directline secret与托管的BOT框架进行通信

链接:

示例代码:

BotChat.App({
                directLine: { secret: Key },
                //dynamically retrieve the logged in user info in your mvc View once the user logged in and pass it on
                //and pass thoes info to your bot
                user: { id: '', email: ''   },
                bot: { id: 'testBOT' },
                resize: 'detect'
            }, document.getElementById("divbot"))
这是我的处境: 1) 用户成功登录到应用程序并使用个人帐户进行授权

2) 如何在BOT框架中对用户进行身份验证。用于验证调用应用程序的Directline密码。是否有任何方法可以在BOT框架中安全地对登录用户进行身份验证

多谢各位

还可以阅读有关从密钥获取秘密令牌并用于通信的内容。但不确定如何在javascript中实现

看起来你在MVC网站中嵌入了网络聊天,你不想暴露直连密码(这会阻止任何人将你的机器人放到他们的网站上)。您可以尝试以下方法:

  • 创建一个后端服务,并在该服务中向发出请求,这样可以避免暴露客户端的直接线路机密
  • 在JavaScript客户端上,您可以向该后端服务发出Ajax请求,以获取直连令牌,并在Ajax成功回调函数中使用生成的令牌启动BotChat
  • 在后端服务中启用CORS以允许某些来源,并阻止另一个来源请求访问该后端服务并在网页中添加您的机器人
  • 为了确保后端服务的安全,您可以为其实现请求身份验证

  • 您可以将密钥交换为过期的令牌。以下是一个mvc示例:


    对我来说,现在还不清楚你到底想在这里实现什么。你能试着解释一下这个场景吗?如果你已经在你的网站上对用户进行了身份验证,那么这可能是你正在寻找的反向通道。为什么你要再次对用户进行身份验证?嗨,-我通过简单地传递直接客户端密匙在我的客户端中启用了BOT。如何从我的客户端保护BOT连接,任何人都可以查看源代码并获取密钥。我还阅读了有关从密钥中获取秘密令牌并用于通信的内容。但不确定如何在javascript中实现。我的客户是基于MVC的。谢谢!。我使用客户端脚本在母版页MVC中初始化BOT。我希望给定的示例能够在模型中分配。令牌应该能够很好地满足现有标准,而不会对BOT框架代码进行太多更改。此外,如果用户已经在客户端应用程序中进行了身份验证,我希望在BOT框架中授权用户访问令牌。我们不想在BOT框架中使用登录卡,但需要授权它的逻辑。您有什么建议吗?您可以通过通道数据将令牌传递给bot,并在bot端验证令牌。谢谢你,埃里克。我已经提到了这个例子。但是没有明确的方法使用MVC客户端通过通道数据传递用户身份验证令牌。你介意提供其他参考吗?这里有一个可能有用的例子:谢谢你的建议。我将了解如何使用客户端脚本实现这一点。
    string botChatSecret = ConfigurationManager.AppSettings["BotChatSecret"];
    
    
    var request = new HttpRequestMessage(HttpMethod.Get, "https://webchat.botframework.com/api/tokens");
    
    request.Headers.Add("Authorization", "BOTCONNECTOR " + botChatSecret);
    
    
    using (HttpResponseMessage response = await new HttpClient().SendAsync(request))
    {
    
             string token = await response.Content.ReadAsStringAsync();
    
             Token = token.Replace("\"", "");
    }