Краткое руководство. Настройка единого входа для приложений с помощью плана Azure Spring Apps Enterprise
Примечание.
Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.
Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.
Эта статья относится к: ❎ Basic/Standard ✅ Enterprise
В этом кратком руководстве показано, как настроить единый вход для приложений, работающих в плане Azure Spring Apps Enterprise.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Лицензия на план Azure Spring Apps Enterprise. Дополнительные сведения см . в разделе "Корпоративный план" в Azure Marketplace.
- Azure CLI версии 2.45.0 или более поздней.
- Git.
- jq
- Расширение плана Azure Spring Apps Enterprise. Используйте следующую команду, чтобы удалить предыдущие версии и установить последнее расширение плана Enterprise. Если вы ранее установили
spring-cloud
расширение, удалите его, чтобы избежать несоответствий конфигурации и версий.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Выполните действия, описанные в статье "Сборка и развертывание приложений в Azure Spring Apps" с помощью плана Enterprise.
Подготовка учетных данных единого входа
Чтобы настроить единый вход для приложения, необходимо подготовить учетные данные. В следующих разделах описаны действия по использованию существующего поставщика или подготовки регистрации приложения с помощью идентификатора Microsoft Entra.
Использование существующего поставщика
Выполните следующие действия, чтобы настроить единый вход с помощью существующего поставщика удостоверений. Если вы подготавливаете регистрацию приложений Microsoft Entra, перейдите к следующему разделу, создайте и настройте регистрацию приложения с помощью идентификатора Microsoft Entra.
Настройте существующий поставщик удостоверений, чтобы разрешить перенаправление обратно в Шлюз 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"
Client ID
Получите иClient Secret
для поставщика удостоверений.Issuer URI
Получите поставщик удостоверений. Необходимо настроить поставщик с помощью URI издателя, который является универсальным кодом ресурса (URI), который он утверждает в качестве идентификатора издателя. Например, еслиissuer-uri
предоставленоhttps://example.com
, то выполняетсяhttps://example.com/.well-known/openid-configuration
запрос конфигурации поставщика OpenID. В ответе ожидается конфигурация поставщика OpenID.Примечание.
Вы можете использовать только серверы авторизации, поддерживающие протокол обнаружения OpenID Connect.
JWK URI
Получите поставщик удостоверений для последующего использования. Обычно онJWK URI
принимает форму${ISSUER_URI}/keys
или${ISSUER_URI}/<version>/keys
. Приложение службы удостоверений использует общедоступные веб-ключи JSON (JWK) для проверки веб-токенов JSON (JWT), выданных сервером авторизации поставщика удостоверений единого входа.
Создание и настройка регистрации приложения с помощью идентификатора Microsoft Entra
Чтобы зарегистрировать приложение с помощью идентификатора Microsoft Entra, выполните следующие действия. Если вы используете учетные данные существующего поставщика, перейдите к следующему разделу, разверните приложение службы удостоверений.
Используйте следующую команду, чтобы создать регистрацию приложения с идентификатором Microsoft Entra ID и сохранить выходные данные:
az ad app create --display-name <app-registration-name> > ad.json
Используйте следующую команду, чтобы получить идентификатор приложения и собрать секрет клиента:
export APPLICATION_ID=$(cat ad.json | jq -r '.appId') az ad app credential reset --id ${APPLICATION_ID} --append > sso.json
Используйте следующую команду, чтобы назначить субъект-службу регистрации приложения:
az ad sp create --id ${APPLICATION_ID}
Используйте следующие команды, чтобы получить 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"
Чтобы получить приложение
Client ID
, используйте следующую команду. Сохраните выходные данные, которые будут использоваться далее в этом кратком руководстве.cat sso.json | jq -r '.appId'
Чтобы получить приложение
Client Secret
, используйте следующую команду. Сохраните выходные данные, которые будут использоваться далее в этом кратком руководстве.cat sso.json | jq -r '.password'
Используйте следующую команду, чтобы получить
Issuer URI
. Сохраните выходные данные, которые будут использоваться далее в этом кратком руководстве.export TENANT_ID=$(cat sso.json | jq -r '.tenant') echo "https://login.microsoftonline.com/${TENANT_ID}/v2.0"
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"
Развертывание приложения службы удостоверений
Чтобы завершить единый вход, выполните следующие действия, чтобы развернуть приложение службы удостоверений. Приложение службы удостоверений предоставляет единый маршрут для идентификации пользователя.
Перейдите в папку проекта.
Чтобы создать
identity-service
приложение, используйте следующую команду:az spring app create \ --resource-group <resource-group-name> \ --name identity-service \ --service <Azure-Spring-Apps-service-instance-name>
Используйте следующую команду, чтобы включить внешнюю конфигурацию для службы удостоверений путем привязки к службе конфигурации приложений:
az spring application-configuration-service bind \ --resource-group <resource-group-name> \ --app identity-service \ --service <Azure-Spring-Apps-service-instance-name>
Используйте следующую команду, чтобы включить обнаружение и регистрацию службы для службы удостоверений путем привязки к Реестру служб:
az spring service-registry bind \ --resource-group <resource-group-name> \ --app identity-service \ --service <Azure-Spring-Apps-service-instance-name>
Чтобы развернуть службу удостоверений, используйте следующую команду:
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>"
Используйте следующую команду для маршрутизации запросов в службу удостоверений:
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 для использования единого входа, выполните следующие действия.
Используйте следующие команды, чтобы настроить 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>
Указать приложению службы корзины использовать 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"
Укажите приложению-службе заказа использовать 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}"
Используйте следующую команду, чтобы получить 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 ..."
Следующие шаги
Перейдите к любому из следующих необязательных кратких руководств: