首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保护从微软团队到机器人的流量?

保护从微软团队到机器人的流量?
EN

Stack Overflow用户
提问于 2016-11-03 17:58:59
回答 4查看 1.4K关注 0票数 0

如何保护从微软团队到机器人的流量,以便机器人可以回答公司特定的问题/讨论,而不需要以匿名WebAPI的形式公开?

从Bot框架方面来说,将bot集成到Teams很容易,但目前还没有关于如何将bot隔离到特定企业的文档。

商业案例-我们想要建立企业特定的机器人,它可以回答问题只特定于特定的企业从哪里来的问题。从技术上讲,这可以通过仅通过应用程序访问SharePoint或Microsoft Graph来完成,但我们不能在互联网上匿名公开这种WebAPI。

这方面有什么设计模式吗?

EN

回答 4

Stack Overflow用户

发布于 2017-05-18 10:49:46

现在这是可能的,实际上我已经用CoffeeScript和Node.JS为Hubot实现了它,下面描述的是它在JavaScript/Node.JS中的样子。

定义一个环境变量,在设置该变量时,它会筛选特定的租户ID OFFICE_365_TENANT_FILTER。(这样做是在生产中启用此功能的一种方便方法,但在开发期间不一定如此。)

对于微软团队,可以在此处找到Office365租户ID:session.message.sourceEvent.tenant.id

最优雅的方法是检查作为中间件的租户ID,如果设置了筛选器但不匹配,则放弃对消息的进一步处理:

代码语言:javascript
复制
// [...]
var connector = new builder.ChatConnector({
  appId: process.env.MICROSOFT_APP_ID,
  appPassword: process.env.MICROSOFT_APP_PASSWORD
});

var bot = new builder.UniversalBot(connector);

// Middleware to check for OFFICE_365_TENANT_FILTER and only continue processing if it matches. 
// If OFFICE_365_TENANT_FILTER is not specified, do nothing.
bot.use({
  botbuilder: function(session, next) {
    var targetTenant = typeof(process.env.OFFICE_365_TENANT_FILTER) !== "undefined" ? process.env.OFFICE_365_TENANT_FILTER : null;
    var currentMsgTenant = typeof(session.message.sourceEvent.tenant) !== "undefined" ? session.message.sourceEvent.tenant.id : null;
    if (targetTenant !== null) { 
      if (targetTenant == currentMsgTenant) {
        next();
      }
      else {
        console.log("MS Teams: Attempted access from a different Office 365 tenant (" + currentMsgTenant + "): message rejected");
      }
    }
    else {
      next();
    }
  }
});
// [...]
票数 6
EN

Stack Overflow用户

发布于 2018-04-20 03:59:02

以下是如何在C#中执行此操作,SDK公开了允许您将此操作过滤器添加到控制器类的TenantFilter,如下所示。

代码语言:javascript
复制
using Microsoft.Bot.Connector.Teams;

namespace Microsoft.Teams.Samples.HelloWorld.Web.Controllers
{
    [BotAuthentication, TenantFilter]
    public class MessagesController : ApiController
    {
        [HttpPost]
        public async Task<HttpResponseMessage> Post([FromBody] Activity activity)

租户筛选器将获取需要放置在web.config中的tenantIds的逗号分隔列表

代码语言:javascript
复制
<configuration>
  <appSettings>
    <!--other settings-->
    <add key="AllowedTenants" value="*TenantId1,TenantId2,...*"/>

Find your Office 365 tenant ID向您展示了如何通过PowerShell来实现这一点。

票数 2
EN

Stack Overflow用户

发布于 2016-11-04 03:17:25

目前不可能立即知道与机器人聊天的用户的租户id,除非机器人首先对用户进行认证。请看一下AuthBot。它说明了如何向用户发送登录链接并根据AAD对用户进行身份验证。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40398565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档