跳转到主要内容

热门内容

今日:


总体:


最近浏览:


Chinese, Simplified

category

单点登录(SSO)允许客户端(如网络聊天控件)代表用户与机器人进行通信。目前,仅支持Microsoft Entra ID身份提供程序。

通常,网络聊天嵌入在网站页面中。当用户登录网站时,网络聊天会代表用户调用一个机器人。基于用户凭据的网站客户端令牌会被交换为另一个令牌来访问机器人。这样,用户就不必登录两次;第一次在网站上,第二次在机器人上,因此被称为SSO。

下图显示了使用Web聊天客户端时的SSO流程。

网络聊天登录流程的序列图。

如果失败,SSO将恢复到显示OAuth卡的现有行为。当需要用户同意或令牌交换失败时,可能会发生失败。

让我们分析一下流程。

  • 1.用户登录网站。
  • 2.网络聊天收到OAuth触发活动。
  • 3.网络聊天通过OAuth触发活动与机器人开始对话。
  • 4.机器人将OAuth卡发送回网络聊天。
  • 5.Web Chat在将OAuth卡显示给用户之前拦截它,并检查它是否包含TokenExchangeResource属性。
  • 6.如果该属性存在,网络聊天必须为用户获得一个可交换的令牌,该令牌必须是Microsoft Entra ID令牌。
  • 7.网络聊天向机器人发送一个Invoke活动,其正文如下所示。

JSON

{
   "type": "Invoke",
   "name": "signin/tokenExchange",
   "value": {
       "id": "<any unique ID>",
       "connectionName": "<connection name on the bot (from the OAuth Card)>",
       "token": "<exchangeable token>"
   }
}
  • 8.机器人通过向Azure AI机器人服务发出请求以获取可交换令牌来处理TokenExchangeInvokeRequest。
  • 9.Azure AI Bot服务将令牌发送给机器人。
  • 10.机器人向网络聊天返回TokenExchangeInvokeResponse。网络聊天会等待,直到收到TokenExchangeInvokeResponse。

JSON

{
   "status": "<response code>",
   "body": {
       "id":"<unique ID>",
       "connectionName": "<connection Name on the bot (from the OAuth Card)>",
       "failureDetail": "<failure reason if status code isn't 200, null otherwise>"
   }
}
  • 11.如果TokenExchangeInvokeResponse的状态为200,则网络聊天不会显示OAuth卡。对于任何其他状态,或者如果没有收到TokenExchangeInvokeResponse,则Web聊天会向用户显示OAuth卡。这确保了在出现任何错误或未满足的依赖关系(如用户同意)的情况下,SSO流会回落到正常的OAuthCard流。

有关实现示例,请参阅此SSO示例【SSO sample】。

本文地址
最后修改
星期四, 八月 8, 2024 - 08:54
Tags
 
Article