Azure Bot - 从 html 页面隐藏秘密生成 Directline 令牌

Azure Bot - Directline token generation from html page hiding secret

我正在尝试使用来自 html 页面的 Direct Line Channel 解决 azure bot 服务的问题。 html 页中的脚本如下:

index.html

 var directLine = new window.WebChat.createDirectLine({ secret: 'SECRET' });

  directLine.postActivity({
from: { id: 'myUserId', name: 'myUserName' }, // required (from.name is optional)
type: 'message',
text: 'hi'
}).subscribe(
     id => console.log("Posted activity, assigned ID ", id),
     error => console.log("Error posting activity", error)
);

directLine.activity$
.filter(activity => activity.type === 'message')
.subscribe(
     message => console.log("received message ", message)
  );

我发现 API “https://directline.botframework.com/v3/directline/tokens/generate” 秘密可以与令牌交换,但 SECRET 必须在授权 header 中添加。

有没有办法在不使用 MVC 架构的情况下在 html 页面中隐藏 SECRET?或任何其他不暴露秘密密钥的交互方法。

不,没有办法隐藏这个秘密。如果它在网页中,那么任何检查源代码的人都可以访问它。

但是,您不一定非要选择 MVC 设置。您需要做的就是创建一个带有 API 的服务,然后您就可以访问。

如果您查看我之前提供的 的后半部分,我会演示一个简单的设置,我 运行 在本地用于开发目的。从托管网络聊天实例的页面,我调用了我的自定义 /directline/token 端点。附加到我的机器人 index.js 文件的服务获得一个令牌,然后 returns 它返回用于网络聊天。

在生产中,我将 "token server" 放在它自己的文件中,并使用 Web 应用程序进行部署。它 运行s 在服务器的后台保持不可访问(作为文件)但可通过 APIs 访问。只需锁定 API 资源,您就可以开始了。