Bot Framework 身份验证基础知识

适用于:SDK v4

通常,机器人必须代表用户访问受保护的资源,例如电子邮件帐户。 为执行该操作,必须基于用户凭据向机器人“授权”。 在此之前,用户必须先进行“身份验证”。 机器人必须是已知实体,也就是说,它必须在 Azure AI 机器人服务上下文中进行身份验证。 这发生在授权机器人代表用户进行操作之前。

让我们从 Bot Framework 身份验证上下文的鸟瞰视图开始,看看能否理清这个捆绑包。

机器人身份验证上下文

  • 通过“Azure 机器人”资源在 Azure 中注册机器人时,Azure 会创建 Microsoft Entra ID 注册应用程序。 此应用程序具备应用 ID (MicrosoftAppId) 和客户端密码 (MicrosoftAppPassword)。 在机器人配置文件中使用这些值,如下所述。

  • Microsoft Entra ID 是一个云标识服务,你可以通过它生成应用程序,以便使用 OAuth 2.0 之类的行业标准协议安全地登录 users。 创建 Active Directory 应用程序,并使用其 app IDpassword 来选择 identity provider 并生成 authentication 连接。 将此连接添加到机器人资源。 同时在机器人配置文件中添加该连接,如下所述。

  • 机器人由其 Azure 机器人资源“应用 ID”和“密码”标识。 在机器人的配置文件、机密或密钥管理器中添加相关值。 还要添加连接名称。 机器人使用基于应用 ID 和密码的“令牌”访问受保护的资源。 机器人还使用基于身份验证连接的不同“令牌”访问用户的受保护资源。

机器人身份验证和授权

以下是对机器人进行身份验证并授权其访问用户受保护资源的主要步骤:

  1. 创建机器人通道注册应用程序。
  2. 将注册应用 ID 和密码添加到机器人配置文件。 这允许对机器人进行身份验证,以访问受保护的资源。
  3. 创建 Microsoft Entra ID 应用程序,以选择标识提供者来对用户进行身份验证。
  4. 创建身份验证连接,并将其添加到通道注册设置。
  5. 将连接名称添加到机器人的配置文件。 这允许对机器人进行授权,以访问用户的受保护资源。

有关完整示例,请参阅向机器人添加身份验证

最佳做法

  • 保持 Microsoft Entra ID 应用注册限制在其原始的服务到服务应用程序用途。
  • 为任何用户到服务身份验证创建一个额外的 Microsoft Entra ID 应用,以对禁用身份验证连接、滚动机密或重新将 Microsoft Entra ID 应用与其他应用程序一起使用进行更有限的控制。

如果还使用 Microsoft Entra ID 注册应用进行身份验证,你会遇到的一些问题包括:

  • 如果附加到 Microsoft Entra ID 应用注册的证书需要续订,会影响已使用该证书进行其他 Microsoft Entra ID 服务身份验证的用户。
  • 一般情况下,它会为机器人的所有身份验证相关活动创建单点故障和控制。

以下文章提供有关在 Bot Framework 内执行身份验证的详细信息和示例。 首先查看身份验证类型,然后查看标识提供者

项目 说明
身份验证类型 介绍两个 Bot Framework 身份验证类型及其使用的令牌。
标识提供者 介绍标识提供者的使用。 你可以通过它们生成应用程序,以便使用 OAuth2.0 之类的行业标准协议安全地登录用户。
用户身份验证 介绍用户的身份验证和相关令牌,以授权机器人代表用户执行任务。
单一登录 介绍用于多个受保护资源的访问的单用户身份验证。
使用 Azure 注册机器人 演示如何使用 Azure AI 机器人服务注册机器人。
Bot Framework 安全指南 介绍通用安全性和适用于 Bot Framework 的安全性。
向机器人添加身份验证 演示如何创建机器人通道注册、创建身份验证连接和准备代码。
向机器人添加单一登录 演示如何向机器人添加单一登录身份验证。