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



我试图使用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必须添加到授权标头中。

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

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

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

如果您看一下我之前提供的这个解决方案的后半部分,我将展示一个简单的设置,该设置是我为开发目的在本地运行的。在Web聊天实例所在的页面上,我调用了我的自定义/directline/token端点。附加到我的机器人程序的index.js文件中的服务获得一个令牌,并将其返回以在Web聊天中使用。

在生产中,我将"令牌服务器"放在自己的文件中,并将其与web应用程序一起部署。它在服务器的后台运行,仍然不可访问(作为文件(,但可以通过API访问。只需锁定API资源,您就可以开始了。

最新更新