Inicio rápido: Implementación de una aplicación de API RESTful en Azure Spring Apps

Nota:

Las primeras 50 horas de vCPU y 100 GB de memoria al mes son gratuitos. Para más información, consulte el artículo Price Reduction - Azure Spring Apps does more, costs less! ("Reducción de precios: Azure Spring Apps te da más por menos") en el Blog de Apps on Azure.

Nota

Azure Spring Apps es el nuevo nombre del servicio Azure Spring Cloud. Aunque el servicio tiene un nuevo nombre, verá el nombre antiguo en algunos lugares durante un tiempo mientras trabajamos para actualizar recursos, como capturas de pantalla, vídeos y diagramas.

En este artículo se explica cómo implementar una aplicación de API RESTful protegida por Microsoft Entra ID en Azure Spring Apps. El proyecto de ejemplo es una versión simplificada basada en la aplicación web Simple Todo, que solo proporciona el servicio de back-end y usa Microsoft Entra ID para proteger las API RESTful.

Estas API RESTful están protegidas con control de acceso basado en rol (RBAC). Los usuarios anónimos no pueden acceder a ningún dato y no pueden controlar el acceso de otros usuarios. Los usuarios anónimos solo tienen los tres permisos siguientes:

  • Lectura: con este permiso, un usuario puede leer los datos de ToDo.
  • Escritura: con este permiso, un usuario puede agregar o actualizar los datos de ToDo.
  • Eliminación: con este permiso, un usuario puede eliminar los datos de ToDo.

Una vez que la implementación se ha realizado correctamente, puede ver y probar las API a través de la interfaz de usuario de Swagger.

Screenshot of the Swagger UI that shows the API document.

El siguiente diagrama muestra la arquitectura del sistema:

Diagram that shows the architecture of a Spring web application.

En este artículo se describen las siguientes opciones para crear recursos e implementarlos en Azure Spring Apps:

  • La opción de Azure Portal y complemento Maven proporciona una manera más convencional de crear recursos e implementar aplicaciones paso a paso. Esta opción es adecuada para los desarrolladores de Spring que usan servicios en la nube de Azure por primera vez.
  • La opción de la Azure Developer CLI es una manera más eficaz de crear recursos e implementar aplicaciones automáticamente a través de comandos sencillos. La Azure Developer CLI usa una plantilla para aprovisionar los recursos de Azure necesarios e implementar el código de la aplicación. Esta opción es adecuada para los desarrolladores de Spring que están familiarizados con los servicios en la nube de Azure.

En este artículo se describen las siguientes opciones para crear recursos e implementarlos en Azure Spring Apps:

  • La opción de Azure Portal y complemento Maven proporciona una manera más convencional de crear recursos e implementar aplicaciones paso a paso. Esta opción es adecuada para los desarrolladores de Spring que usan servicios en la nube de Azure por primera vez.
  • La opción CLI de Azure utiliza una potente herramienta de línea de comandos para administrar los recursos de Azure. Esta opción es adecuada para los desarrolladores de Spring que están familiarizados con los servicios en la nube de Azure.

1. Prerrequisitos

2. Preparar el proyecto Spring

Para implementar la aplicación de API RESTful, el primer paso es preparar el proyecto de Spring para ejecutarlo localmente.

Siga estos pasos para clonar y ejecutar la aplicación localmente:

  1. Use el siguiente comando para clonar el proyecto de muestra desde GitHub:

    git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
    
  2. Si desea ejecutar la aplicación localmente, siga primero los pasos que se indican en las secciones Exposición de API RESTful y Actualización de la configuración de la aplicación. A continuación, use el siguiente comando para ejecutar la aplicación de ejemplo con Maven:

    cd ASA-Samples-Restful-Application
    ./mvnw spring-boot:run
    

3. Preparar el entorno en la nube

Los principales recursos necesarios para ejecutar esta aplicación de ejemplo son una instancia de Azure Spring Apps y una instancia de Azure Database for PostgreSQL. En las secciones siguientes, se describe cómo crear estos recursos:

3.1. Inicio de sesión en Azure Portal

Vaya a Azure Portal y escriba sus credenciales para iniciar sesión en el portal. La vista predeterminada es el panel del servicio.

3.2. Creación de una instancia de Azure Spring Apps

Use los siguientes pasos para crear una instancia de servicio de Azure Spring Apps:

  1. En la esquina de Azure Portal, seleccione Crear un recurso.

  2. Seleccione Proceso>Azure Spring Apps.

  3. Complete el formulario de aspectos básicos con la información siguiente:

    Configuración Valor sugerido Descripción
    Suscripción El nombre de su suscripción. La suscripción de Azure que desea usar para el servidor. Si tiene varias suscripciones, elija aquella en la que quiere que se le facture el recurso.
    Grupos de recursos myresourcegroup Un nuevo nombre de grupo de recursos o uno existente de la suscripción.
    Nombre myasa Nombre único que identifica al servicio de Azure Spring Apps. El nombre debe tener entre 4 y 32 caracteres, y solo puede contener números, letras minúsculas y guiones. El primer carácter del nombre del servicio debe ser una letra y el último debe ser una letra o un número.
    Plan Empresa El plan de precios que determina el recurso y el coste asociado a su instancia.
    Región La región más cercana a los usuarios. La ubicación más cercana a los usuarios.
    Redundancia de zona No activado La opción para crear el servicio de Azure Spring Apps en una zona de disponibilidad de Azure. Esta característica no se admite actualmente en todas las regiones.
    Plan de IP de software Pago por uso Plan de precios que le permite pagar por uso con Azure Spring Apps.
    Términos Seleccionada La casilla de verificación del contrato asociado a la oferta de Marketplace. Debe activar esta casilla.
    Implementación del proyecto de ejemplo No activado Opción para usar la aplicación de ejemplo integrada.
  4. Seleccione Revisar y crear para revisar las selecciones. A continuación, seleccione Crear para aprovisionar la instancia de Azure Spring Apps.

  5. En la barra de herramientas, seleccione el símbolo de Notificaciones (una campana) para supervisar el proceso de implementación. Una vez realizada la implementación, puede seleccionar Anclar al panel para crear un mosaico para este servicio en el panel de Azure Portal como un acceso directo a la página Información general del servicio.

    Screenshot of the Azure portal that shows the Notifications pane for Azure Spring Apps creation.

  6. Seleccione Ir al recurso para ir a la página Información general de Azure Spring Apps.

3.3. Preparar la instancia de PostgreSQL

Para crear un servidor de Azure Database for PostgreSQL, siga los pasos siguientes:

  1. Vaya a Azure Portal y seleccione Crear un recurso.

  2. Seleccione Bases de datos>Azure Database for PostgreSQL.

  3. Seleccione la opción de implementación Servidor flexible.

    Screenshot of the Azure portal that shows the Select Azure Database for PostgreSQL deployment option page.

  4. Complete la pestaña Datos básicos con la información siguiente:

    • Nombre del servidor: my-demo-pgsql
    • Región: Este de EE. UU.
    • Versión de PostgreSQL: 14
    • Tipo de carga de trabajo: Desarrollo
    • Habilitar una alta disponibilidad: no seleccionado
    • Método de autenticación: Solo autenticación de PostgreSQL
    • Nombre de usuario administrador: myadmin
    • Contraseña y Confirmar contraseña: escriba una contraseña.
  5. Configure la pestaña Redes con la siguiente información:

    • En Método de conectividad, seleccione Acceso público (direcciones IP permitidas)
    • Permitir acceso público a este servidor desde cualquier servicio de Azure dentro de Azure: seleccionado
  6. Seleccione Revisar y crear para revisar las opciones seleccionadas y elija Crear para aprovisionar el servidor. Esta operación puede tardar unos minutos.

  7. Vaya a la página del servidor de PostgreSQL en Azure Portal. En la página Información general, busque el valor de Nombre del servidor y anótelo para usarlo más adelante. Lo necesita para configurar las variables de entorno para la aplicación en Azure Spring Apps.

  8. Seleccione Bases de datos en el menú de navegación para crear una base de datos; por ejemplo, Todo.

    Screenshot of the Azure portal that shows the Databases page with the Create Database pane open.

3.4. Conectar una instancia de aplicación a una instancia de PostgreSQL

Siga estos pasos para conectar las instancias de servicio:

  1. Vaya a la instancia de Azure Spring Apps en Azure Portal.

  2. En el menú de navegación, abra Aplicaciones y seleccione Crear aplicación.

  3. En la página Crear aplicación, rellene el nombre de la aplicación simple-todo-api y seleccione Artefactos de Java como tipo de implementación.

  4. Seleccione Crear para finalizar la creación de la aplicación y, después, elija la aplicación para ver los detalles.

  5. Vaya a la aplicación que ha creado en Azure Portal. En la página de información general, seleccione Asignar punto de conexión para exponer el punto de conexión público de la aplicación. Guarde la dirección URL para acceder a la aplicación después de la implementación.

  6. Seleccione Conector de servicio en el panel de navegación, después, Crear para crear una nueva conexión de servicio.

    Screenshot of the Azure portal that shows the enterprise plan Service Connector page with the Create button highlighted.

  7. Complete la pestaña Datos básicos con la información siguiente:

    • Tipo de servicio: Servidor flexible de BD para PostgreSQL
    • Nombre de conexión: se rellena con un nombre generado automáticamente, que también se puede modificar.
    • Suscripción: seleccione su suscripción.
    • Servidor flexible de PostgreSQL: my-demo-pgsql
    • Base de datos PostgreSQL: seleccione la base de datos que creó.
    • Tipo de cliente: SpringBoot

    Screenshot of the Azure portal that shows the Basics tab of the Create connection pane for connecting to Service Bus.

  8. Configure la pestaña Siguiente: Autenticación con la siguiente información:

    • Seleccione el tipo de autenticación que desea usar entre el servicio de proceso y el servicio de destino: Seleccione Cadena de conexión.
    • Continuar con...: Seleccione Credenciales de la base de datos
    • Nombre de usuario: myadmin
    • Contraseña: Escriba su contraseña.

    Screenshot of the Azure portal that shows the Authentication tab of the Create connection pane with the Connection string option highlighted.

  9. Seleccione Siguiente: Redes. Use la opción predeterminada Configurar reglas de firewall para habilitar el acceso al servicio de destino.

  10. Seleccione Siguiente: Revisar y crear para revisar las selecciones y, a continuación, elija Crear para crear la conexión.

3.5. Exposición de API RESTful

Siga estos pasos para exponer las API RESTful en Microsoft Entra ID:

  1. Inicie sesión en Azure Portal.

  2. Si tiene acceso a varios inquilinos, use el filtro Directorio + suscripción () para seleccionar el inquilino en el que desea registrar una aplicación.

  3. Busque y seleccione Microsoft Entra ID.

  4. En Administrar, seleccione Registros de aplicaciones> y, luego, Nuevo registro.

  5. Escriba un nombre para la aplicación en el campo Nombre (por ejemplo, Todo). Los usuarios de la aplicación pueden ver este nombre, el cual se puede cambiar más tarde.

  6. En Tipos de cuenta admitidos, seleccione Cuentas en cualquier directorio organizativo (cualquier directorio de Microsoft Entra: multiinquilino) y cuentas de Microsoft personales.

  7. Seleccione Registrar para crear la aplicación.

  8. En la página Overview (Información general) de la aplicación, busque el valor de Application (client) ID (Id. de cliente de la aplicación) y regístrelo para usarlo más tarde. Necesita configurar el archivo de configuración de YAML para este proyecto.

  9. En Administrar, seleccione Exponer una API, busque el URI de ID de aplicación al principio de la página y, a continuación, seleccione Agregar.

  10. En la página Editar identificador URI de ID de aplicación, acepte el URI de ID de aplicación propuesto (api://{client ID}) o use un nombre descriptivo en lugar del identificador de cliente, como api://simple-todo y, a continuación, seleccione Guardar.

  11. En Administrar, seleccione Exponer una API>Agregar un ámbito y escriba la siguiente información:

    • Para Nombre de ámbito, escriba ToDoList.Read.
    • Para ¿Quién puede dar el consentimiento?, seleccione Solo administradores.
    • En Nombre para mostrar del consentimiento del administrador, escriba Leer los datos de ToDo.
    • En Descripción del consentimiento del administrador, escriba Permitir que los usuarios autenticados lean los datos de ToDo.
    • En Estado, manténgalo habilitado.
    • Seleccione Agregar ámbito.
  12. Repita el paso anterior para agregar los otros dos ámbitos: ToDo.Write y ToDo.Delete.

    Screenshot of the Azure portal that shows the Expose an API page of a RESTful API application.

3.6. Actualización de la configuración de la aplicación

Siga estos pasos para actualizar el archivo YAML para usar la información de la aplicación registrada en Microsoft Entra con el fin de establecer una relación con la aplicación de API RESTful:

  1. Busque el archivo src/main/resources/application.yml de la aplicación simple-todo-api. Actualice la configuración de la sección spring.cloud.azure.active-directory para que coincida con el ejemplo siguiente. Asegúrese de reemplazar los marcadores de posición por los valores que creó anteriormente.

    spring:
      cloud:
        azure:
          active-directory:
            profile:
              tenant-id: <tenant>
            credential:
              client-id: <your-application-ID-of-ToDo>
            app-id-uri: <your-application-ID-URI-of-ToDo>
    

    Nota:

    En los tokens v1.0 la configuración requiere el identificador de cliente de la API, mientras que en los tokens v2.0 puede usar el identificador de cliente o el URI del identificador de la aplicación que aparece en la solicitud. Puede configurar los dos para completar correctamente la validación del público.

    Los valores permitidos para tenant-id son: common, organizations, consumers o el identificador de inquilino. Para obtener más información sobre estos valores, consulte la sección Uso del punto de conexión incorrecto (cuentas personales y de organización) de Error AADSTS50020: la cuenta de usuario del proveedor de identidades no existe en el inquilino. Para obtener información sobre la conversión de la aplicación de un solo inquilino, consulte Conversión de una aplicación de inquilino único en varios inquilinos en Microsoft Entra ID.

  2. Use el siguiente comando para recompilar el proyecto de ejemplo:

    ./mvnw clean package
    

4. Implementación de la aplicación en Azure Spring Apps

Ahora puede implementar la aplicación en Azure Spring Apps.

Siga estos pasos para implementar mediante el complemento de Maven para Azure Spring Apps:

  1. Navegue hasta el directorio completo y ejecute el siguiente comando para configurar la aplicación en Azure Spring Apps:

    ./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
    

    En la lista siguiente se describen las interacciones del comando:

    • Inicio de sesión de OAuth2: debe autorizar el inicio de sesión en Azure basado en el protocolo OAuth2.
    • Seleccionar suscripción: seleccione el número de lista de suscripciones de la instancia de Azure Spring Apps que creó, que tiene como valor predeterminado la primera suscripción de la lista. Si usa el número predeterminado, presione Entrar directamente.
    • Usar Azure Spring Apps existente en Azure: presione y para usar la instancia de Azure Spring Apps existente.
    • Seleccione Azure Spring Apps para la implementación: seleccione el número de la instancia de Azure Spring Apps que ha creado. Si usa el número predeterminado, presione Entrar directamente.
    • Use la aplicación existente en Azure Spring Apps <nombre-instancia>: presione y para usar la aplicación creada.
    • Confirme para guardar todas las configuraciones anteriores: presione y. Si presiona n, la configuración no se guardará en los archivos POM.
  2. Use el siguiente comando para implementar la aplicación:

    ./mvnw azure-spring-apps:deploy
    

    En la lista siguiente se describe la interacción del comando:

    • Inicio de sesión de OAuth2: debe autorizar el inicio de sesión en Azure basado en el protocolo OAuth2.

    Una vez ejecutado el comando, puede ver en los siguientes mensajes de registro que la implementación se ha realizado correctamente:

[INFO] Deployment Status: Running
[INFO]   InstanceName:simple-todo-api-default-15-xxxxxxxxx-xxxxx  Status:Running Reason:null       DiscoverStatus:N/A       
[INFO] Getting public url of app(simple-todo-api)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-simple-todo-api.azuremicroservices.io

5. Validación de la aplicación

Ya puede acceder a la API RESTful para ver si funciona.

5.1. Solicitar un token de acceso

Las API RESTful actúan como un servidor de recursos que está protegido por Microsoft Entra ID. Antes de adquirir un token de acceso, debe registrar otra aplicación en Microsoft Entra ID y conceder permisos a la aplicación cliente, que se denomina ToDoWeb.

Registro del tipo de aplicación cliente

Siga estos pasos para registrar una aplicación en Microsoft Entra ID, que se usa para agregar los permisos para la aplicación ToDo:

  1. Inicie sesión en Azure Portal.

  2. Si tiene acceso a varios inquilinos, use el filtro Directorio + suscripción () para seleccionar el inquilino en el que desea registrar una aplicación.

  3. Busque y seleccione Microsoft Entra ID.

  4. En Administrar, seleccione Registros de aplicaciones> y, luego, Nuevo registro.

  5. Escriba un nombre para la aplicación en el campo Nombre (por ejemplo, ToDoWeb). Los usuarios de la aplicación pueden ver este nombre, el cual se puede cambiar más tarde.

  6. Para Tipos de cuenta admitidos, use el valor predeterminado Solo las cuentas de este directorio organizativo.

  7. Seleccione Registrar para crear la aplicación.

  8. En la página Overview (Información general) de la aplicación, busque el valor de Application (client) ID (Id. de cliente de la aplicación) y regístrelo para usarlo más tarde. Necesita adquirir un token de acceso.

  9. Seleccione Permisos de API>Agregar permiso>Mis API. Seleccione la aplicación ToDo que ha registrado antes y elija los permisos ToDo.Read, ToDo.Write y ToDo.Delete. Seleccione Agregar permisos.

  10. Seleccione Conceder consentimiento del administrador para <el nombre del inquilino> para conceder el consentimiento del administrador para los permisos que agregó.

    Screenshot of the Azure portal that shows the API permissions of a web application.

Adición de un usuario para acceder a API RESTful

Siga estos pasos para crear un usuario miembro en su inquilino de Microsoft Entra. Después, el usuario puede administrar los datos de la aplicación ToDo a través de las API RESTful.

  1. En Administrar, seleccione Usuarios>Nuevo usuario>Crear nuevo usuario.

  2. En la página Crear nuevo usuario, escriba la siguiente información:

    • Nombre principal de usuario: escriba un nombre para el usuario.
    • Nombre para mostrar: escriba un nombre para mostrar para el usuario.
    • Contraseña: copie la contraseña generada automáticamente que se proporciona en el cuadro Contraseña.

    Nota:

    Un usuario nuevo debe completar la primera autenticación de inicio de sesión y actualizar su contraseña; de lo contrario, recibe un error AADSTS50055: The password is expired al obtener el token de acceso.

    Cuando un usuario nuevo inicia sesión, recibe un mensaje de Acción requerida. Pueden elegir Preguntar más tarde para omitir la validación.

  3. Seleccione Review + create (Revisar y crear) para revisar las selecciones. Seleccione Crear para crear el usuario.

Actualización de la configuración de OAuth2 para la autorización en la interfaz de usuario de Swagger

Siga estos pasos para actualizar la configuración de OAuth2 para la autorización en la interfaz de usuario de Swagger. A continuación, puede autorizar a los usuarios a adquirir tokens de acceso a través de la aplicación ToDoWeb.

  1. Abra el inquilino de Microsoft Entra ID en Azure Portal y vaya a la aplicación ToDoWeb registrada.

  2. En Administrar, seleccione Autenticación, elija Agregar una plataforma y seleccione Aplicación de página única.

  3. Use el formato <your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html como URL de redireccionamiento de OAuth2 en el campo URI de redireccionamiento y, a continuación, seleccione Configurar.

    Screenshot of the Azure portal that shows the Authentication page for Microsoft Entra ID.

2. Preparar el proyecto Spring

Para implementar la aplicación de API RESTful, el primer paso es preparar el proyecto de Spring para ejecutarlo localmente.

Siga estos pasos para clonar y ejecutar la aplicación localmente:

  1. Use el siguiente comando para clonar el proyecto de muestra desde GitHub:

    git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
    
  2. Si desea ejecutar la aplicación localmente, siga primero los pasos que se indican en las secciones Exposición de API RESTful y Actualización de la configuración de la aplicación. A continuación, use el siguiente comando para ejecutar la aplicación de ejemplo con Maven:

    cd ASA-Samples-Restful-Application
    ./mvnw spring-boot:run
    

3. Preparar el entorno en la nube

Los principales recursos necesarios para ejecutar esta aplicación de ejemplo son una instancia de Azure Spring Apps y una instancia de Azure Database for PostgreSQL. En las secciones siguientes, se describe cómo crear estos recursos:

3.1. Inicio de sesión en Azure Portal

Vaya a Azure Portal y escriba sus credenciales para iniciar sesión en el portal. La vista predeterminada es el panel del servicio.

3.2. Creación de una instancia de Azure Spring Apps

Siga estos pasos para crear una instancia de servicio:

  1. En la esquina del portal, seleccione Crear un recurso.

  2. Seleccione Proceso>Azure Spring Apps.

  3. Rellene el formulario Datos básicos. Use la tabla siguiente como guía para completar el formulario. El valor de Plan recomendado es Consumo estándar y dedicado (versión preliminar).

    Configuración Valor sugerido Descripción
    Suscripción El nombre de su suscripción. La suscripción de Azure que desea usar para el servidor. Si tiene varias suscripciones, elija aquella en la que quiere que se le facture el recurso.
    Grupos de recursos myresourcegroup Un nuevo nombre de grupo de recursos o uno existente de la suscripción.
    Nombre myasa Nombre único que identifica al servicio de Azure Spring Apps. El nombre debe tener entre 4 y 32 caracteres, y solo puede contener números, letras minúsculas y guiones. El primer carácter del nombre del servicio debe ser una letra y el último debe ser una letra o un número.
    Plan Consumo estándar y dedicado (versión preliminar) El plan de precios determina los recursos y el coste asociados a la instancia.
    Región Región más cercana a los usuarios. Ubicación más cercana a los usuarios.
    Entorno de Container Apps myenvironment La opción para seleccionar la instancia del entorno de Container Apps para compartir la misma red virtual con otros servicios y recursos.

    Use la tabla siguiente como guía para crear el entorno de Container Apps:

    Configuración Valor sugerido Descripción
    Nombre del entorno myenvironment Un nombre único que identifique el servicio del entorno de Azure Container Apps.
    Plan Consumo El plan de precios determina los recursos y el coste asociados a la instancia.
    Redundancia de zona Deshabilitado La opción para crear el servicio del entorno de Container Apps en una zona de disponibilidad de Azure.
  4. Seleccione Revisar y crear para revisar las selecciones. A continuación, seleccione Crear para aprovisionar la instancia de Azure Spring Apps.

  5. En la barra de herramientas, seleccione el símbolo de Notificaciones (una campana) para supervisar el proceso de implementación. Una vez realizada la implementación, puede seleccionar Anclar al panel para crear un mosaico para este servicio en el panel de Azure Portal como un acceso directo a la página Información general del servicio.

  6. Seleccione Ir al recurso para abrir la página Información general del servicio.

    Screenshot of the Azure portal that shows the Overview page with the Notifications page open.

Importante

El perfil de carga de trabajo Consumo tiene un modelo de facturación de pago por uso, sin costo inicial. La factura del perfil de carga de trabajo dedicado se genera en función de los recursos aprovisionados. Para obtener más información, consulte Perfiles de carga de trabajo en Azure Container Apps y Precios de Azure Spring Apps.

3.3. Preparar la instancia de PostgreSQL

Para crear un servidor de Azure Database for PostgreSQL, siga los pasos siguientes:

  1. Vaya a Azure Portal y seleccione Crear un recurso.

  2. Seleccione Bases de datos>Azure Database for PostgreSQL.

  3. Seleccione la opción de implementación Servidor flexible.

    Screenshot of the Azure portal that shows the Select Azure Database for PostgreSQL deployment option page.

  4. Complete la pestaña Datos básicos con la información siguiente:

    • Nombre del servidor: my-demo-pgsql
    • Región: Este de EE. UU.
    • Versión de PostgreSQL: 14
    • Tipo de carga de trabajo: Desarrollo
    • Habilitar una alta disponibilidad: no seleccionado
    • Método de autenticación: Solo autenticación de PostgreSQL
    • Nombre de usuario administrador: myadmin
    • Contraseña y Confirmar contraseña: escriba una contraseña.
  5. Configure la pestaña Redes con la siguiente información:

    • En Método de conectividad, seleccione Acceso público (direcciones IP permitidas)
    • Permitir acceso público a este servidor desde cualquier servicio de Azure dentro de Azure: seleccionado
  6. Seleccione Revisar y crear para revisar las opciones seleccionadas y elija Crear para aprovisionar el servidor. Esta operación puede tardar unos minutos.

  7. Vaya a la página del servidor de PostgreSQL en Azure Portal. En la página Información general, busque el valor de Nombre del servidor y anótelo para usarlo más adelante. Lo necesita para configurar las variables de entorno para la aplicación en Azure Spring Apps.

  8. Seleccione Bases de datos en el menú de navegación para crear una base de datos; por ejemplo, Todo.

    Screenshot of the Azure portal that shows the Databases page with the Create Database pane open.

3.4. Conectar una instancia de aplicación a una instancia de PostgreSQL

Siga estos pasos para conectar las instancias de servicio:

  1. Vaya a la instancia de Azure Spring Apps en Azure Portal.

  2. En el menú de navegación, abra Aplicaciones y seleccione Crear aplicación.

  3. En la página Crear aplicación, rellene el nombre de la aplicación simple-todo-api y seleccione Artefactos de Java como tipo de implementación.

  4. Seleccione Crear para finalizar la creación de la aplicación y elija la aplicación para ver los detalles.

  5. Vaya a la aplicación que ha creado en Azure Portal. En la página de información general, seleccione Asignar punto de conexión para exponer el punto de conexión público de la aplicación. Guarde la dirección URL para acceder a la aplicación después de la implementación.

  6. Vaya a la aplicación creada, expanda Configuración y seleccione Configuración en el menú de navegación. Después, seleccione Variables de entorno para establecer las variables de entorno.

  7. Agregue las siguientes variables de entorno para la conexión de PostgreSQL y elija Guardar para finalizar la actualización de la configuración de la aplicación. Asegúrese de reemplazar los marcadores de posición por sus propios valores que creó antes.

    Variable de entorno Value
    SPRING_DATASOURCE_URL jdbc:postgresql://<your-PostgreSQL-server-name>:5432/<your-PostgreSQL-database-name>
    SPRING_DATASOURCE_USERNAME <your-PostgreSQL-admin-user>
    SPRING_DATASOURCE_PASSWORD <your-PostgreSQL-admin-password>

    Screenshot of the Azure portal that shows the Environment variables tab with all the values for the PostgreSQL connection.

3.5. Exposición de API RESTful

Siga estos pasos para exponer las API RESTful en Microsoft Entra ID:

  1. Inicie sesión en Azure Portal.

  2. Si tiene acceso a varios inquilinos, use el filtro Directorio + suscripción () para seleccionar el inquilino en el que desea registrar una aplicación.

  3. Busque y seleccione Microsoft Entra ID.

  4. En Administrar, seleccione Registros de aplicaciones> y, luego, Nuevo registro.

  5. Escriba un nombre para la aplicación en el campo Nombre (por ejemplo, Todo). Los usuarios de la aplicación pueden ver este nombre, el cual se puede cambiar más tarde.

  6. En Tipos de cuenta admitidos, seleccione Cuentas en cualquier directorio organizativo (cualquier directorio de Microsoft Entra: multiinquilino) y cuentas de Microsoft personales.

  7. Seleccione Registrar para crear la aplicación.

  8. En la página Overview (Información general) de la aplicación, busque el valor de Application (client) ID (Id. de cliente de la aplicación) y regístrelo para usarlo más tarde. Necesita configurar el archivo de configuración de YAML para este proyecto.

  9. En Administrar, seleccione Exponer una API, busque el URI de ID de aplicación al principio de la página y, a continuación, seleccione Agregar.

  10. En la página Editar identificador URI de ID de aplicación, acepte el URI de ID de aplicación propuesto (api://{client ID}) o use un nombre descriptivo en lugar del identificador de cliente, como api://simple-todo y, a continuación, seleccione Guardar.

  11. En Administrar, seleccione Exponer una API>Agregar un ámbito y escriba la siguiente información:

    • Para Nombre de ámbito, escriba ToDoList.Read.
    • Para ¿Quién puede dar el consentimiento?, seleccione Solo administradores.
    • En Nombre para mostrar del consentimiento del administrador, escriba Leer los datos de ToDo.
    • En Descripción del consentimiento del administrador, escriba Permitir que los usuarios autenticados lean los datos de ToDo.
    • En Estado, manténgalo habilitado.
    • Seleccione Agregar ámbito.
  12. Repita el paso anterior para agregar los otros dos ámbitos: ToDo.Write y ToDo.Delete.

    Screenshot of the Azure portal that shows the Expose an API page of a RESTful API application.

3.6. Actualización de la configuración de la aplicación

Siga estos pasos para actualizar el archivo YAML para usar la información de la aplicación registrada en Microsoft Entra con el fin de establecer una relación con la aplicación de API RESTful:

  1. Busque el archivo src/main/resources/application.yml de la aplicación simple-todo-api. Actualice la configuración de la sección spring.cloud.azure.active-directory para que coincida con el ejemplo siguiente. Asegúrese de reemplazar los marcadores de posición por los valores que creó anteriormente.

    spring:
      cloud:
        azure:
          active-directory:
            profile:
              tenant-id: <tenant>
            credential:
              client-id: <your-application-ID-of-ToDo>
            app-id-uri: <your-application-ID-URI-of-ToDo>
    

    Nota:

    En los tokens v1.0 la configuración requiere el identificador de cliente de la API, mientras que en los tokens v2.0 puede usar el identificador de cliente o el URI del identificador de la aplicación que aparece en la solicitud. Puede configurar los dos para completar correctamente la validación del público.

    Los valores permitidos para tenant-id son: common, organizations, consumers o el identificador de inquilino. Para obtener más información sobre estos valores, consulte la sección Uso del punto de conexión incorrecto (cuentas personales y de organización) de Error AADSTS50020: la cuenta de usuario del proveedor de identidades no existe en el inquilino. Para obtener información sobre la conversión de la aplicación de un solo inquilino, consulte Conversión de una aplicación de inquilino único en varios inquilinos en Microsoft Entra ID.

  2. Use el siguiente comando para recompilar el proyecto de ejemplo:

    ./mvnw clean package
    

4. Implementación de la aplicación en Azure Spring Apps

Ahora puede implementar la aplicación en Azure Spring Apps.

Siga estos pasos para implementar mediante el complemento de Maven para Azure Spring Apps:

  1. Navegue hasta el directorio completo y ejecute el siguiente comando para configurar la aplicación en Azure Spring Apps:

    ./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
    

    En la lista siguiente se describen las interacciones del comando:

    • Inicio de sesión de OAuth2: debe autorizar el inicio de sesión en Azure basado en el protocolo OAuth2.
    • Seleccionar suscripción: seleccione el número de lista de suscripciones de la instancia de Azure Spring Apps que creó, que tiene como valor predeterminado la primera suscripción de la lista. Si usa el número predeterminado, presione Entrar directamente.
    • Usar Azure Spring Apps existente en Azure: presione y para usar la instancia de Azure Spring Apps existente.
    • Seleccione Azure Spring Apps para la implementación: seleccione el número de la instancia de Azure Spring Apps que ha creado. Si usa el número predeterminado, presione Entrar directamente.
    • Use la aplicación existente en Azure Spring Apps <nombre-instancia>: presione y para usar la aplicación creada.
    • Confirme para guardar todas las configuraciones anteriores: presione y. Si presiona n, la configuración no se guardará en los archivos POM.
  2. Use el siguiente comando para implementar la aplicación:

    ./mvnw azure-spring-apps:deploy
    

    En la lista siguiente se describe la interacción del comando:

    • Inicio de sesión de OAuth2: debe autorizar el inicio de sesión en Azure basado en el protocolo OAuth2.

    Una vez ejecutado el comando, puede ver en los siguientes mensajes de registro que la implementación se ha realizado correctamente:

[INFO] Deployment(default) is successfully created
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO]   InstanceName:demo--default-xxxxxxx-xxxxxxxxx-xxxxx  Status:Running Reason:null       DiscoverStatus:NONE
[INFO] Getting public url of app(demo)...
[INFO] Application url: https://demo.<unique-identifier>.<region-name>.azurecontainerapps.io

5. Validación de la aplicación

Ya puede acceder a la API RESTful para ver si funciona.

5.1. Solicitar un token de acceso

Las API RESTful actúan como un servidor de recursos que está protegido por Microsoft Entra ID. Antes de adquirir un token de acceso, debe registrar otra aplicación en Microsoft Entra ID y conceder permisos a la aplicación cliente, que se denomina ToDoWeb.

Registro del tipo de aplicación cliente

Siga estos pasos para registrar una aplicación en Microsoft Entra ID, que se usa para agregar los permisos para la aplicación ToDo:

  1. Inicie sesión en Azure Portal.

  2. Si tiene acceso a varios inquilinos, use el filtro Directorio + suscripción () para seleccionar el inquilino en el que desea registrar una aplicación.

  3. Busque y seleccione Microsoft Entra ID.

  4. En Administrar, seleccione Registros de aplicaciones> y, luego, Nuevo registro.

  5. Escriba un nombre para la aplicación en el campo Nombre (por ejemplo, ToDoWeb). Los usuarios de la aplicación pueden ver este nombre, el cual se puede cambiar más tarde.

  6. Para Tipos de cuenta admitidos, use el valor predeterminado Solo las cuentas de este directorio organizativo.

  7. Seleccione Registrar para crear la aplicación.

  8. En la página Overview (Información general) de la aplicación, busque el valor de Application (client) ID (Id. de cliente de la aplicación) y regístrelo para usarlo más tarde. Necesita adquirir un token de acceso.

  9. Seleccione Permisos de API>Agregar permiso>Mis API. Seleccione la aplicación ToDo que ha registrado antes y elija los permisos ToDo.Read, ToDo.Write y ToDo.Delete. Seleccione Agregar permisos.

  10. Seleccione Conceder consentimiento del administrador para <el nombre del inquilino> para conceder el consentimiento del administrador para los permisos que agregó.

    Screenshot of the Azure portal that shows the API permissions of a web application.

Adición de un usuario para acceder a API RESTful

Siga estos pasos para crear un usuario miembro en su inquilino de Microsoft Entra. Después, el usuario puede administrar los datos de la aplicación ToDo a través de las API RESTful.

  1. En Administrar, seleccione Usuarios>Nuevo usuario>Crear nuevo usuario.

  2. En la página Crear nuevo usuario, escriba la siguiente información:

    • Nombre principal de usuario: escriba un nombre para el usuario.
    • Nombre para mostrar: escriba un nombre para mostrar para el usuario.
    • Contraseña: copie la contraseña generada automáticamente que se proporciona en el cuadro Contraseña.

    Nota:

    Un usuario nuevo debe completar la primera autenticación de inicio de sesión y actualizar su contraseña; de lo contrario, recibe un error AADSTS50055: The password is expired al obtener el token de acceso.

    Cuando un usuario nuevo inicia sesión, recibe un mensaje de Acción requerida. Pueden elegir Preguntar más tarde para omitir la validación.

  3. Seleccione Review + create (Revisar y crear) para revisar las selecciones. Seleccione Crear para crear el usuario.

Actualización de la configuración de OAuth2 para la autorización en la interfaz de usuario de Swagger

Siga estos pasos para actualizar la configuración de OAuth2 para la autorización en la interfaz de usuario de Swagger. A continuación, puede autorizar a los usuarios a adquirir tokens de acceso a través de la aplicación ToDoWeb.

  1. Abra el inquilino de Microsoft Entra ID en Azure Portal y vaya a la aplicación ToDoWeb registrada.

  2. En Administrar, seleccione Autenticación, elija Agregar una plataforma y seleccione Aplicación de página única.

  3. Use el formato <your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html como URL de redireccionamiento de OAuth2 en el campo URI de redireccionamiento y, a continuación, seleccione Configurar.

    Screenshot of the Azure portal that shows the Authentication page for Microsoft Entra ID.

Obtención del token de acceso

Siga estos pasos para usar el método de flujo de código de autorización de OAuth 2.0 para obtener un token de acceso con Microsoft Entra ID y acceder a las API RESTful de la aplicación ToDo:

  1. Abra la dirección URL expuesta por la aplicación y seleccione Autorizar para preparar la autenticación de OAuth2.

  2. En la ventana Autorizaciones disponibles, escriba el identificador de cliente de la aplicación ToDoWeb en el campo client_id, seleccione todos los ámbitos del campo Ámbitos, omita el campo client_secret y seleccione Autorizar para redirigir a la página de inicio de sesión de Microsoft Entra.

Después de completar el inicio de sesión con el usuario anterior, vuelve a la ventana Autorizaciones disponibles.

5.2. Acceso a las API RESTful

Siga estos pasos para acceder a las API RESTful de la aplicación ToDo en la interfaz de usuario de Swagger:

  1. Seleccione la API POST /api/simple-todo/lists y elija Pruébelo. Escriba el siguiente cuerpo de solicitud y seleccione Ejecutar para crear una lista ToDo.

    {
      "name": "My List"
    }
    

    Una vez completada la ejecución, verá el siguiente Cuerpo de respuesta:

    {
      "id": "<ID-of-the-ToDo-list>",
      "name": "My List",
      "description": null
    }
    
  2. Seleccione la API POST /api/simple-todo/lists/{listId}/items y elija Pruébelo. En listId, escriba el identificador de la lista ToDo que ha creado antes, escriba el siguiente cuerpo de solicitud y seleccione Ejecutar para crear un elemento ToDo.

    {
      "name": "My first ToDo item", 
      "listId": "<ID-of-the-ToDo-list>",
      "state": "todo"
    }
    

    Esta acción devuelve el siguiente elemento ToDo:

    {
      "id": "<ID-of-the-ToDo-item>",
      "listId": "<ID-of-the-ToDo-list>",
      "name": "My first ToDo item",
      "description": null,
      "state": "todo",
      "dueDate": "2023-07-11T13:59:24.9033069+08:00",
      "completedDate": null
    }
    
  3. Seleccione la API GET /api/simple-todo/lists y elija Ejecutar para consultar las listas ToDo. Esta acción devuelve los siguientes resultados:

    [
      {
        "id": "<ID-of-the-ToDo-list>",
        "name": "My List",
        "description": null
      }
    ]
    
  4. Seleccione la API GET /api/simple-todo/lists/{listId}/items y elija Pruébelo. En listId, escriba el identificador de la lista ToDo que ha creado antes y seleccione Ejecutar para consultar los elementos ToDo. Esta acción devuelve el siguiente elemento ToDo:

    [
      {
        "id": "<ID-of-the-ToDo-item>",
        "listId": "<ID-of-the-ToDo-list>",
        "name": "My first ToDo item",
        "description": null,
        "state": "todo",
        "dueDate": "2023-07-11T13:59:24.903307+08:00",
        "completedDate": null
      }
    ]
    
  5. Seleccione la API PUT /api/simple-todo/lists/{listId}/items/{itemId} y elija Pruébelo. En listId, escriba el identificador de la lista ToDo. En itemId, escriba el identificador del elemento ToDo, escriba el siguiente cuerpo de solicitud y seleccione Ejecutar para actualizar el elemento ToDo.

    {
      "id": "<ID-of-the-ToDo-item>",
      "listId": "<ID-of-the-ToDo-list>",
      "name": "My first ToDo item",
      "description": "Updated description.",
      "dueDate": "2023-07-11T13:59:24.903307+08:00",
      "state": "inprogress"
    }
    

    Esta acción devuelve el siguiente elemento ToDo actualizado:

    {
      "id": "<ID-of-the-ToDo-item>",
      "listId": "<ID-of-the-ToDo-list>",
      "name": "My first ToDo item",
      "description": "Updated description.",
      "state": "inprogress",
      "dueDate": "2023-07-11T05:59:24.903307Z",
      "completedDate": null
    }
    
  6. Seleccione la API DELETE /api/simple-todo/lists/{listId}/items/{itemId} y elija Pruébelo. En listId, escriba el identificador de la lista ToDo. En itemId, escriba el identificador del elemento ToDo y seleccione Ejecutar para eliminar el elemento ToDo. Debería ver que el código de respuesta del servidor es 204.

6. Limpieza de recursos

Puede eliminar el grupo de recursos de Azure, lo que incluye todos los recursos del grupo de recursos.

Siga los siguientes pasos para eliminar todo el grupo de recursos, incluyendo el servicio recién creado:

  1. Elimine el grupo de recursos en Azure Portal.

  2. En el menú de navegación, seleccione Grupos de recursos. A continuación, seleccione el nombre de su grupo de recursos (por ejemplo, myresourcegroup).

  3. En la página del grupo de recursos, seleccione Eliminar. Escriba el nombre del grupo de recursos en el cuadro de texto para confirmar la eliminación; por ejemplo, myresourcegroup. A continuación, seleccione Eliminar.

Siga los siguientes pasos para eliminar todo el grupo de recursos, incluyendo el servicio recién creado:

  1. Elimine el grupo de recursos en Azure Portal.

  2. En el menú de navegación, seleccione Grupos de recursos. A continuación, seleccione el nombre de su grupo de recursos (por ejemplo, myresourcegroup).

  3. En la página del grupo de recursos, seleccione Eliminar. Escriba el nombre del grupo de recursos en el cuadro de texto para confirmar la eliminación; por ejemplo, myresourcegroup. A continuación, seleccione Eliminar.

7. Pasos siguientes

Para más información, consulte los siguientes artículos.