Поделиться через


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

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

Внимание

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

В этой статье описывается, как выполнить следующее:

  • Настройка функции.
  • Генерация токенов доступа.
  • Проверьте функцию.
  • Разверните и запустите функцию.

Скачать код

Окончательный код для этого быстрого старта можно найти на GitHub.

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

Обзор

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

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

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

Дополнительные сведения см. в основной документации по архитектуре "клиент-сервер" и проверке подлинности и авторизации.

Настройка функции

В этом разделе описываются процедуры настройки функции.

Настройка функций Azure

Сначала настроим базовую структуру для функции. Пошаговые инструкции по настройке см. в кратком руководстве по созданию функции C# в Azure с помощью Visual Studio Code.

Для функции требуется следующая конфигурация:

  • Язык: JavaScript
  • Шаблон: триггер HTTP
  • Уровень авторизации: анонимный (если вы предпочитаете другую модель авторизации, вы можете переключить его позже)
  • Имя функции: определяемое пользователем

После выполнения инструкций в кратком руководстве по созданию функции C# в Azure с помощью Visual Studio Code с предыдущей конфигурацией у вас должен быть проект в Visual Studio Code для функции с файлом 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
    };
}

Следующим шагом является установка библиотек служб коммуникации.

Установка библиотек служб коммуникации

Вы используете библиотеку Identity для создания маркеров доступа пользователей.

Используйте команду npm install для установки SDK для удостоверений службы коммуникации на JavaScript.


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. Дополнительные сведения о локальном запуске см. в кратком руководстве по созданию функции C# в Azure с помощью Visual Studio Code.

Откройте URL-адрес в браузере и увидите текст ответа с идентификатором пользователя связи, маркером и истечением срока действия маркера.

Снимок экрана: пример ответа для созданной функции.

Развертывание функции для Azure

Чтобы развернуть функцию, выполните пошаговые инструкции из краткого руководства. Создание функции C# в Azure с помощью Visual Studio Code.

Вкратце, вам нужно:

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

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

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

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

Дополнительные сведения о запуске функции см. в кратком руководстве по созданию функции C# в Azure с помощью Visual Studio Code.

Защита конечной точки

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

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

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