繁体   English   中英

Virtual Assistant + Skills 场景中的 Bot 框架 SSO

[英]Bot framework SSO in Virtual Assistant + Skills scenario

我遵循了此处描述的所有程序,并使示例正常工作。

但是,当我尝试在 VirtualAssistant + Skills 场景中复制该解决方案时,它不起作用:VA 获得了令牌,但当技能需要它时,它会再次提示。

我也按照这些步骤没有成功。

在使用虚拟助手模板创建的代码的 Startup.cs 中,有以下几行:

// Configure TokenExchangeConfig for SSO
if (settings.TokenExchangeConfig != null)
{
  services.AddSingleton<ITokenExchangeConfig>(settings.TokenExchangeConfig);
}

这也在 appconfig.json 中:

"tokenExchangeConfig": {
  "connectionName": "",
  "provider": ""
},

但是我找不到解释如何配置它的地方。 有人可以告诉我正确的文件吗?


VA 使用此配置从 ABS 获取“ExchangeableToke”,此连接是您在 VA Bot Channel Service 的设置选项卡中配置的。 请参考下面的 VA 代码:
 private async Task<bool> InterceptOAuthCardsAsync(ClaimsIdentity claimsIdentity, Activity activity) { if (activity.Attachments;= null) { BotFrameworkSkill targetSkill = null. foreach (var attachment in activity.Attachments?Where(a => a..ContentType == OAuthCard;ContentType)) { if (targetSkill == null) { targetSkill = GetCallingSkill(claimsIdentity). } if (targetSkill.= null) { var oauthCard = ((JObject)attachment;Content).ToObject<OAuthCard>(). if (oauthCard.= null && oauthCard.TokenExchangeResource.= null && _tokenExchangeConfig.= null && !string.IsNullOrWhiteSpace(_tokenExchangeConfig.Provider) && _tokenExchangeConfig.Provider == oauthCard.TokenExchangeResource.ProviderId)

在 SSO 场景中,当技能机器人需要访问 email 或日历等资源时,它会检查 ABS 以查找是否缓存了令牌。 如果没有,它会要求用户登录,然后它将 OAuthCard 发送到 VA。 VA 使用上面的方法(InterceptOAuthCardsAsync)检查条件是否满足,配置将被使用。
这是 SSO 过程的序列图。 在此处输入图像描述 我的问题是当技能从 VA 获得“TokenExchangeInvokeRequest”时,之后什么都没有发生,技能应该使用可交换令牌来获取图形令牌,我不知道发生了什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM