首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BotBuilder认证多租户

BotBuilder认证多租户
EN

Stack Overflow用户
提问于 2022-05-05 17:16:12
回答 2查看 234关注 0票数 0

我想创建微软BotBuilder 遵循本教程。但与v3相比,这似乎太复杂了。(顺便说一句:从涵盖75%的文章的3种身份验证开始一个教程并不是一个好迹象)

因此,我遵循了EchoBot示例(我选择了MultiTenant,因为我的服务器在外部,而且它似乎是覆盖最广的):

代码语言:javascript
复制
const credentialsFactory = new BotBuilder.ConfigurationServiceClientCredentialFactory({
    MicrosoftAppId: '***',
    MicrosoftAppPassword: '***',
    MicrosoftAppType: 'MultiTenant',
});

const botFrameworkAuthentication = BotBuilder.createBotFrameworkAuthenticationFromConfiguration(null, credentialsFactory);


const onTurnErrorHandler = async (context, error) => { /* for errors */ }
const adapter = new BotBuilder.CloudAdapter(botFrameworkAuthentication);
adapter.onTurnError = onTurnErrorHandler;

问题:

  • 我如何测试一切正常工作呢?isValidAppId()isAuthenticationDisabled()是唯一可用的方法,看起来不错。
  • 我怎样才能得到MicrosoftAppPassword?根据文档,我必须单击manage,然后创建一个value/secret对。我应该使用value吗?还是secret?为什么没有人被命名为password?不管怎么说都不管用..。

为了测试它是否有效,我遵循示例:

  • 设置HTTP POST端点(带有节点-红色)
  • 在Azure Portal配置中声明端点
  • 转到webchat进行测试

我正确地接收了消息,然后尝试执行一些身份验证/parisng(我假设):

代码语言:javascript
复制
await adapter.process(msg.req, msg.res, (context) => {
    /* do some stuff  */
});

但是它失败了,出现了一个非常明显的错误:

代码语言:javascript
复制
Error: 1 validation issue(s)

  Issue #0: custom_error at [[root]]
  Response

我认为,这些错误与身份验证问题有关,因为我不知道如何设置密码。我想我必须通过这个CloudAdapter才能得到一个解析的context并能够发送消息。

编辑07/05/2022:

我在这里使用AppId:

我点击“管理”,但是AppPassword在哪里?

编辑12/05/2022:

使用cURL,我设法验证appID和appPassword (秘密的值(由星星隐藏))。

BotBuilder正在混合通信堆栈(HTTP / WebSocket)和逻辑堆栈(转向会话)。我觉得这是个坏习惯,但我想出了个解决办法:

  • 我使用的是BotFrameworkAdapter而不是CloudAdpater
  • 我叫adapter.processActivity()而不是adapter.process()

适配器仍然希望结束()请求并设置不推荐的值,但它以Node-RED方式工作。context处理多次调用sendActivity() anywhere的所有要求。

EN

回答 2

Stack Overflow用户

发布于 2022-05-06 09:01:48

Stack Overflow用户

发布于 2022-05-06 20:58:37

只要获得密码,当您创建一个新的多租户Azure Bot资源时,应用密码就会进入旁边创建的Azure密钥库。AppId和AppPassword是由Azure随机生成的。您可以在正确的资源组中的Azure门户中的密钥库中获取它们。

如果希望使用CLI手动创建资源并定义自己的密码,则可以为部署机器人使用此docs页面。确保您选择了正确的选项卡。我已经预选了C#和多租户在一个新的资源组为上述链接.

单个租户用于限制bot与同一承租者中Azure资源的连接,而用户分配的托管标识是如果您希望在bot的资源中使用Azure托管标识,而不是为每个资源设置密码的话。

您应该能够简单地将AppId和AppPassword添加到回波机器人示例中并进行部署。

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

https://stackoverflow.com/questions/72131187

复制
相关文章

相似问题

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