BOT直接通道用户认证

时间:2018-04-24 15:26:09

标签: authentication botframework direct-line-botframework

我们有一个Web应用程序,并允许直接客户端通道使用直接密钥与托管BOT框架进行通信。

链接:BOT - Directline webchat

示例代码:

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框架中登录用户的身份验证?

谢谢

2 个答案:

答案 0 :(得分:1)

  

还了解了如何从密钥中获取秘密令牌并用于通信。但不确定如何在javascript中完成。

您似乎在自己的MVC网站中嵌入了网络聊天,并且您不希望暴露直线密码(这会阻止任何人将您的机器人放在他们的网站上)。您可以尝试这种方法:

  1. 创建后端服务,并向该服务中的generate Direct Line token发出请求,这可以避免从客户端暴露直接线路秘密。
  2. 在您的JavaScript客户端上,您可以向该后端服务发出Ajax请求以获取Direct Line令牌,并在Ajax成功回调函数中使用生成的令牌启动BotChat。
  3. 在后端服务中启用CORS以允许某些来源并阻止其他来源请求访问该后端服务并在网页中添加您的机器人。
  4. 为了保护您的后端服务,您可以为它实现请求身份验证。

答案 1 :(得分:0)

您可以将密钥替换为过期的令牌。这是一个mvc示例:https://github.com/EricDahlvang/TokenBotExample/tree/master/TokenBotExample

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("\"", "");
}