category
有时,机器人必须代表用户访问安全的在线资源,例如检查电子邮件、检查航班状态或下订单。用户必须授权机器人代表他们这样做,为了授权机器人,用户必须验证他们的身份。OAuth用于对用户进行身份验证并授权机器人。另请参阅身份验证类型。
如果你想更新你的OAuth知识,请参阅以下内容:
- Good OAuth overview easier to follow than the formal specification
- OAuth specification
对话中的用户身份验证
为了代表用户执行某些操作,如检查电子邮件、参考日历、检查航班状态或下订单,机器人需要调用外部服务,如Microsoft Graph、GitHub或公司的REST服务。每个外部服务都有保护这些呼叫的方法。发出这些请求的一种常见方法是使用唯一标识该外部服务上用户的用户令牌(有时称为JSON Web令牌(JWT))。
为了确保对外部服务的调用安全,机器人必须要求用户登录,以便获取该服务的用户令牌。许多服务支持通过OAuth或OAuth2协议进行令牌检索。
Azure AI Bot Service提供专门的登录卡和服务,这些卡和服务与OAuth协议配合使用,并管理令牌生命周期。机器人可以使用这些功能来获取用户令牌。
- 作为bot配置的一部分,OAuth连接在Azure中的Azure AI bot Service资源中注册。
该连接包含有关要使用的身份提供者的信息,以及有效的OAuth客户端ID和密钥、要启用的OAuth作用域以及该身份提供者所需的任何其他连接元数据。
- 在机器人的代码中,OAuth连接用于帮助用户登录并获取用户令牌。
下图显示了身份验证过程中涉及的元素。
说明Azure AI Bot Service中身份验证组件之间关系的图。
关于Bot Framework令牌服务
Bot Framework令牌服务负责:
- 促进OAuth协议在各种外部服务中的使用。
- 安全地存储特定机器人、频道、对话和用户的令牌。
- 正在获取用户令牌。
小贴士如果机器人有过期的用户令牌,机器人应该:
将用户注销
再次启动登录流程
例如,可以使用Microsoft Graph API检查用户最近电子邮件的机器人程序需要来自身份提供商的用户令牌,在本例中为Microsoft Entra ID。在设计时,机器人程序开发人员执行以下两个重要步骤:
- 通过Azure门户向Bot Framework令牌服务注册Microsoft Entra ID应用程序(身份提供者)。
- 为机器人配置OAuth连接(例如GraphConnection)。
下图显示了当使用Microsoft Graph服务发出电子邮件请求时,用户与机器人交互的时间序列。
序列图概述了机器人代表用户发送电子邮件的步骤。
- 用户向机器人发出电子邮件请求。
- 带有此消息的活动将从用户发送到Bot Framework通道服务。通道服务确保活动中的用户ID字段已设置,并将消息发送给机器人。
注:
用户ID是特定于频道的,例如用户的Facebook ID或他们的短信电话号码。
- 机器人向机器人框架令牌服务发出请求,询问它是否已经拥有OAuth连接GraphConnection的UserId的令牌。
- 由于这是该用户第一次与机器人交互,bot Framework令牌服务还没有该用户的令牌,并向机器人返回NotFound结果。
注:
如果找到令牌,则跳过身份验证步骤,机器人可以使用存储的令牌发出电子邮件请求。
- 机器人创建了一个连接名为GraphConnection的OAuthCard,并回复用户使用此卡登录的请求。
- 该活动通过Bot Framework通道服务传递,该服务调用Bot Framework令牌服务为此请求创建有效的OAuth登录URL。此登录URL将添加到OAuthCard中,并将卡返回给用户。
- 通过单击OAuthCard的登录按钮,用户将收到一条登录消息。
- 当用户单击登录按钮时,频道服务会打开一个web浏览器,并调用外部服务加载其登录页面。
- 用户登录此页面以获取外部服务。然后,外部服务完成与Bot Framework令牌服务的OAuth协议交换,导致外部服务向Bot Framework令牌服务器发送用户令牌。Bot Framework令牌服务安全地存储此令牌,并使用此令牌向机器人发送活动。
- 机器人程序接收带有令牌的活动,并能够使用它对MSGraph API进行调用。
保护登录URL
当Bot Framework方便用户登录时,一个重要的考虑因素是如何保护登录URL。当用户收到登录URL时,此URL与该机器人的特定对话ID和用户ID相关联。不要共享此URL——这会导致特定机器人对话出现错误的登录。为了减轻使用共享登录URL的安全攻击,请确保单击登录URL的计算机和人员是拥有对话窗口的人。
一些渠道,如Microsoft Teams、Direct Line和WebChat,能够在用户没有注意到的情况下做到这一点。例如,WebChat使用会话Cookie来确保登录流程与WebChat对话发生在同一浏览器中。然而,对于其他频道,用户通常会看到一个6位数的魔术码。这类似于内置的多因素身份验证,因为Bot Framework令牌服务不会向机器人释放令牌,除非用户完成最终身份验证,证明登录的人可以通过输入6位代码访问聊天体验。
重要事项
请记住这些重要的安全考虑因素。您可以在这篇博客文章中找到更多信息:将WebChat与Azure AI Bot Service身份验证结合使用。
下一步
现在您已经了解了用户身份验证,让我们来看看如何将其应用于您的机器人。
另请参见
- 登录 发表评论
- 8 次浏览
Tags
最新内容
- 1 day 19 hours ago
- 1 day 19 hours ago
- 1 day 19 hours ago
- 1 day 19 hours ago
- 2 days 20 hours ago
- 2 days 20 hours ago
- 2 days 20 hours ago
- 2 days 20 hours ago
- 2 days 20 hours ago
- 2 days 20 hours ago