Chinese, Simplified
SEO Title
category
单点登录(SSO)允许跨独立应用程序共享对资源的访问。例如,用户可以在根机器人中登录服务,根机器人可以与技能机器人共享访问令牌。目前,只支持Microsoft Entra ID身份提供者。
SSO适用于以下场景:
- 一个根机器人和一个或多个技能机器人。用户从根机器人登录。然后,机器人代表用户调用多种技能。
- 嵌入在网站上的网络聊天控件。用户从网站登录。然后,该网站代表用户调用机器人或技能。
SSO具有以下优点:
- 用户不必多次登录。
- 根机器人或网站不需要知道用户的权限。
注:
SSO在Bot Framework SDK 4.8版及更高版本中可用。
SSO组件交互
以下时间序列图显示了SSO各个组件之间的交互。
- 下图说明了根机器人的流程。

根机器人的SSO序列图。
- 下图说明了Web聊天控件的流程和回退流程。

Web聊天控件的SSO序列图。
如果令牌交换失败,则应提示用户登录。当需要额外权限或令牌用于错误的服务时,可能会发生此类失败。
让我们分析一下流程。
- 客户端与机器人开始对话,触发OAuth场景。
- 机器人向客户端发回OAuth卡。
- 客户端在将OAuth卡显示给用户之前拦截它,并检查它是否包含TokenExchangeResource属性。
- 如果该属性存在,客户端将向机器人发送TokenExchangeInvokeRequest。客户端必须为用户提供一个可交换的令牌,该令牌必须是Microsoft Entra ID令牌,其受众必须与TokenExchangeResource相同。Uri属性。客户端向机器人发送一个Invoke活动,其正文如下所示。
JSON
{
"type": "Invoke",
"name": "signin/tokenExchange",
"value": {
"id": "<any unique ID>",
"connectionName": "<connection Name on the skill bot (from the OAuth Card)>",
"token": "<exchangeable token>"
}
}- 机器人程序处理TokenExchangeInvokeRequest,并向客户端返回TokenExchangeInvokeResponse。客户端应等待,直到收到TokenExchangeInvokeResponse。
JSON
{
"status": "<response code>",
"body": {
"id":"<unique ID>",
"connectionName": "<connection Name on the skill bot (from the OAuth Card)>",
"failureDetail": "<failure reason if status code isn't 200, null otherwise>"
}
}
如果TokenExchangeInvokeResponse的状态为200,则客户端不会显示OAuth卡。见正常流程图。对于任何其他状态,或者如果没有收到TokenExchangeInvokeResponse,则客户端会向用户显示OAuth卡。请参阅回退流程图。这确保了如果存在任何错误或未满足的依赖关系,如用户同意,SSO流会回落到正常的OAuthCard流。
下一步
- 登录 发表评论
- 6 次浏览
发布日期
星期四, 八月 8, 2024 - 10:07
最后修改
星期四, 八月 8, 2024 - 10:12
Article
最新内容
- 1 week 3 days ago
- 1 week 3 days ago
- 1 month ago
- 1 month ago
- 1 month ago
- 1 month ago
- 1 month ago
- 1 month ago
- 1 month ago
- 1 month ago