Краткое руководство. Настройка единого входа для приложений с помощью плана Azure Spring Apps Enterprise

Примечание.

Azure Spring Apps — это новое название службы Azure Spring Cloud. Старое название будет еще некоторое время встречаться в наших материалах, пока мы не обновим ресурсы, такие как снимки экрана, видео и схемы.

Эта статья относится к:❌ Basic/Standard ✔️ Enterprise

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

Необходимые компоненты

Подготовка учетных данных единого входа

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

Использование существующего поставщика

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

  1. Настройте существующий поставщик удостоверений, чтобы разрешить перенаправление обратно в Шлюз Spring Cloud для VMware Tanzu и портал API для VMware Tanzu. Spring Cloud Gateway имеет один универсальный код ресурса (URI), позволяющий повторно войти в шлюз. Портал API имеет два URI для поддержки пользовательского интерфейса и базового API. Следующие команды извлекают эти URI, которые добавляются в конфигурацию поставщика единого входа.

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    export PORTAL_URL=$(az spring api-portal show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    echo "https://${GATEWAY_URL}/login/oauth2/code/sso"
    echo "https://${PORTAL_URL}/oauth2-redirect.html"
    echo "https://${PORTAL_URL}/login/oauth2/code/sso"
    
  2. Client ID Получите и Client Secret для поставщика удостоверений.

  3. Issuer URI Получите поставщик удостоверений. Необходимо настроить поставщик с помощью URI издателя, который является универсальным кодом ресурса (URI), который он утверждает в качестве идентификатора издателя. Например, если issuer-uri предоставлено https://example.com, то выполняется https://example.com/.well-known/openid-configurationзапрос конфигурации поставщика OpenID. В ответе ожидается конфигурация поставщика OpenID.

    Примечание.

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

  4. JWK URI Получите поставщик удостоверений для последующего использования. Обычно он JWK URI принимает форму ${ISSUER_URI}/keys или ${ISSUER_URI}/<version>/keys. Приложение службы удостоверений использует общедоступные веб-ключи JSON (JWK) для проверки веб-токенов JSON (JWT), выданных сервером авторизации поставщика удостоверений единого входа.

Создание и настройка регистрации приложения с помощью идентификатора Microsoft Entra

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

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

    az ad app create --display-name <app-registration-name> > ad.json
    
  2. Используйте следующую команду, чтобы получить идентификатор приложения и собрать секрет клиента:

    export APPLICATION_ID=$(cat ad.json | jq -r '.appId')
    az ad app credential reset --id ${APPLICATION_ID} --append > sso.json
    
  3. Используйте следующую команду, чтобы назначить субъект-службу регистрации приложения:

    az ad sp create --id ${APPLICATION_ID}
    
  4. Используйте следующие команды, чтобы получить URL-адреса для шлюза Spring Cloud и портала API, а также добавить необходимые URL-адреса ответа в регистрацию приложений Active Directory.

    export APPLICATION_ID=$(cat ad.json | jq -r '.appId')
    
    export GATEWAY_URL=$(az spring gateway show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    export PORTAL_URL=$(az spring api-portal show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    az ad app update \
        --id ${APPLICATION_ID} \
        --web-redirect-uris "https://${GATEWAY_URL}/login/oauth2/code/sso" "https://${PORTAL_URL}/oauth2-redirect.html" "https://${PORTAL_URL}/login/oauth2/code/sso"
    
  5. Чтобы получить приложение Client ID, используйте следующую команду. Сохраните выходные данные, которые будут использоваться далее в этом кратком руководстве.

    cat sso.json | jq -r '.appId'
    
  6. Чтобы получить приложение Client Secret, используйте следующую команду. Сохраните выходные данные, которые будут использоваться далее в этом кратком руководстве.

    cat sso.json | jq -r '.password'
    
  7. Используйте следующую команду, чтобы получить Issuer URI. Сохраните выходные данные, которые будут использоваться далее в этом кратком руководстве.

    export TENANT_ID=$(cat sso.json | jq -r '.tenant')
    echo "https://login.microsoftonline.com/${TENANT_ID}/v2.0"
    
  8. JWK URI Получите из выходных данных следующей команды. Приложение службы удостоверений использует общедоступные веб-ключи JSON (JWK) для проверки веб-маркеров JSON (JWT), выданных Active Directory.

    export TENANT_ID=$(cat sso.json | jq -r '.tenant')
    echo "https://login.microsoftonline.com/${TENANT_ID}/discovery/v2.0/keys"
    

Развертывание приложения службы удостоверений

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

  1. Перейдите в папку проекта.

  2. Чтобы создать identity-service приложение, используйте следующую команду:

    az spring app create \
        --resource-group <resource-group-name> \
        --name identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  3. Используйте следующую команду, чтобы включить внешнюю конфигурацию для службы удостоверений путем привязки к службе конфигурации приложений:

    az spring application-configuration-service bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  4. Используйте следующую команду, чтобы включить обнаружение и регистрацию службы для службы удостоверений путем привязки к Реестру служб:

    az spring service-registry bind \
        --resource-group <resource-group-name> \
        --app identity-service \
        --service <Azure-Spring-Apps-service-instance-name>
    
  5. Чтобы развернуть службу удостоверений, используйте следующую команду:

    az spring app deploy \
        --resource-group <resource-group-name> \
        --name identity-service \
        --service <Azure-Spring-Apps-service-instance-name> \
        --config-file-pattern identity/default \
        --source-path apps/acme-identity \
        --build-env BP_JVM_VERSION=17 \
        --env "JWK_URI=<jwk-uri>"
    
  6. Используйте следующую команду для маршрутизации запросов в службу удостоверений:

    az spring gateway route-config create \
        --resource-group <resource-group-name> \
        --name identity-routes \
        --service <Azure-Spring-Apps-service-instance-name> \
        --app-name identity-service \
        --routes-file azure-spring-apps-enterprise/resources/json/routes/identity-service.json
    

Настройка единого входа для Spring Cloud Gateway

Вы можете настроить Spring Cloud Gateway для проверки подлинности запросов с помощью единого входа. Чтобы настроить Spring Cloud Gateway для использования единого входа, выполните следующие действия.

  1. Используйте следующие команды, чтобы настроить Spring Cloud Gateway для использования единого входа:

    export GATEWAY_URL=$(az spring gateway show \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
    
    az spring gateway update \
        --resource-group <resource-group-name> \
        --service <Azure-Spring-Apps-service-instance-name> \
        --api-description "Fitness Store API" \
        --api-title "Fitness Store" \
        --api-version "v1.0" \
        --server-url "https://${GATEWAY_URL}" \
        --allowed-origins "*" \
        --client-id <client-id> \
        --client-secret <client-secret> \
        --scope "openid,profile" \
        --issuer-uri <issuer-uri>
    
  2. Указать приложению службы корзины использовать Spring Cloud Gateway для проверки подлинности. Используйте следующую команду, чтобы предоставить необходимые переменные среды:

    az spring app update \
        --resource-group <resource-group-name> \
        --name cart-service \
        --service <Azure-Spring-Apps-service-instance-name> \
        --env "AUTH_URL=https://${GATEWAY_URL}" "CART_PORT=8080"
    
  3. Укажите приложению-службе заказа использовать Spring Cloud Gateway для проверки подлинности. Используйте следующую команду, чтобы предоставить необходимые переменные среды:

    az spring app update \
        --resource-group <resource-group-name> \
        --name order-service \
        --service <Azure-Spring-Apps-service-instance-name> \
        --env "AcmeServiceSettings__AuthUrl=https://${GATEWAY_URL}"
    
  4. Используйте следующую команду, чтобы получить URL-адрес для Шлюза Spring Cloud:

    echo "https://${GATEWAY_URL}"
    

    Вы можете открыть выходной URL-адрес в браузере, чтобы изучить обновленное приложение. Функция log In теперь работает, что позволяет добавлять элементы в корзину и размещать заказы. После входа кнопка сведений о клиенте отображает имя пользователя, вошедшего в систему.

Настройка единого входа для портала API

Портал API для VMware Tanzu можно настроить для использования единого входа для проверки подлинности перед изучением API. Используйте следующие команды, чтобы настроить единый вход на портал API:

export PORTAL_URL=$(az spring api-portal show \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')

az spring api-portal update \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> \
    --client-id <client-id> \
    --client-secret <client-secret> \
    --scope "openid,profile,email" \
    --issuer-uri <issuer-uri>

Используйте следующие команды, чтобы получить URL-адрес портала API:

export PORTAL_URL=$(az spring api-portal show \
    --resource-group <resource-group-name> \
    --service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')

echo "https://${PORTAL_URL}"

Вы можете перейти по выходному URL-адресу в браузере, чтобы просмотреть интерфейсы API приложения. Перед изучением API вы будете перенаправлены на вход.


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

Если вы планируете продолжить работу с последующими краткими руководствами и статьями, эти ресурсы можно не удалять. Удалите ненужную группу ресурсов. Ресурсы в ней будут также удалены. Чтобы удалить группу ресурсов с помощью Azure CLI, используйте следующие команды:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

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

Перейдите к любому из следующих необязательных кратких руководств: