Создание доверенной службы доступа пользователей с помощью Функций Azure

В этой статье описывается, как с помощью Функций Azure создать доверенную службу доступа пользователей.

Важно!

Конечная точка, созданная в конце этого учебника, небезопасна. Обязательно ознакомьтесь со сведениями о безопасности в статье Безопасность Функций Azure. Необходимо добавить в конечную точку безопасность, чтобы неправильные субъекты не могли подготавливать маркеры.

Скачивание кода

Итоговый код для этого краткого руководства можно найти на сайте GitHub.

Предварительные требования

Обзор

Схема архитектуры доверенной службы

В рамках этого учебника мы создадим функцию 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, выполните эти пошаговые инструкции.

Таким образом, вам потребуется сделать следующее:

  1. Войдите в Azure из Visual Studio.
  2. Опубликуйте проект в учетной записи Azure. Выберите имеющуюся подписку.
  3. Создайте ресурс функции Azure с помощью мастера Visual Studio или используйте имеющийся ресурс. Новый ресурс необходимо настроить для нужного региона, среды выполнения и уникального идентификатора.
  4. Дождитесь завершения развертывания.
  5. Выполните функцию 🎉.

Запуск функции Azure

Запустите функцию Azure локально с помощью URL-адреса http://<function-appn-ame>.azurewebsites.net/api/<function-name>.

Чтобы найти URL-адрес, щелкните правой кнопкой мыши функцию в Visual Studio Code и скопируйте URL-адрес функции.

Дополнительные сведения см. в разделе о запуске функции в Azure.

Защита Функций Azure

При настройке доверенной службы для подготовки маркеров доступа для пользователей необходимо учитывать безопасность конечной точки, чтобы неправильный субъект не мог случайным образом создать маркеры для службы. Функции Azure предоставляют встроенные функции безопасности, которые можно использовать для защиты конечной точки с помощью различных типов политик проверки подлинности. Дополнительные сведения о безопасности Функций Azure

Очистка ресурсов

Если вы хотите очистить и удалить подписку на Службы коммуникации, вы можете удалить ресурс или группу ресурсов. При этом удаляются все ресурсы, связанные с ней. См. дополнительные сведения об очистке ресурсов Служб коммуникации Azure и очистке ресурсов Функций Azure.

Дальнейшие действия

Возможно, вы также захотите выполнить такие задачи: