具有 網路聊天 的單一登錄
適用於: SDK v4
單一登錄 (SSO) 可讓用戶端,例如 網路聊天 控件,代表使用者與 Bot 通訊。 目前僅 支援Microsoft Entra ID 識別提供者。
一般而言,網路聊天 會內嵌在網站頁面中。 當使用者登入網站時,網路聊天 代表使用者叫用 Bot。 根據使用者的認證,網站用戶端的令牌會交換給不同的令牌,以存取 Bot。 如此一來,使用者就不必登入兩次;第一次在網站上,第二次在 Bot 上,因此稱為 SSO。
下圖顯示使用 網路聊天 用戶端時的 SSO 流程。
失敗時,SSO 會回復為顯示 OAuth 記憶卡的現有行為。 需要使用者同意或令牌交換失敗時,可能會發生失敗。
讓我們分析流程。
使用者登入網站。
網路聊天 會收到 OAuth 觸發程式活動。
網路聊天 會透過 OAuth 觸發程式活動啟動與 Bot 的交談。
Bot 會將 OAuth 卡片傳回至 網路聊天。
網路聊天 會在向用戶顯示 OAuth 卡片之前攔截 OAuth 卡片,並檢查它是否包含
TokenExchangeResource
屬性。如果屬性存在,網路聊天 必須取得使用者的可交換令牌,該令牌必須是Microsoft Entra ID 令牌。
網路聊天 會將 Invoke 活動傳送至 Bot,本文如下所示。
{ "type": "Invoke", "name": "signin/tokenExchange", "value": { "id": "<any unique ID>", "connectionName": "<connection name on the bot (from the OAuth Card)>", "token": "<exchangeable token>" } }
TokenExchangeInvokeRequest
Bot 會藉由向 Azure AI Bot Service 發出要求以取得可交換的令牌來處理 。Azure AI Bot 服務會將令牌傳送至 Bot。
Bot 會將 傳
TokenExchangeInvokeResponse
回至 網路聊天。 網路聊天 會等到它收到TokenExchangeInvokeResponse
為止。{ "status": "<response code>", "body": { "id":"<unique ID>", "connectionName": "<connection Name on the bot (from the OAuth Card)>", "failureDetail": "<failure reason if status code isn't 200, null otherwise>" } }
TokenExchangeInvokeResponse
如果 具有status
的200
,則 網路聊天 不會顯示 OAuth 卡片。 若為任何其他status
TokenExchangeInvokeResponse
或未收到 ,則 網路聊天 向用戶顯示 OAuth 卡片。 這可確保 SSO 流程會回復為一般 OAuthCard 流程,以防發生任何錯誤或未滿足使用者同意等相依性。
如需實作範例,請參閱此 SSO 範例。