共用方式為


使用通用 OAuth 提供者設定單一登入

重要

在對生成式 AI 進行大量投資並增強 Microsoft Copilot 的整合後,Power Virtual Agents 的功能和特性現已成為 Microsoft Copilot Studio 的一部分

當我們更新文件和培訓內容時,某些文章和螢幕擷取畫面可能會參考 Power Virtual Agents。

Copilot Studio 支援使用 OAuth 2.0 相容驗證提供者進行單一登入 (SSO)。 如果客戶登入部署了副手的頁面或應用程式,SSO 可讓您網站上的副手登入客戶。

先決條件

建立或使用支援通用 OAuth 提供者 SSO 流程的自訂畫布

當在與通用 OAuth 2.0 提供者連接的副手中觸發驗證主題時,Copilot Studio 會發送包含安全 URL 的訊息,該 URL 用於發佈使用者的存取權杖。

自訂畫布或嵌入畫布的頁面應實作以下模式:

  1. 使用您的慣用方法從 OAuth 2.0 驗證提供者取得已登入使用者的存取權杖。

  2. 攔截來自 Copilot Studio 的傳入訊息,並提取安全 URL。

  3. 將存取權杖發佈到安全 URL。

提取安全 URL 並發佈權杖

自訂畫布使用中介軟體概念攔截傳入訊息,中介軟體概念是在從 Copilot Studio 接收訊息的上下文中執行的程式碼。

若要回應登入要求,自訂畫布需要攔截帶有具有內容類型 application/vnd.microsoft.card.oauth 附件的訊息。 OAuthCard 附件包含 content.tokenPostResource.sasUrl 屬性,可以從中提取安全 URL。 最後,自訂畫布應將使用者存取權杖發佈到安全 URL。

以下 JavaScript 程式碼是提取安全 URL 並發布權杖的中介軟體程式碼範例。 如果發佈成功,則中介軟體會傳回 false。 如果發佈不成功,或者活動沒有 application/vnd.microsoft.card.oauth 屬性,則將傳回 next(…args)

const activityMiddleware = () => next => (...args) => {
  if (args[0].activity.attachments?.[0]?.contentType === 'application/vnd.microsoft.card.oauth') {
    var postEndpoint = args[0].activity.attachments?.[0].content.tokenPostResource.sasUrl;

    // Perform an HTTP POST to the secure URL with the body of:
    // {
    //     "token": <user_token> 
    // } 

    if(success)
       return false;
    else
       return next(...args);
  } else {
    return next(...args);
  }
};

完整範例程式碼

根據您的驗證提供者,為登入使用者取得權杖並將權杖發佈到 Copilot Studio 的自訂畫布或應用程式的實作會有所差異。 有關詳細資訊,請參閱驗證提供者的文件,深入了解登入流程和如何取得存取權杖。 有關使用 OKTA 的參考範例,請參閱使用 OKTA 的協力廠商 SSO

在 Copilot Studio 中使用權杖

使用安全 URL 發佈的權杖將填入 Copilot Studio 中的 System.User.AccessToken 變數中。 副手製作者可以使用此系統變數來存取受保護的 API,這些 API 連接到產生權杖的經過驗證的提供者。

在下列範例中,HTTP 呼叫設定了使用 System.User.AccessToken 的授權標頭。

顯示存取安全 APU 的 HTTP 呼叫的螢幕擷取畫面。

支援的管道

具有通用 OAuth 驗證提供者的 SSO 是一種自訂模式,可透過自訂畫布或使用 Directline API 的任何其他用戶端執行。