共用方式為


驗證類型

適用於: SDK v4

在 Bot Framework 中,存在兩個廣泛的驗證類別: Bot 驗證用戶驗證。 每個都有相關聯的 令牌 ,以允許存取受保護的資源。 下圖顯示 Bot 和使用者驗證所涉及的元素。

圖表說明 Bot 的令牌與使用者令牌之間的差異。

在這裡圖中:

  • 主機平臺 是 Bot 裝載平臺。 它可以是 Azure 或任何您選擇的主機平臺。
  • Bot 連接器服務 有助於 Bot 與通道之間的通訊。 它會將接收自信道的訊息轉換成活動物件,並將其傳送至 Bot 的傳訊端點。 同樣地,它會將從 Bot 接收的活動物件轉換成通道所瞭解的訊息,並將其傳送至通道。
  • Bot 配接器 是預設的 Bot Framework 配接器。 它:
    • 將 JSON 承載轉換成活動物件。
    • 建立回合內容,並將活動物件加入其中。
    • 如果有的話,請執行中間件。
    • 將回合內容轉送至 Bot。

注意

使用自定義通道配接器時,配接器本身會執行 Bot 連接器服務和預設 Bot 配接器所執行的工作。 此外,它也提供相關 Web 攔截 API 的驗證機制。 如需範例,請參閱 使用 Slack 配接器將 Bot 連線到 Slack。

Bot 驗證

Bot 是由其 MicrosoftAppIDMicrosoftAppPassword 所識別,這些檔案會保留在 Bot 的配置檔中(appsettings.json.NET)、(JavaScript)、 config.py .env (Python)或秘密或密鑰管理員中。 如需詳細資訊,請參閱 MicrosoftAppID 和 MicrosoftAppPassword

當您在 Azure 入口網站 中註冊 Bot 時,Azure 會建立Microsoft Entra ID 註冊應用程式。 如果您使用 Bot Framework CLI,則必須特別執行步驟來建立Microsoft Entra ID 註冊。 這個註冊具有應用程式識別碼 (MicrosoftAppID) 和客戶端密碼 (MicrosoftAppPassword)。 Azure 會使用這些值來產生 令牌 ,讓 Bot 可以存取安全的資源。

當通道透過 Bot 連接器服務將要求傳送至 Bot 時,它會在要求的 Authorization 標頭指定令牌。 Bot 會驗證令牌的真實性,以驗證 Bot 連接器服務的呼叫。

當 Bot 透過 Bot 連接器服務將要求傳送至通道時,它必須在要求的 Authorization 標頭指定令牌。 所有要求都必須包含存取令牌,Bot 連接器服務會驗證此令牌以授權要求。

Bot Framework SDK 會自動執行所述的作業。

如需詳細資訊,請參閱 REST API 檔,以瞭解如何向 Bot 連接器服務 驗證 Bot 的要求,以及 向 Bot 連接器服務驗證來自 Bot 的要求。

通路

一般而言,通道會透過 Bot 連接器服務與 Bot 通訊,因此通常會套用先前的驗證原則。 某些通道和功能具有唯一的驗證考慮。

Direct Line

除了標準支援的通道之外,用戶端應用程式也可以使用 Direct Line 通道與 Bot 通訊。

用戶端應用程式會使用從 Azure 入口網站 中的 Direct Line 通道組態頁面取得的秘密,或使用在運行時間取得的令牌,來驗證 Direct Line(3.0 版)的要求。 秘密或令牌是在每個要求的 Authorization 標頭中指定。

重要

當您搭配 網路聊天 使用 Azure AI Bot Service 驗證時,必須牢記一些重要的安全性考慮。 如需詳細資訊,請參閱 REST 驗證一文中的安全性考慮 一節。

如需詳細資訊,請參閱 隱藏秘密、交換您的秘密以取得令牌,併產生內嵌

網路聊天

網路聊天 有兩個實作:通道控件

  • 當您向 Azure 註冊 Bot 時,會自動將 網路聊天 通道設定為允許 Bot 測試。 如需詳細資訊,請參閱將 Bot 連線至 網路聊天
  • 您可以使用 網路聊天 控件搭配 Direct Line 通道,在用戶端應用程式中提供 Bot 的存取權。 如需控件的詳細資訊,請參閱 Bot Framework 網路聊天

技能

技能與技能取用者是兩個不同的 Bot,每個 Bot 都有自己的應用程式識別碼和密碼。

  • 取用者可以將用戶活動轉送至技能,並將技能的響應轉送給使用者。
  • 技能取用者會作為通道。 取用者具有技能主機端點,做為技能傳送活動的服務 URL。
  • 如需技能的詳細資訊,請參閱 技能概觀

服務層級驗證是由 Bot 連接器服務所管理。 架構會使用持有人令牌和 Bot 應用程式識別碼來驗證每個 Bot 的身分識別。

重要

這需要所有 Bot(技能取用者和其取用的任何技能)都具備有效的應用程式認證。

宣告驗證

除了這個基本層級的驗證之外,您必須將宣告驗證程式新增至技能的驗證組態和技能取用者。 宣告會在驗證標頭之後進行評估。 此程式可讓每個 Bot 限制將接受活動的其他 Bot。

如需範例宣告驗證,請參閱如何 實作技能實作技能取用者

Bot Framework Emulator

Bot Framework 模擬器有自己的驗證流程和自己的令牌。 模擬器有自己的通道和內建伺服器。

使用者驗證

Bot 有時必須代表使用者存取受保護的在線資源。 若要這樣做,Bot 必須獲得授權。 這是因為若要執行某些作業,例如檢查電子郵件、檢查航班狀態或下訂單,Bot 必須呼叫外部服務,例如 Microsoft Graph、GitHub 或公司的 REST 服務。 OAuth 可用來驗證用戶並授權 Bot。

注意

Bot 需要兩個宏步驟來存取用戶的資源。

  1. 驗證。 驗證使用者身分識別的程式。
  2. 授權。 驗證 Bot 是否可以存取使用者資源的程式。

如果第一個步驟成功,則會根據使用者的認證發出令牌。 在第二個步驟中,Bot 會使用令牌來存取用戶的資源。

如需詳細資訊,請參閱 用戶驗證

身分識別提供者

身分識別提供者會驗證使用者或用戶端身分識別,併發出消費性安全性令牌。 它提供使用者驗證即服務。 用戶端應用程式,例如 Web 應用程式,會將驗證委派給受信任的識別提供者。

Bot 可以使用受信任的識別提供者來:

  • 啟用單一登錄 (SSO) 功能,讓它能夠存取多個受保護的資源。
  • 代表用戶連線到雲端運算資源,減少使用者重新驗證的需求。

注意

Bot 驗證期間發出的令牌與使用者驗證期間發出的令牌不同。 第一個是用來建立 Bot、通道和用戶端應用程式之間的安全通訊。 第二個是用來授權 Bot 代表使用者存取受保護的資源。

請注意,通道會提供自己的個別使用者驗證,讓使用者登入通道。

如需 Bot 如何使用識別提供者代表使用者存取資源的詳細資訊,請參閱 識別提供者