Интеграция функции Azure
Введение
В этом руководстве содержатся подробные инструкции по настройке функции Azure для получения сведений, связанных с пользователем. Настоятельно рекомендуется настроить функцию Azure. Это помогает избежать параметров приложения жесткого программирования в приложении Contoso (например, идентификатор пользователя и маркер пользователя). Эта информация является строго конфиденциальной. Более важно, что мы периодически обновляем маркеры пользователей на серверной части. Для жесткого написания кода пользователя и сочетания маркеров требуется изменить значение после каждого обновления.
Необходимые компоненты
Перед началом работы нужно сделать следующее:
- Создайте учетную запись Azure с активной подпиской. Дополнительные сведения см. на странице Создайте бесплатную учетную запись Azure уже сегодня.
- Установка Visual Studio Code.
Настройка функций
- Установите расширение функции Azure в Visual Studio Code. Его можно установить в браузере подключаемого модуля Visual Studio Code или по этой ссылке
- Настройте локальное приложение-функцию Azure, выполнив следующую ссылку. Необходимо создать локальную функцию с помощью шаблона триггера HTTP в JavaScript.
- Установите библиотеки Службы коммуникации Azure. Мы будем использовать библиотеку удостоверений для создания маркеров доступа пользователей. Выполните команду установки npm в локальном каталоге приложения-функции Azure, чтобы установить пакет SDK для удостоверений Службы коммуникации Azure для JavaScript.
npm install @azure/communication-identity --save
- Измените
index.js
файл, чтобы он выглядел следующим образом:
const { CommunicationIdentityClient } = require('@azure/communication-identity');
const connectionString = '<your_connection_string>'
const acsEndpoint = "<your_ACS_endpoint>"
module.exports = async function (context, req) {
let tokenClient = new CommunicationIdentityClient(connectionString);
const userIDHolder = await tokenClient.createUser();
const userId = userIDHolder.communicationUserId
const userToken = await (await tokenClient.getToken(userIDHolder, ["chat"])).token;
context.res = {
body: {
acsEndpoint,
userId,
userToken
}
};
}
Объяснение приведенного выше кода: первая строка импортирует интерфейс для CommunicationIdentityClient
. Строка подключения во второй строке можно найти в ресурсе Службы коммуникации Azure в портал Azure. Это ACSEndpoint
URL-адрес созданного ресурса Службы коммуникации Azure.
- Откройте локальную папку функций Azure в Visual Studio Code.
index.js
Откройте и запустите локальную функцию Azure. Локальная конечная точка функции Azure будет создана и напечатана в терминале. Печатное сообщение выглядит примерно так:
Functions:
HttpTrigger1: [GET,POST] http://localhost:7071/api/HttpTrigger1
Откройте ссылку в браузере. Результат будет аналогичен следующему примеру:
{
"acsEndpoint": "<Azure Function endpoint>",
"userId": "8:acs:a636364c-c565-435d-9818-95247f8a1471_00000014-f43f-b90f-9f3b-8e3a0d00c5d9",
"userToken": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjEwNiIsIng1dCI6Im9QMWFxQnlfR3hZU3pSaXhuQ25zdE5PU2p2cyIsInR5cCI6IkpXVCJ9.eyJza3lwZWlkIjoiYWNzOmE2MzYzNjRjLWM1NjUtNDM1ZC05ODE4LTk1MjQ3ZjhhMTQ3MV8wMDAwMDAxNC1mNDNmLWI5MGYtOWYzYi04ZTNhMGQwMGM1ZDkiLCJzY3AiOjE3OTIsImNzaSI6IjE2Njc4NjI3NjIiLCJleHAiOjE2Njc5NDkxNjIsImFjc1Njb3BlIjoiY2hhdCIsInJlc291cmNlSWQiOiJhNjM2MzY0Yy1jNTY1LTQzNWQtOTgxOC05NTI0N2Y4YTE0NzEiLCJyZXNvdXJjZUxvY2F0aW9uIjoidW5pdGVkc3RhdGVzIiwiaWF0IjoxNjY3ODYyNzYyfQ.t-WpaUUmLJaD0V2vgn3M5EKdJUQ_JnR2jnBUZq3J0zMADTnFss6TNHMIQ-Zvsumwy14T1rpw-1FMjR-zz2icxo_mcTEM6hG77gHzEgMR4ClGuE1uRN7O4-326ql5MDixczFeIvIG8s9kAeJQl8N9YjulvRkGS_JZaqMs2T8Mu7qzdIOiXxxlmcl0HeplxLaW59ICF_M4VPgUYFb4PWMRqLXWjKyQ_WhiaDC3FvhpE_Bdb5U1eQXDw793V1_CRyx9jMuOB8Ao7DzqLBQEhgNN3A9jfEvIE3gdwafpBWlQEdw-Uuf2p1_xzvr0Akf3ziWUsVXb9pxNlQQCc19ztl3MIQ"
}
Разверните локальную функцию в облаке. Дополнительные сведения см. в этой документации.
Проверьте развернутую функцию Azure. Сначала найдите функцию Azure в портал Azure. Затем нажмите кнопку "Получить URL-адрес функции", чтобы получить конечную точку функции Azure. Результат, который вы видите, должен быть похож на то, что было показано на шаге 5. Конечная точка функции Azure будет использоваться в приложении для инициализации параметров приложения.
Реализация
UserTokenClient
, которая используется для вызова целевого ресурса функции Azure и получения конечной точки Службы коммуникации Azure, идентификатора пользователя и маркера пользователя из возвращаемого объекта JSON. Ознакомьтесь с примером приложения для использования.
Руководство по устранению неполадок
- Если расширение функции Azure не удалось развернуть локальную функцию в облаке Azure, скорее всего, это связано с версией Visual Studio Code и расширением функции Azure, использующий ошибку. Эта комбинация версий протестирована для работы: версия
1.68.1
Visual Studio Code и версия1.2.1
расширения функции Azure. - Место для инициализации констант приложений является сложным, но важным. Дважды проверка краткое руководство по чату Android. В частности, заметка о выделении в разделе "Настройка констант приложений" и сравнение с примером приложения используемой версии.
Защита конечной точки функции Azure (необязательно)
В демонстрационных целях в этом примере по умолчанию используется общедоступная конечная точка для получения маркера Служб коммуникации Azure. В рабочих сценариях можно использовать собственную защищенную конечную точку для подготовки собственных маркеров.
С дополнительной конфигурацией этот пример поддерживает подключение к защищенной конечной точке Microsoft Entra, чтобы журнал пользователей требовался для получения маркера Службы коммуникации Azure. Пользователю потребуется войти с помощью учетной записи Майкрософт для доступа к приложению. Эта настройка повышает уровень безопасности во время входа пользователей. Определите, следует ли включить его в зависимости от вариантов использования.
Обратите внимание, что в настоящее время мы не поддерживаем идентификатор Microsoft Entra в примере кода. Следуйте приведенным ниже ссылкам, чтобы включить его в приложении и функции Azure:
Настройте приложение Служба приложений или Функции Azure для использования входа в систему идентификатора Microsoft Entra.