botframework - MS TEAMS 聊天机器人:我可以将我的 MS Botframework 聊天机器人限制为仅使用我的 MS Teams 租户 ID 而不需要额外的身份验证吗
问题描述
问题陈述:
我们使用 MS Botframework V4、QnA Maker 和 LUIS 创建了一个常见问题聊天机器人。客户的信息安全团队怀疑,如果有人掌握了聊天机器人的MicrosoftAppId,那么任何人都可以在任何其他 MS Teams 订阅上发布聊天机器人,从而造成安全威胁。
条件:客户端不赞成添加额外的身份验证提示,尽管用户已登录 MS Teams,但仍必须登录
询问:
阅读问题陈述后,任何人都可以帮助我提供一种技术/方法,我们可以将 ChatBot 限制为只能从客户组织的 MS 团队中使用,而无需任何额外的身份验证登录提示用户登录
-提前致谢
解决方案
请阅读我的博客文章,了解机器人通信如何工作,以了解请求-响应过程。正如它所解释的那样,虽然响应看起来有点来自机器人的“同步”,但实际上并非如此,而是通过对 Bot Framework 服务本身的回复发送的。为了做到这一点,您的机器人代码(dotnet、node 等)实际上需要两件事 - 应用程序 ID 和应用程序密码,以便在内部进行身份验证。没有这些,没有人可以代表您运行另一个机器人,即使在同一个 ID 上也是如此。请注意,这是一个“常规”机器人场景,不需要用户以任何方式实际登录机器人(例如,仅当您想代表用户访问图表上的资源时才需要这样做,
另外,但也许相关,如果有人确实拥有您的应用程序 ID,他们可能会注册一个应用程序,这会导致更多消息发送到您的机器人(如果您愿意,这是一种“DOS”攻击),但这仍然不会如上所述,使他们能够“充当”您的机器人。[更新:请注意,您的机器人最终仍会响应这些消息,因为它不会知道这不是您自己的 Teams 应用程序。我很难理解为什么有人可能想要这样做。但是,没有人能够开发和托管模拟您的机器人的机器人 - 他们需要 (a) 您的应用程序密码和 (b) 在 Bot Framework 中更改您托管机器人的注册端点]。
因此,尽管仅 App Id 是不够的,但您当然应该尝试保护它(例如 KayVault),尤其是使用应用程序密码。
另外,还可以将您的机器人限制为仅由单个(或一组受限)租户使用。请在MS Teams 应用清单文件租户限制中查看我的回答。
推荐阅读
- java - 使用反向传播的多层神经网络的准确度在 86% 左右正常吗?
- python - 守护程序中的ffmpeg错误
- adsense - 为什么我的 google adsense 广告会在检查控制台中创建错误?
- c# - 使用 EF 和 SQLite 的 AddOrUpdate 语法
- server - 在服务器上安全地运行用户提供的纯函数
- java - Google Play 付款会在 72 小时后退还
- android - android 模拟器 (macOS) 上未连接网络
- java - 将带有“SHA512CryptoServiceProvider”的 C# 代码转换为 Java
- c - 数组存储在内存中的什么位置?
- java - 如何从 OPTIONS 中禁用或删除允许响应标头?