category
在Bot Framework中,存在两大类身份验证:机器人身份验证和用户身份验证。每个都有一个关联的令牌,允许访问安全的资源。下图显示了bot和用户身份验证中涉及的元素。
说明机器人令牌和用户令牌之间区别的图。
在该图中:
- Host Platform是机器人托管平台。它可以是Azure或您选择的任何主机平台。
- 机器人连接器服务【Bot Connector Service】促进了机器人和通道之间的通信。它将从通道接收到的消息转换为活动对象,并将其发送到机器人的消息传递端点。同样,它将从机器人接收到的活动对象转换为通道可以理解的消息,并将其发送到通道。
- Bot Adapter是默认的Bot Framework适配器。它
- 将JSON有效负载转换为活动对象。
- 创建转弯上下文【turn context】并将活动对象添加到其中。
- 运行中间件(如果有的话)。
- 将转弯上下文转发给机器人。
笔记当使用自定义通道适配器时,适配器本身执行Bot连接器服务和默认Bot适配器所执行的任务。此外,它还为相关的web挂钩API提供身份验证机制。例如,请参阅使用Slack适配器将机器人连接到Slack。
Bot身份验证
机器人程序由其MicrosoftAppID和MicrosoftAppPassword标识,这些ID和密码保存在机器人程序的设置文件(apps_(.NET)、.env(JavaScript)、config.py(Python))中,或保存在机密或密钥管理器中。有关更多信息,请参阅MicrosoftAppID和MicrosoftAppPassword。
当您在Azure门户中注册机器人时,Azure会创建一个Microsoft Entra ID注册应用程序。如果使用Bot Framework CLI,则必须专门执行一个步骤来创建Microsoft Entra ID注册。此注册具有应用程序ID(MicrosoftAppID)和客户端密码(MicrosoftAppPassword)。Azure使用这些值生成一个令牌,机器人可以使用该令牌访问安全资源。
当通道通过bot Connector服务向机器人发送请求时,它会在请求的Authorization标头中指定一个令牌。机器人通过验证令牌的真实性来验证来自bot Connector服务的呼叫。
当机器人通过机器人连接器服务向通道发送请求时,它必须在请求的授权标头中指定令牌。所有请求都必须包含访问令牌,该令牌由Bot Connector服务验证以授权请求。
所描述的操作由Bot Framework SDK自动执行。
有关更多信息,请参阅REST API文档,了解如何验证从Bot连接器服务到机器人的请求,以及如何验证从机器人到Bot连接器的请求。
通道
通常,通道通过bot Connector服务与机器人通信,因此通常适用之前的身份验证原则。某些通道和功能具有独特的身份验证考虑因素。
直线电话
除了标准支持的通道外,客户端应用程序还可以使用Direct Line通道与机器人通信。
客户端应用程序通过使用从Azure门户中的Direct Line通道配置页面获得的密钥,或者更好的是,通过使用在运行时获得的令牌,对Direct Line(版本3.0)的请求进行身份验证。机密或令牌在每个请求的Authorization标头中指定。
重要的
当您在Web聊天中使用Azure AI Bot Service身份验证时,必须记住一些重要的安全考虑因素。有关更多信息,请参阅REST身份验证文章中的安全考虑部分。
有关更多信息,请参阅隐藏您的秘密、将您的秘密交换为令牌以及生成嵌入。
网络聊天
网络聊天有两个实现:通道和控件【control】。
当您在Azure注册机器人时,网络聊天频道会自动配置为允许测试机器人。有关更多信息,请参阅将机器人连接到网络聊天。
您可以将Web Chat控件与Direct Line频道一起使用,以提供对客户端应用程序中机器人的访问。有关该控件的更多信息,请参阅Bot Framework Web Chat。
技能
技能和技能消费者是两个不同的机器人,每个机器人都有自己的应用程序ID和密码。
- 消费者可以将用户活动转发给技能,并将技能的响应转发给用户。
- 对于技能而言,技能消费者扮演着渠道的角色。消费者有一个技能主机端点,该端点充当技能向其发送活动的服务URL。
- 有关技能的更多信息,请参阅技能概述。
服务级别身份验证由Bot Connector服务管理。该框架使用承载令牌和机器人应用程序ID来验证每个机器人的身份。
重要的
这要求所有机器人(技能消费者及其消费的任何技能)都具有有效的应用程序凭据。
声明验证
除了这个基本级别的身份验证之外,您还必须将声明验证器添加到技能和技能消费者的身份验证配置中。在身份验证标头之后对声明进行评估。此过程允许每个机器人限制它将接受来自哪些其他机器人的活动。
有关示例声明验证,请参阅如何实现技能和实现技能消费者。
For sample claims validation, see how to implement a skill and implement a skill consumer.
Bot框架仿真器
Bot Framework Emulator有自己的身份验证流和自己的令牌。Emulator有自己的通道和内置服务器。
用户身份验证
有时,机器人必须代表用户访问安全的在线资源。要做到这一点,机器人必须经过授权。这是因为要执行某些操作,如检查电子邮件、检查航班状态或下订单,机器人需要调用外部服务,如Microsoft Graph、GitHub或公司的REST服务。OAuth用于对用户进行身份验证并授权机器人。
笔记
机器人访问用户资源涉及两个宏观步骤。
- 身份验证。验证用户身份的过程。
- 批准验证机器人是否可以访问用户资源的过程。
如果第一步成功,则会发出基于用户凭据的令牌。在第二步中,机器人使用令牌访问用户的资源。
有关更多信息,请参阅用户身份验证【User authentication.】。
身份提供程序
身份提供者对用户或客户端身份进行身份验证,并颁发可消费的安全令牌。它提供用户身份验证服务。客户端应用程序(如web应用程序)将身份验证委托给受信任的身份提供者。
机器人可以使用受信任的身份提供者来:
- 启用单点登录(SSO)功能,允许其访问多个安全资源。
- 代表用户连接到云计算资源,减少用户重新验证的需要。
笔记
Bot身份验证期间颁发的令牌与用户身份验证期间发放的令牌不同。第一种用于在机器人、渠道和最终的客户端应用程序之间建立安全通信。第二个用于授权机器人代表用户访问安全资源。
请注意,通道提供了自己的、单独的用户身份验证,让用户登录到通道。
有关机器人如何使用身份提供者代表用户访问资源的更多信息,请参阅身份提供者【Identity providers】。
- 登录 发表评论
- 7 次浏览
最新内容
- 1 week 5 days ago
- 2 weeks 6 days ago
- 3 weeks 2 days ago
- 3 weeks 2 days ago
- 3 weeks 5 days ago
- 3 weeks 6 days ago
- 4 weeks ago
- 4 weeks 1 day ago
- 4 weeks 1 day ago
- 4 weeks 1 day ago