Inicio rápido: configuración del inicio de sesión único en aplicaciones mediante el plan Enterprise de Azure Spring Apps
Nota:
Los planes de Básico, Estándar y Enterprise quedarán en desuso a partir de mediados de marzo de 2025, con un período de retiro de 3 años. Se recomienda realizar la transición a Azure Container Apps. Para más información, consulte el anuncio de retirada de Azure Spring Apps.
El plan de consumo estándar y dedicado quedará obsoleto a partir del 30 de septiembre de 2024, con un cierre completo al cabo de seis meses. Se recomienda realizar la transición a Azure Container Apps. Para obtener más información, consulte Migrar el plan de consumo y dedicado Azure Spring Apps Standard a Azure Container Apps.
Este artículo se aplica a: ❎ Básico/Estándar ✅ Enterprise
En este artículo de inicio rápido se muestra cómo configurar el inicio de sesión único para las aplicaciones que se ejecutan en el plan Enterprise de Azure Spring Apps.
Requisitos previos
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Una licencia para el plan Enterprise de Azure Spring Apps. Para más información, consulte Plan Enterprise en Azure Marketplace.
- La versión 2.45.0 o superior de la CLI de Azure.
- Git.
- jq
- La extensión del plan Enterprise de Azure Spring Apps. Use el siguiente comando para eliminar las versiones anteriores e instalar la extensión del plan Enterprise más reciente. Si ya ha instalado la extensión
spring-cloud
, desinstálela para evitar errores de coincidencia de la configuración y la versión.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Complete los pasos de Compilación e implementación de aplicaciones en Azure Spring Apps con el nivel Enterprise.
Preparación de las credenciales de inicio de sesión único
Para configurar el inicio de sesión único para la aplicación, tiene que preparar las credenciales. En las secciones siguientes se describen los pasos para usar un proveedor existente o el aprovisionamiento de un registro de aplicación con Microsoft Entra ID.
Uso de un proveedor existente
Siga estos pasos para configurar el inicio de sesión único mediante un proveedor de identidades existente. Si va a aprovisionar un registro de aplicaciones de Microsoft Entra, vaya a la sección siguiente, Creación y configuración de un registro de aplicación con Microsoft Entra ID.
Configure el proveedor de identidades existente para permitir redireccionamientos a Spring Cloud Gateway for VMware Tanzu y el portal de API para VMware Tanzu. Spring Cloud Gateway tiene un único URI para permitir el reingreso en la puerta de enlace. Portal de API tiene dos URI para admitir la interfaz de usuario y la API subyacente. Los siguientes comandos recuperan estos URI que se agregan a la configuración del proveedor de inicio de sesión único.
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"
Obtenga el
Client ID
yClient Secret
para el proveedor de identidades.Obtenga el
Issuer URI
para el proveedor de identidades. Tiene que configurar el proveedor con un URI del emisor, que es el URI que declara como identificador de su emisor. Por ejemplo, si elissuer-uri
proporcionado eshttps://example.com
, se hace una solicitud de configuración del proveedor OpenID ahttps://example.com/.well-known/openid-configuration
. Se espera que el resultado sea una respuesta de configuración del proveedor de OpenID.Nota
Solo puede usar servidores de autorización que admitan el protocolo OpenID Connect Discovery.
Obtenga el
JWK URI
para el proveedor de identidades para usarlo más adelante.JWK URI
suele tomar la forma de${ISSUER_URI}/keys
o${ISSUER_URI}/<version>/keys
. La aplicación Identity Service usa las claves web JSON (JWK) públicas para comprobar los tokens web JSON (JWT) emitidos por el servidor de autorización del proveedor de identidades de inicio de sesión único.
Creación y configuración de un registro de aplicación con Microsoft Entra ID
Para registrar la aplicación con Microsoft Entra ID, siga estos pasos. Si usa las credenciales de un proveedor existente, vaya a la sección siguiente, Implementación de la aplicación Identity Service.
Use el siguiente comando para crear un registro de aplicación con Microsoft Entra ID y guarde la salida:
az ad app create --display-name <app-registration-name> > ad.json
Use el siguiente comando para recuperar el identificador de la aplicación y recopilar el secreto de cliente:
export APPLICATION_ID=$(cat ad.json | jq -r '.appId') az ad app credential reset --id ${APPLICATION_ID} --append > sso.json
Use el siguiente comando para asignar una entidad de servicio al registro de aplicación:
az ad sp create --id ${APPLICATION_ID}
Use los siguientes comandos para recuperar las direcciones URL de Spring Cloud Gateway y portal de API, y agregar las direcciones URL de respuesta necesarias al registro de aplicación de 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"
Use el siguiente comando para recuperar el
Client ID
de la aplicación. Guarde la salida para usarla más adelante en este artículo de inicio rápido.cat sso.json | jq -r '.appId'
Use el siguiente comando para recuperar el
Client Secret
de la aplicación. Guarde la salida para usarla más adelante en este artículo de inicio rápido.cat sso.json | jq -r '.password'
Ejecute el comando siguiente para recuperar el
Issuer URI
. Guarde la salida para usarla más adelante en este artículo de inicio rápido.export TENANT_ID=$(cat sso.json | jq -r '.tenant') echo "https://login.microsoftonline.com/${TENANT_ID}/v2.0"
Recupere el
JWK URI
de la salida del comando siguiente. La aplicación Identity Service usa las claves web JSON (JWK) públicas para comprobar los tokens web JSON (JWT) emitidos por Active Directory.export TENANT_ID=$(cat sso.json | jq -r '.tenant') echo "https://login.microsoftonline.com/${TENANT_ID}/discovery/v2.0/keys"
Implementación de la aplicación Identity Service
Para completar la experiencia de inicio de sesión único, siga los pasos a continuación para implementar la aplicación Identity Service. La aplicación Identity Service ofrece una única ruta para ayudar a identificar el usuario.
Vaya a la carpeta del proyecto.
Use el siguiente comando para crear la aplicación
identity-service
:az spring app create \ --resource-group <resource-group-name> \ --name identity-service \ --service <Azure-Spring-Apps-service-instance-name>
Use el siguiente comando para habilitar la configuración externalizada para el servicio de identidad mediante el enlace al servicio de configuración de la aplicación:
az spring application-configuration-service bind \ --resource-group <resource-group-name> \ --app identity-service \ --service <Azure-Spring-Apps-service-instance-name>
Use el siguiente comando para habilitar la detección y el registro de servicios para el servicio de identidad mediante el enlace al registro de servicios:
az spring service-registry bind \ --resource-group <resource-group-name> \ --app identity-service \ --service <Azure-Spring-Apps-service-instance-name>
Use el siguiente comando para implementar el servicio de identidad:
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>"
Use el siguiente comando para enrutar las solicitudes al servicio de identidad:
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
Configuración del inicio de sesión único para Spring Cloud Gateway
Puede configurar Spring Cloud Gateway para autenticar las solicitudes mediante el inicio de sesión único. Para configurar Spring Cloud Gateway para que use el inicio de sesión único, siga estos pasos:
Use los siguientes comandos para configurar Spring Cloud Gateway para usar el inicio de sesión único:
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>
Indique a la aplicación de servicio cart que use Spring Cloud Gateway para la autenticación. Use el siguiente comando para proporcionar las variables de entorno necesarias:
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"
Indique a la aplicación de servicio order que use Spring Cloud Gateway para la autenticación. Use el siguiente comando para proporcionar las variables de entorno necesarias:
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}"
Use el siguiente comando para recuperar la dirección URL de Spring Cloud Gateway:
echo "https://${GATEWAY_URL}"
Puede abrir la dirección URL de salida en un explorador para examinar la aplicación actualizada. La función de inicio de sesión ahora funciona, lo que le permite agregar elementos al carro y hacer pedidos. Después de iniciar sesión, el botón de información del cliente muestra el nombre del usuario que ha iniciado sesión.
Configuración del inicio de sesión único para el portal de API
Puede configurar el portal de API para VMware Tanzu para que use el inicio de sesión único para exigir la autenticación antes de explorar las API. Use los siguientes comandos para configurar el inicio de sesión único para el portal de 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>
Use los siguientes comandos para recuperar la dirección URL para el portal de 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}"
Puede abrir la dirección URL de salida en un explorador para examinar las API de la aplicación. Se le dirige a que inicie sesión antes de examinar las API.
Limpieza de recursos
Si planea seguir trabajando en otros inicios rápidos y tutoriales, considere la posibilidad de dejar estos recursos activos. Cuando ya no lo necesite, elimine el grupo de recursos, que elimina los recursos que contiene. Para eliminar el grupo de recursos mediante la CLI de Azure, use estos comandos:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Pasos siguientes
Continúe con cualquiera de los siguientes artículos de inicio rápido opcionales: