如何在没有 AAD 访问权限的 Microsoft Team Chat Bot 中实现用户身份验证?

问题描述 投票:0回答:1

我正在使用 MS Bot Framework SDK 4 开发一个机器人。我在 Bot API 中公开了一个名为 POST api/messages 的独特端点。

[Route("api/messages")]
[ApiController]
public class BotController : ControllerBase
{
    private readonly IBotFrameworkHttpAdapter _adapter;
    private readonly IBot _bot;

    public BotController(IBotFrameworkHttpAdapter adapter, IBot bot)
    {
        _adapter = adapter;
        _bot = bot;
    }

    [HttpPost, HttpGet]
    public async Task PostAsync()
    {
        // Delegate the processing of the HTTP POST to the adapter.
        // The adapter will invoke the bot.
        await _adapter.ProcessAsync(Request, Response, _bot);
    }
}

可以看到,该端点暴露在互联网上,并且没有身份验证机制验证是否允许用户不访问 api/消息。

阅读 Bot 框架文档 我读到:

当您通过 Azure 机器人资源在 Azure 中注册机器人时,Azure 创建 Azure Active Directory (Azure AD) 注册应用程序。 此应用程序有一个应用程序 ID (MicrosoftAppId) 和一个客户端密钥 (微软应用程序密码)。

问题是由于安全策略的原因,我无法使用在 Portal Azure 上创建 Bot Service 时创建的 AAD(Azure Active Directory)。

我已经阅读了几篇有关在机器人上实现身份验证的文档,但据我从文档中了解到,我需要访问 AAD 才能实现其中一些。

构建具有 SSO 身份验证的机器人

向机器人 SDK v4 添加身份验证

为您的应用和消息扩展应用启用 SSO

在您的机器人中为自适应卡通用操作启用 SSO

使用第三方 OAuth 提供商启用身份验证

有没有办法在不使用 ADD 的情况下向 POST api/消息添加一些身份验证?需要遵循一些说明或文档参考?谢谢。

c# azure asp.net-core authentication botframework
1个回答
0
投票

首先,我们现在正在尝试将 Azure Bot 集成到 Microsoft Teams 中,所以恐怕 AAD 是这里最好的身份验证机制。

让我们回到创建Azure Bot Service时创建的AAD应用程序。创建此应用程序不是为了用户身份验证,而是为了“服务到服务”身份验证。您可以将其理解为,机器人服务也是 botframework.com 租户中的应用程序主机,并且 Azure 机器人服务是在您自己的租户中创建的,因此您为此身份验证创建了一个 Azure AD 应用程序。但我们没有这部分的文档或解释。 然后当我们想要“限制”用户与聊天机器人交互时,例如要求机器人调用 ms graph api 代表该用户查询用户邮件,那么我们需要身份验证机制来让用户登录,这里是它的

官方文档

,这是它的官方示例 最后一个是关于

[Route("api/messages")]

端点。此终结点不是为 Teams 应用程序设计的,而是为 Azure Bot 服务设计的。我们需要在 Azure Bot 服务实例内的配置边栏选项卡中设置端点,例如

xxx.azurewebsites.net/api/messages
。同时,当我们通过团队聊天对话框与机器人交谈时,我们也无法控制团队客户端调用此 api。因此,尝试保护这个 api 是没有意义的。此 api 是为 Bot 服务设计的,而您的 Bot 服务已通过您创建的 azure AD 应用程序进行了身份验证。
这是我对团队机器人的想法。只是我自己的想法,机器人服务监视团队通道或其他通道中收到的聊天消息,然后通过 Azure 机器人服务实例内的端点集将消息发送到应用程序。您的机器人应用程序通过 api 获取消息并生成正确的消息作为回复。回复可能会通过聊天对话框 ID 发送到团队聊天对话框。

© www.soinside.com 2019 - 2024. All rights reserved.