簡體   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