sharepoint - 如何在 SharePoint Online 中安全地集成 WebChat/Directline
问题描述
尝试在 SharePoint 在线页面上部署使用 MS bot framework v4.0 开发的机器人。用户需要登录 SharePoint 才能访问 bot,因此无法在 bot 级别添加身份验证,因为用户必须登录两次,这将导致用户体验不佳。
集成是在通过使用网络聊天通道“安全密钥”调用网络聊天机器人连接器 API 获取的令牌的帮助下完成的。遵循文档中的选项 1 。
问题
SharePoint 作为客户端应用程序构成了通道“安全密钥”暴露的威胁,即它可以在浏览器的开发人员工具中获取,并可用于将我们的机器人集成到他们的网站上。
我已经试过了
- 缩小 javascript 并将其添加到 Web 部件,这使得阅读“安全密钥”变得困难,但并非不可能。
- Single Sigh-On(SSO),SSO 在机器人级别没有 OAutCard 是不可能的,所以尽量避免它。
- 创建一个触发器/函数应用程序以隐藏 bot 连接器休息调用并仅公开令牌,但它需要一些额外的资源成本。
- 我没有找到将 SharePoint 登录的用户上下文或令牌从 SharePoint 传递给机器人的方法。
期待
- 保护通道“安全密钥”,使其无法在开发人员工具中访问。或者
- 找到一种将 SharePoint 登录的用户上下文或令牌从 SharePoint 传递到机器人并在机器人端进行验证的方法。或者
- 通过在线 SharePoint 中的免费触发器隐藏对机器人连接器 API 的其余调用。
也欢迎任何其他解决方案或建议。
解决方案
无法在 SPFx 中获取访问令牌。我在 SPO/SPFx 中找到的唯一解决方案是利用 SPFx 为机器人提供用户上下文,并通过机器人中的仅应用程序图形应用程序进行调用。您可以(理论上)添加代码逻辑以使用该上下文(用户名、站点名称、Web 名称)限制对图形/SharePoint 的调用等。
推荐阅读
- assembly - NASM 中的细分市场?
- python - 在 SQL Server 作业中将 BigQuery 连接到 Python
- c - 如何在 EBPF 程序中使用 bpf_probe_read() 复制可变长度数据?
- java - 在清单中添加“tools:node=”replace”这一行后,Firebase crashlytics 未得到报告
- html - 多个 owl-carousel 与单个分页
- flutter - 如何从字符串数组中对单选按钮列表进行分组。单击时单选按钮指向所有项目。在所有项目中选择单选列表磁贴
- tomcat - Windows Server:TomCat 作为服务运行,没有 Internet 连接
- arrays - Bash 脚本:比较内联数组中的字符串与使用 mapfile 导入的数组
- flutter - 颤振模型不适用于不同的响应
- python - 使用“numpy.ndarray”更有效的点积