![](/img/trans.png)
[英]Virtual Assistant Skill - how to kill/end the current skills bot you are in
[英]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": ""
},
但是我找不到解释如何配置它的地方。 有人可以告诉我正确的文件吗?
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.