本文說明如何使用 Azure Functions 來建置受信任的使用者存取服務。
Important
本教學課程中建立的端點並不安全。 請務必閱讀 Azure Functions 安全性 一文中的安全性詳細數據。 您需要將安全性新增至終端點,以確保不良執行者無法配置令牌。
這篇文章說明如何:
- 設定函式。
- 產生存取令牌。
- 測試函式。
- 部署並執行函式。
下載程式碼
在 GitHub 上找到此快速入門的完成程式碼。
Prerequisites
- 具有有效訂用帳戶的 Azure 帳戶。 如果您沒有 Azure 訂用帳戶,您可以 免費建立帳戶。
- 其中一個支援的平台上有 Visual Studio Code。
-
Node.js (英文)、作用中 LTS 和維護 LTS 版本 (建議使用 10.14.1)。 請使用
node --version命令來檢查您的版本。 - 適用於 Visual Studio Code 的 Azure Functions 擴充功能。
- 作用中的 Azure 通訊服務資源和連接字串。 如需詳細資訊,請參閱快速入門:建立和管理通訊服務資源。
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# 函式中的逐步指示。
總而言之,您需要:
- 從 Visual Studio 登入 Azure。
- 將您的專案發佈至 Azure 帳戶。 您必須在這裡選擇現有的訂用帳戶。
- 使用 Visual Studio 精靈或現有資源建立新的函式資源。 針對新的資源,您必須將它設定為所需的區域、運行時間和唯一標識符。
- 等候部署完成。
- 執行函式。
執行函式
使用 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 資源。