共用方式為


使用 Azure Functions 建置驗證服務

本文說明如何使用 Azure Functions 來建置受信任的使用者存取服務。

Important

本教學課程中建立的端點並不安全。 請務必閱讀 Azure Functions 安全性 一文中的安全性詳細數據。 您需要將安全性新增至終端點,以確保不良執行者無法配置令牌。

這篇文章說明如何:

  • 設定函式。
  • 產生存取令牌。
  • 測試函式。
  • 部署並執行函式。

下載程式碼

GitHub 上找到此快速入門的完成程式碼。

Prerequisites

Overview

顯示受信任服務架構的圖表。

在此教學課程中,您會建立一個函式應用程式,作為可信的令牌配置服務。 您可以使用本教學課程來啟動您自己的權杖佈建服務。

此服務負責向通訊服務驗證使用者。 通訊服務應用程式的使用者需要存取令牌,才能參與聊天線程和 VoIP 通話。 函式可作為使用者與通訊服務之間的受信任中間人。 您可以佈建存取令牌,而不需向使用者公開您的資源連接字串。

如需詳細資訊,請參閱用戶端-伺服器架構和驗證和授權概念檔。

設定函式

本節說明設定函式的程式。

Azure Functions 設定

讓我們先設定函式的基本結構。 如需設定的逐步指示,請參閱 快速入門:使用Visual Studio Code 在 Azure 中建立 C# 函式。

函式需要下列組態:

  • 語言:JavaScript
  • 範本:HTTP 觸發程式
  • 授權等級:匿名(如果您偏好不同的授權模型,您可以稍後加以切換)
  • 函數名稱:用戶定義

遵循 快速入門:使用 Visual Studio Code 搭配上述組態在 Azure 中建立 C# 函式 的指示之後,您應該在 Visual Studio Code 中擁有一個專案,其中有一個包含函式本身的檔案。 檔案內的下列程式代碼應該是:


module.exports = async function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    const name = (req.query.name || (req.body && req.body.name));
    const responseMessage = name
        ? "Hello, " + name + ". This HTTP triggered function executed successfully."
        : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";

    context.res = {
        // status: 200, /* Defaults to 200 */
        body: responseMessage
    };
}

下一個步驟是安裝通訊服務連結庫。

安裝通訊服務連結庫

您可以使用連結 Identity 庫來產生使用者存取令牌。

npm install使用 命令來安裝適用於 JavaScript 的通訊服務識別 SDK。


npm install @azure/communication-identity --save

--save 選項會在您的 package.json 檔案中,將程式庫列為相依性。

index.js 檔案的頂端匯入 CommunicationIdentityClient 參數的介面。

const { CommunicationIdentityClient } = require('@azure/communication-identity');

產生存取令牌

若要讓您的函式產生使用者存取令牌,您必須先使用通訊服務資源的連接字串。

如需如何擷取連接字串的詳細資訊,請參閱 快速入門:建立和管理通訊服務資源

const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'

接下來,您可以修改原始函式來產生使用者存取令牌。

若要產生使用者存取令牌,請使用 createUser 方法來建立使用者。 建立用戶之後,請使用 getToken 方法來產生該使用者的令牌,函數會返回該令牌。

在這裡範例中,您會將令牌範圍設定為 voip。 您的應用程式可能需要其他範圍。 若要深入瞭解範圍,請參閱 建立和管理存取令牌

module.exports = async function (context, req) {
    let tokenClient = new CommunicationIdentityClient(connectionString);

    const user = await tokenClient.createUser();

    const userToken = await tokenClient.getToken(user, ["voip"]);

    context.res = {
        body: userToken
    };
}

針對現有的通訊服務 CommunicationUser 參數,您可以略過建立步驟併產生存取令牌。 如需詳細資訊,請參閱建立和管理存取權杖

測試函式

使用 F5在本機執行函式。 此操作會在本地初始化函數,並可透過 http://localhost:7071/api/FUNCTION_NAME 存取。 如需在本機執行的詳細資訊,請參閱 快速入門:使用Visual Studio Code 在 Azure 中建立 C# 函式。

在您的瀏覽器上開啟 URL,您會看到回應本文,以及通訊使用者識別碼、權杖,和權杖的到期日。

顯示所建立函式回應範例的螢幕快照。

將函式部署到 Azure

若要部署函式,請遵循 快速入門:使用 Visual Studio Code 在 Azure 中建立 C# 函式中的逐步指示。

總而言之,您需要:

  1. 從 Visual Studio 登入 Azure。
  2. 將您的專案發佈至 Azure 帳戶。 您必須在這裡選擇現有的訂用帳戶。
  3. 使用 Visual Studio 精靈或現有資源建立新的函式資源。 針對新的資源,您必須將它設定為所需的區域、運行時間和唯一標識符。
  4. 等候部署完成。
  5. 執行函式。

執行函式

使用 URL http://<function-appn-ame>.azurewebsites.net/api/<function-name>執行函式。

若要尋找 URL,請以滑鼠右鍵按兩下 Visual Studio Code 中的函式,然後複製函式 URL。

如需如何執行函式的詳細資訊,請參閱 快速入門:使用Visual Studio Code 在 Azure 中建立 C# 函式。

保護端點

在設定受信任的服務以提供存取令牌給使用者的一部分時,您必須考慮該端點的安全性,以確保沒有任何不良動作專案可以隨機為您的服務建立令牌。 Azure Functions 提供內建的安全性功能,可讓您使用不同類型的驗證原則來保護端點。 如需詳細資訊,請參閱 Azure Functions 安全性

清除資源

如果您要清除和移除 Azure 通訊服務 訂用帳戶,您可以刪除資源或資源群組。 刪除資源群組也會刪除其關聯的任何其他資源。 您可以深入瞭解如何 清除通訊服務資源清除 Azure Functions 資源