Бөлісу құралы:


Как обеспечить безопасность одностраничного веб-приложения посредством неинтерактивного входа

Защита одностраничного веб-приложения с помощью идентификатора Microsoft Entra, даже если пользователь не может войти в идентификатор Microsoft Entra.

Чтобы создать этот неинтерактивный поток проверки подлинности, сначала создайте безопасную веб-службу функции Azure, которая отвечает за получение маркеров доступа из идентификатора Microsoft Entra. Эта веб-служба доступна только для одностраничного веб-приложения.

Чтобы просмотреть сведения о проверке подлинности учетной записи Azure Maps на портале Azure, сделайте следующее:

  1. Войдите на портал Azure.

  2. Перейдите в меню портала Azure. Выберите Все ресурсы, а затем учетную запись Azure Maps.

  3. В разделе Параметры на панели слева выберите Проверка подлинности.

    Screenshot showing your Azure Maps authentication options in the Azure portal.

Вместе с учетной записью Azure Maps создаются три значения. Они используются для поддержки двух типов проверки подлинности в Azure Maps:

  • Проверка подлинности Microsoft Entra: Client ID представляет учетную запись, используемую для запросов REST API. Значение Client ID должно храниться в конфигурации приложения, а затем его следует извлечь перед тем, как Карты HTTP-запросы Azure, использующие проверку подлинности Microsoft Entra.
  • Проверка подлинности с помощью общего ключа. Primary Key и Secondary Key используются в качестве ключа подписки для проверки подлинности с помощью общего ключа. Принцип проверки подлинности с помощью общего ключа заключается в передаче с каждым запросом в Azure Maps ключей, созданных в учетной записи Azure Maps. Рекомендуется регулярно повторно создавать ключи. Для обслуживания текущего подключения во время повторного создания вам буде доступно два ключа. Когда один ключ повторно создается, вы можете использовать второй. Если вы генерируете новые ключи, вам необходимо обновить данные о ключах для всех приложений, которые используют эту учетную запись. Дополнительные сведения см. в статье Проверка подлинности в Azure Maps.

Совет

Azure Maps может поддерживать маркеры доступа для процедур входа пользователей и интерактивных процедур. Интерактивные процедуры теперь позволяют строже ограничивать возможности отзыва доступа и управления секретами.

Создание функции Azure

Чтобы создать защищенное приложение веб-службы, ответственное за проверку подлинности с идентификатором Microsoft Entra:

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

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

  3. Добавьте назначаемое системой удостоверение в функции Azure, чтобы включить создание субъекта-службы для проверки подлинности в идентификаторе Microsoft Entra.

  4. Предоставьте назначаемому системой удостоверению доступ к учетной записи Azure Maps на основе ролей. Дополнительные сведения см. в разделе "Предоставление доступа на основе ролей".

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

    Вот пример протокола REST:

    GET /MSI/token?resource=https://atlas.microsoft.com/&api-version=2019-08-01 HTTP/1.1
    Host: localhost:4141
    

    А вот пример ответа:

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
        "access_token": "eyJ0eXAi…",
        "expires_on": "1586984735",
        "resource": "https://atlas.microsoft.com/",
        "token_type": "Bearer",
        "client_id": "..."
    }
    
  6. Настройте безопасность для функции Azure HttpTrigger:

    1. Создайте ключа доступа функции.
    2. Защитите конечную точку HTTP для функции Azure в рабочей среде.
  7. Настройте пакет SDK для веб-версии Azure Maps.

    //URL to custom endpoint to fetch Access token
    var url = 'https://{App-Name}.azurewebsites.net/api/{Function-Name}?code={API-Key}';
    
    var map = new atlas.Map('myMap', {
                center: [-122.33, 47.6],
                zoom: 12,
                language: 'en-US',
                view: "Auto",
            authOptions: {
                authType: "anonymous",
                clientId: "<insert>", // azure map account client id
                getToken: function(resolve, reject, map) {
                    fetch(url).then(function(response) {
                        return response.text();
                    }).then(function(token) {
                        resolve(token);
                    });
                }
            }
        });
    
        // use the following events to debug, you can remove them at any time.
        map.events.add("tokenacquired", function () {
            console.log("token acquired");
        });
        map.events.add("error", function (err) {
            console.log(JSON.stringify(err.error));
        });
    

Предоставление пользователям доступа к Azure Maps на основе ролей

Вы можете предоставить Azure управление доступом на основе ролей (Azure RBAC), назначив группу Microsoft Entra или субъект безопасности одному или нескольким определениям ролей Azure Карты.

Чтобы просмотреть доступные определения ролей Azure для Azure Maps, ознакомьтесь с разделом Просмотр встроенных определений ролей Azure Maps.

Подробные инструкции по назначению доступной роли Azure Maps для созданного управляемого удостоверения или субъекта-службы см. в статье Назначение ролей Azure с помощью портала Azure.

Чтобы эффективно управлять приложением и ресурсом Azure Карты большого количества пользователей, ознакомьтесь с группами Microsoft Entra.

Важно!

Чтобы пользователи были разрешены проходить проверку подлинности в приложении, пользователи должны сначала создаваться в идентификаторе Microsoft Entra. Более подробную информацию см. в статье Добавление или удаление пользователей с помощью Microsoft Entra ID.

Чтобы узнать, как эффективно управлять большим каталогом для пользователей, см . идентификатор Microsoft Entra.

Предупреждение

Встроенные определения ролей Azure Maps предоставляют доступ к множеству REST API Azure Maps. Чтобы ограничить доступ к API до минимума, см. сведения о создании определения настраиваемой роли и присвоении ему назначенного системой удостоверения. Это обеспечивает наличие минимального уровня привилегий, необходимых приложению для доступа к Azure Maps.

Следующие шаги

Дальнейшие сведения о сценарии одностраничного приложения:

Узнайте о метриках использования API для учетной записи Azure Maps:

Ознакомьтесь с другими примерами, в которые показано, как интегрировать идентификатор Microsoft Entra с Azure Карты: