首页 > 解决方案 > AAD 阻止机器人

问题描述

我正在 Microsoft BotFramework 中实现一个简单的机器人。我已将其部署在 Azure 上。出于多种原因,我希望让托管机器人的应用程序服务使用 AAD 身份验证。但是,这样做我似乎使机器人无法使用。


这是我的上下文

我有 bot - 我们称之为ChatBot。我有我的应用服务;聊天机器人

该应用程序使用 Build and Release 通过 Visual Studio Teams Services Git 成功部署。

我使用以下脚本修改了“default.htm”文件以在网页上显示我的机器人:

<span class="skype-button bubble" data-bot-id="MyBotID" data-color="#ffffff"></span>
<span class="skype-chat" data-bot-id="MyBotID" data-color-message="#ffffff" data-show-header="true" data-can-upload-file="false"></span>

这取自Skype for Developers,修改了 BotID。

如果没有为聊天机器人服务启用 AAD,我可以按预期与 Azure 网站上的嵌入式聊天机器人进行通信。但是,当我启用 AAD 时,系统会要求我登录(如我所料)。网站加载后,机器人会正常显示。然后聊天窗口加载我在 Azure 上分配给机器人的图标,并在聊天窗口标题中显示机器人的名称。但是,当我与机器人聊天时,它显示“机器人正在响应”消息,然后没有收到任何消息。

这很奇怪,因为图标+标题的加载似乎意味着建立了连接,但无法接收用户的消息(或者可能能够接收,但无法发送?)。当我再次为应用服务禁用 AAD 时,我能够很好地获得机器人响应。因此,与 AAD 相关的是禁止部分通信。

很抱歉,如果很明显,但我错过了什么吗?为应用服务启用 AAD 是否对嵌入式脚本或启用与消息传递端点的通信有影响?

提前致谢。

编辑:我想澄清一下,在测试之后,我可以确认我无法发送消息:Azure 中的“网络聊天测试”选项给了我一个“错误 - 重试?” 当我尝试发送消息时,我的频道的“最近的问题”报告了一个数字错误,上面写着:

将此消息发送到您的机器人时出错:HTTP 状态代码未经授权

我显然得到了 401,因为 AAD 没有为机器人进行身份验证,尽管应用程序服务明确进行了身份验证。为什么是这样?

标签: c#azureazure-active-directorybotframework

解决方案


推荐阅读