Создание доверенной службы доступа пользователей с помощью Функций Azure
В этой статье описывается, как с помощью Функций Azure создать доверенную службу доступа пользователей.
Важно!
Конечная точка, созданная в конце этого учебника, небезопасна. Обязательно ознакомьтесь со сведениями о безопасности в статье Безопасность Функций Azure. Необходимо добавить в конечную точку безопасность, чтобы неправильные субъекты не могли подготавливать маркеры.
Скачивание кода
Итоговый код для этого краткого руководства можно найти на сайте GitHub.
Предварительные требования
- Учетная запись Azure с активной подпиской. Дополнительные сведения см. на странице Создайте бесплатную учетную запись Azure уже сегодня.
- Visual Studio Code на одной из поддерживаемых платформ.
-
Node.js, активная версия LTS и версия Maintenance LTS (рекомендуется 10.14.1). Используйте команду
node --version
, чтобы проверить установленную версию. - Расширение "Функции Azure" для Visual Studio Code.
- Активный ресурс Служб коммуникации и строка подключения. Создайте ресурс Служб коммуникации.
Обзор
В рамках этого учебника мы создадим функцию Azure, которая будет использоваться в качестве доверенной службы подготовки маркеров. С помощью сведений из этого учебника вы можете выполнить начальную загрузку собственной службы подготовки маркеров.
Эта служба отвечает за проверку подлинности пользователей в Службах коммуникации Azure. Пользователям ваших приложений Служб коммуникации потребуется Access Token
, чтобы участвовать в беседах и выполнять вызовы по протоколу VoIP. Функция Azure будет работать как доверенный посредник между пользователем и Службами коммуникации. Это позволяет подготавливать маркеры доступа, не предоставляя пользователям строку подключения к ресурсам.
Дополнительные сведения см. в основной документации по архитектуре "клиент-сервер" и проверке подлинности и авторизации.
Настройка
Настройка функций Azure
Сначала создадим базовую структуру для нашей функции Azure. Пошаговые инструкции по настройке можно найти на следующей странице: Краткое руководство. Создание функции в Azure с помощью Visual Studio Code
Для функции Azure потребуется следующая конфигурация:
- Язык: JavaScript
- Шаблон: Триггер HTTP
- Уровень авторизации: Анонимный (можно изменить позже, если вы предпочитаете другую модель авторизации)
- Имя функции: Определяется пользователем
После выполнения инструкций из этого краткого руководства с использованием приведенной выше конфигурации у вас должен быть проект в Visual Studio Code для функции Azure с файлом index.js
, содержащим саму функцию. Код внутри этого файла должен быть следующим:
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
};
}
Теперь мы приступим к установке библиотек Служб коммуникации Azure.
Установка библиотек Служб коммуникации
Для создания User Access Tokens
мы будем использовать библиотеку Identity
.
Используйте команду npm install
, чтобы установить пакет SDK для Служб коммуникации Azure для удостоверений для JavaScript.
npm install @azure/communication-identity --save
Параметр --save
указывает библиотеку как зависимость в файле пакета package.json.
В верхней части файла index.js
импортируйте интерфейс для CommunicationIdentityClient
.
const { CommunicationIdentityClient } = require('@azure/communication-identity');
Создание маркера доступа
Чтобы функция Azure создавала User Access Tokens
, сначала необходимо использовать строку подключения для нашего ресурса Служб коммуникации.
Дополнительные сведения о получении строки подключения см. в кратком руководстве по подготовке ресурсов.
const connectionString = 'INSERT YOUR RESOURCE CONNECTION STRING'
Далее мы изменим исходную функцию для создания User Access Tokens
.
User Access Tokens
формируются путем создания пользователя из метода createUser
. После создания пользователя можно использовать метод getToken
для создания маркера для этого пользователя, который возвращает функцию Azure.
В этом примере мы укажем в качестве области маркера 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
Служб коммуникации можно пропустить шаг создания и просто сгенерировать маркер доступа. Дополнительные сведения см. в кратком руководстве по созданию маркеров доступа пользователей.
Тестирование функции Azure
Запустите функцию Azure локально, нажав клавишу F5
. Это позволит локально инициализировать функцию Azure и сделать ее доступной через: http://localhost:7071/api/FUNCTION_NAME
. Ознакомьтесь с дополнительной документацией по локальному выполнению.
Откройте URL-адрес в браузере, и вы увидите текст ответа с идентификатором пользователя коммуникации, маркером и его сроком действия.
Развертывание функции в Azure
Чтобы развернуть функцию Azure, выполните эти пошаговые инструкции.
Таким образом, вам потребуется сделать следующее:
- Войдите в Azure из Visual Studio.
- Опубликуйте проект в учетной записи Azure. Выберите имеющуюся подписку.
- Создайте ресурс функции Azure с помощью мастера Visual Studio или используйте имеющийся ресурс. Новый ресурс необходимо настроить для нужного региона, среды выполнения и уникального идентификатора.
- Дождитесь завершения развертывания.
- Выполните функцию 🎉.
Запуск функции Azure
Запустите функцию Azure локально с помощью URL-адреса http://<function-appn-ame>.azurewebsites.net/api/<function-name>
.
Чтобы найти URL-адрес, щелкните правой кнопкой мыши функцию в Visual Studio Code и скопируйте URL-адрес функции.
Дополнительные сведения см. в разделе о запуске функции в Azure.
Защита Функций Azure
При настройке доверенной службы для подготовки маркеров доступа для пользователей необходимо учитывать безопасность конечной точки, чтобы неправильный субъект не мог случайным образом создать маркеры для службы. Функции Azure предоставляют встроенные функции безопасности, которые можно использовать для защиты конечной точки с помощью различных типов политик проверки подлинности. Дополнительные сведения о безопасности Функций Azure
Очистка ресурсов
Если вы хотите очистить и удалить подписку на Службы коммуникации, вы можете удалить ресурс или группу ресурсов. При этом удаляются все ресурсы, связанные с ней. См. дополнительные сведения об очистке ресурсов Служб коммуникации Azure и очистке ресурсов Функций Azure.
Дальнейшие действия
Возможно, вы также захотите выполнить такие задачи: