Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Implemente la autenticación basada en Microsoft Entra ID en una aplicación de mainframe modernizada de AWS Blu Age
Vishal Jaswani y Rimpy Tewani, Amazon Web Services
Resumen
nota
AWS Mainframe Modernization El servicio (experiencia de entorno de ejecución gestionado) ya no está abierto a nuevos clientes. Para obtener funcionalidades similares a las AWS Mainframe Modernization de Service (experiencia en entornos de ejecución gestionados), explore AWS Mainframe Modernization Service (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte Cambio en la disponibilidad de AWS Mainframe Modernization.
Las aplicaciones de mainframe que se modernizan mediante patrones de refactorización, como las de AWS Mainframe Modernization Refactor con AWS Blu Age, requieren una integración cuidadosa de los mecanismos de autenticación en la nueva arquitectura de la aplicación. Esta integración suele abordarse como una actividad posterior a la modernización. La tarea puede ser compleja y, a menudo, implica la migración o la externalización de los sistemas de autenticación existentes para alinearlos con los estándares de seguridad modernos y las prácticas nativas en la nube. Los desarrolladores deben considerar cómo implementar la autenticación de manera eficaz mientras trabajan dentro de las limitaciones del tiempo de ejecución y las bibliotecas de la aplicación modernizada. Tras la modernización, AWS proporciona formas de facilitar la integración del código moderno de AWS Blu Age con sistemas de administración de identidades y accesos, como Amazon Cognito y Microsoft Entra ID
Este patrón explica cómo implementar un mecanismo de autenticación en una aplicación modernizada cuando el proveedor de autenticación es Microsoft Entra ID, sin perder tiempo en investigaciones y pruebas. El patrón proporciona lo siguiente:
Bibliotecas de Angular pertinentes y probadas en campo de la Biblioteca de autenticación de Microsoft (MSAL) y otra documentación de Microsoft Entra ID que son esenciales para la implementación de la autenticación.
Se requieren configuraciones en el entorno de ejecución de AWS Blu Age para habilitar Spring Security mediante la OAuth versión 2.0.
Una biblioteca que captura las identidades de los usuarios autenticados y las pasa al AWS Blu Age Runtime.
Medidas de seguridad que recomendamos implementar.
Sugerencias de solución de problemas frecuentes con la configuración de Microsoft Entra ID.
nota
Este patrón utiliza la biblioteca de OAuth extensiones AWS Blu Age, que se proporciona a los clientes como parte de su contratación con los servicios AWS profesionales
Requisitos previos y limitaciones
Requisitos previos
Una aplicación modernizada que fue producida por las herramientas de refactorización y modernización de mainframes de AWS Blu Age. Este patrón se utiliza CardDemo
como ejemplo de una aplicación de mainframe de código abierto. La biblioteca de OAuth extensiones de AWS Blu Age, proporcionada por el equipo de AWS Blu Age durante su contratación con AWS Professional Services
. Activa Cuenta de AWS para implementar y probar la aplicación modernizada.
Familiaridad con los archivos de configuración de AWS Blu Age y los fundamentos de Microsoft Entra ID.
Limitaciones
Este patrón abarca la autenticación OAuth 2.0 y los flujos básicos de autorización basados en tokens. Los escenarios de autorización avanzada y los mecanismos de control de acceso detallados no están dentro del alcance.
Algunos Servicios de AWS no están disponibles en todos. Regiones de AWS Para obtener información sobre la disponibilidad en regiones, consulte Servicios de AWS by Region
. Para ver los puntos de conexión específicos, consulte Service endpoints and quotas y elija el enlace del servicio.
Versiones de producto
Este patrón se desarrolló mediante lo siguiente:
AWS Blu Age Runtime versión 4.1.0 (el patrón también funciona con versiones posteriores compatibles con versiones anteriores)
Biblioteca MSAL, versión 3.0.23
Java Development Kit (JDK), versión 17
Angular, versión 16.1
Arquitectura
Pila de tecnología de origen
En los entornos de mainframe típicos, la autenticación se implementa a través de los perfiles de usuario. Estos perfiles identifican a los usuarios del sistema, definen quién puede iniciar sesión y especifican qué funciones pueden llevar a cabo los usuarios con los recursos del sistema. Los perfiles de usuario los administran los responsables de seguridad o los administradores de seguridad.
Pila de tecnología de destino
ID de Microsoft Entra
Backend modernizado basado en Java Spring Boot
AWS Blu Age Runtime
Spring Security con OAuth 2.0
Aplicación de una sola página de Angular (SPA)
Arquitectura de destino
AWS El tiempo de ejecución de Blu Age admite la autenticación OAuth basada en la versión 2.0 de forma predeterminada, por lo que el patrón utiliza ese estándar para proteger el backend APIs.
En el diagrama siguiente se ilustra el flujo del proceso.
nota
En el diagrama se incluye Amazon Aurora como ejemplo de modernización de bases de datos, aunque Aurora no se incluye en los pasos de este patrón.

donde:
Un usuario intenta autenticarse con Microsoft Entra ID.
Microsoft Entra ID devuelve los tokens de actualización, acceso e ID que la aplicación utiliza en llamadas posteriores.
El interceptor MSAL incluye el token de acceso en el
Authorizationencabezado de una solicitud HTTPS para llamar al Blu Age Runtime. AWSLa
extension-oauthbiblioteca AWS Blu Age extrae la información del usuario del encabezado mediante un archivo de configuración de AWS Blu Age Runtime (application-main.yml) y coloca esta información en unSharedContextobjeto para que la lógica empresarial pueda consumirla.nota
SharedContextes un componente de tiempo de ejecución proporcionado por AWS Blu Age que gestiona la información de contexto y estado de la aplicación en toda la aplicación modernizada. Para obtener más información sobre los componentes y las actualizaciones de AWS Blu Age Runtime, consulta las notas de la versión de AWS Blu Age en la AWS Mainframe Modernization documentación. Para obtener más información sobre elapplication-main.ymlarchivo, consulte Configurar la configuración de AWS Blu Age Runtime en la AWS Mainframe Modernization documentación.El AWS Blu Age Runtime comprueba si el token está presente.
Si el token está presente, se comunica con Microsoft Entra ID para comprobar su validez.
Si el token no está presente, el AWS Blu Age Runtime devuelve un error con el código de estado HTTP 403.
Si el token es válido, el AWS Blue Age Runtime permite que la lógica empresarial continúe. Si el token no es válido, AWS Blu Age Runtime devuelve un error con el código de estado HTTP 403.
OAuth Flujo de trabajo 2.0
Para ver un diagrama de alto nivel del flujo de trabajo OAuth 2.0, consulte la documentación de Microsoft Entra
Tools (Herramientas)
Servicios de AWS
AWS Mainframe Modernizationproporciona herramientas y recursos para ayudarlo a planificar e implementar la migración y la modernización de los mainframes a los entornos de tiempo de ejecución AWS gestionados. Puede utilizar las funciones de refactorización de este servicio, que proporciona AWS Blu Age, para convertir y modernizar sus aplicaciones de mainframe antiguas.
nota
AWS Mainframe Modernization El servicio (experiencia de entorno de ejecución gestionado) ya no está abierto a nuevos clientes. Para obtener funcionalidades similares a las AWS Mainframe Modernization de Service (experiencia en entornos de ejecución gestionados), explore AWS Mainframe Modernization Service (experiencia autogestionada). Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte Cambio en la disponibilidad de AWS Mainframe Modernization.
Repositorio de código
La CardDemo aplicación se ha actualizado para demostrar la integración con Microsoft Entra ID. Puedes acceder al código de este patrón desde el GitHub repositorio
Configuración de backend
Este patrón requiere cambios en el archivo de application-main.yml configuración para habilitar Spring Security mediante el uso de la OAuth versión 2.0 en la aplicación de fondo. El archivo .yml tiene este aspecto:
gapwalk-application.security: enabled gapwalk-application: security: identity: oauth issuerUri: ${issuerUrl} claim: claims: - claimName: upn claimMapValue: username spring: autoconfigure: exclude: - org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration - org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration security: oauth2: client: registration: azure: client-id: {clientId} client-secret: ${clientSecret} provider: azure authorization-grant-type: authorization_code redirect-uri: ${redirectUri} scope: openid provider: azure: authorization-uri: ${gapwalk-application.security.issuerUri}/oauth2/v2.0/authorize token-uri: ${gapwalk-application.security.issuerUri}/oauth2/v2.0/token jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys resourceserver: jwt: jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys
AWS Biblioteca de filtros de OAuth extensiones Blu Age
La biblioteca de OAuth extensiones de AWS Blu Age la proporciona el equipo de AWS Blu Age durante su contratación con AWS Professional Services
Esta biblioteca lee la configuración claim.claims del archivo application-main.yml que se muestra en el bloque de código anterior. Esta configuración es una lista. Cada elemento de la lista proporciona dos valores: claimName y claimMapValue. claimName representa el nombre de una clave en un token web JSON (JWT) enviado por el frontend y claimMapValue es el nombre de la clave en SharedContext. Por ejemplo, si quieres capturar el ID de usuario en el backend, establezca claimName en el nombre de la clave en el JWT que contiene el valor de userId proporcionado por Microsoft Entra ID y establezca claimMapValue en el nombre de la clave para obtener el ID de usuario en el código del backend.
Por ejemplo, si establece UserId en claimMapValue, puede usar el siguiente código para extraer el ID de usuario:
SharedContext.get().getValue("userId", [UserId]);
Prácticas recomendadas
Al implementar este patrón, tenga en cuenta las siguientes consideraciones de seguridad importantes.
importante
Este patrón proporciona una base para la integración de la autenticación. Le recomendamos que implemente medidas de seguridad además de las descritas en esta sección en función de los requisitos de su empresa antes de implementarla en producción.
AWS seguridad de configuración.Mueva los valores de configuración confidenciales de
application-main.ymla AWS Secrets Manager. Por ejemplo, configure las siguientes propiedades mediante Secrets Manager:security: oauth2: client: registration: azure: client-id: {clientId} client-secret: ${clientSecret}Para obtener más información sobre cómo usar Secrets Manager para configurar los parámetros de AWS Blu Age, consulta los secretos de AWS Blu Age Runtime en la AWS Mainframe Modernization documentación.
Protección del entorno del tiempo de ejecución. Configure el entorno de aplicaciones modernizado con los controles AWS de seguridad adecuados:
server: tomcat: remoteip: protocol-header: X-Forwarded-Proto remote-ip-header: X-Forwarded-For forward-headers-strategy: NATIVECloudWatch Registro de Amazon. Considere la posibilidad de agregar el archivo
logback-spring.xml to src/main/resources:<configuration> <appender name="CLOUDWATCH" class="com.amazonaws.services.logs.logback.CloudWatchAppender"> <logGroup>/aws/bluage/application</logGroup> <logStream>${AWS_REGION}-${ENVIRONMENT}</logStream> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </layout> </appender> <root level="INFO"> <appender-ref ref="CLOUDWATCH"/> </root> </configuration>Para obtener información sobre cómo habilitar el rastreo con la correlación CloudWatch, consulte Habilitar la correlación entre el rastreo y el registro en la CloudWatch documentación.
Configuración y gestión de tokens. Configure la vida útil de los tokens en Microsoft Entra ID para adaptarla a sus requisitos de seguridad. Configure los tokens de acceso para que caduquen en 1 hora y actualícelos para que caduquen en 24 horas. En la configuración de AWS Blu Age Runtime (
application-main.yml), asegúrese de que la validación de JWT esté configurada correctamente con el URI del emisor y los valores de audiencia exactos del registro de la aplicación Entra ID.Cuando un token caduca y se actualiza:
El interceptor de errores de la aplicación de Angular gestiona la respuesta 401 obteniendo un nuevo token a través de MSAL.
El nuevo token se envía con la solicitud posterior.
El OAuth filtro del AWS Blu Age Runtime valida el nuevo token y se actualiza automáticamente
SharedContextcon la información de usuario actual. Esto garantiza que la lógica empresarial siga teniendo acceso al contexto de usuario válido a través de las llamadasSharedContext.get().getValue().
Para obtener más información sobre los componentes de AWS Blu Age Runtime y sus actualizaciones, consulta las notas de la versión de AWS Blu Age.
Seguridad del tiempo de ejecución de AWS Blu Age. La
oauth2-extbiblioteca proporcionada por AWS Blu Age debe colocarse en la ubicación correcta del directorio compartido ({app-server-home}/shared/) con los permisos de archivo adecuados. Compruebe que la biblioteca extrae correctamente la información del usuario JWTs comprobando la población deSharedContextobjetos en sus registros.Configuración de notificaciones específicas. En
application-main.yml, defina las notificaciones que necesita de Microsoft Entra ID de forma explícita. Por ejemplo, para capturar el correo electrónico y los roles del usuario, especifique lo siguiente:gapwalk-application: security: claim: claims: - claimName: upn claimMapValue: username - claimName: roles claimMapValue: userRoles - claimName: email claimMapValue: userEmailGestión de errores. Agregue el manejo de errores para abordar los errores de autenticación en su aplicación de Angular; por ejemplo:
@Injectable() export class AuthErrorInterceptor implements HttpInterceptor { intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { return next.handle(request).pipe( catchError((error: HttpErrorResponse) => { if (error.status === 401) { // Handle token expiration this.authService.login(); } if (error.status === 403) { // Handle unauthorized access this.router.navigate(['/unauthorized']); } return throwError(() => error); }) ); } }Configuración del tiempo de espera de la sesión. Configure los ajustes de tiempo de espera de la sesión tanto en el AWS Blu Age Runtime como en el Microsoft Entra ID. Por ejemplo, agregue el siguiente código al archivo
application-main.yml:server: servlet: session: timeout: 3600 # 1 hour in secondsMsalGuard. Debe implementar la MsalGuard función en todas las rutas protegidas para evitar el acceso no autorizado. Por ejemplo:
const routes: Routes = [ { path: '', redirectTo: '/transaction-runner', pathMatch: 'full' }, { path: 'transaction-runner', component: TransactionRunnerComponent, canActivate:guards }, { path: 'user-info', component: UserInfoComponent, canActivate:guards }, { path: 'term/:transid/:commarea', component: TermComponent, canActivate:guards }, { path: 'code', component: TransactionRunnerComponent } ];Se podrá acceder a las rutas que MsalGuard no estén protegidas sin autenticación, lo que podría exponer funciones confidenciales. Asegúrese de que todas las rutas que requieren autenticación incluyan las protecciones en su configuración.
Epics
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Configurar una cuenta de Microsoft Azure para crear una instancia de Entra ID. | Para ver las opciones e instrucciones, consulte el sitio web de Microsoft Azure | Desarrollador de aplicaciones |
Configurar una instancia de Microsoft Entra ID en la aplicación. | Para obtener información sobre cómo agregar la autenticación de Microsoft Entra ID B2C (Azure AD B2C) a su SPA de Angular, consulte la documentación de Microsoft
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Clona el GitHub repositorio para obtener el código angular necesario para la autenticación. | Ejecuta el siguiente comando para clonar el GitHub repositorio
| Desarrollador de aplicaciones |
Implemente el código modernizado de AWS Blu Age en un servidor Tomcat para implementar la autenticación. | Para configurar el entorno local que incluye Tomcat y el servidor de desarrollo Angular, siga los pasos de instalación proporcionados por el equipo de AWS Blu Age como parte de la interacción de los clientes con AWS los servicios profesionales. | Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Habilitar la seguridad del tiempo de ejecución de AWS Blu Age para proteger los puntos de conexión de la API de REST de AWS Blu Age. | Configure el
| Desarrollador de aplicaciones |
Incorporar el código de ejemplo de su entorno local a su base de código de Angular modernizada de Blu Age. | Para obtener información sobre cómo incorporar el ejemplo en su base de código angular modernizada de AWS Blu Age, consulte la sección sobre el repositorio de códigos que aparece anteriormente en este patrón. | Desarrollador de aplicaciones |
Colocar la biblioteca | Coloque la biblioteca
| Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Implementar la aplicación de frontend. | Ejecute los comandos siguientes para iniciar la aplicación de frontend de forma local:
notaAl agregar la marca | Desarrollador de aplicaciones |
Iniciar la aplicación de backend. | Inicie el servidor de Tomcat en Eclipse. | Desarrollador de aplicaciones |
| Tarea | Descripción | Habilidades requeridas |
|---|---|---|
Probar la funcionalidad de inicio de sesión. | Acceda a la aplicación implementada localmente en notaAquí se usa HTTP con fines ilustrativos. En un entorno de producción u otro entorno de acceso público, debe utilizar HTTPS por motivos de seguridad. Incluso para el desarrollo local, le recomendamos que configure HTTPS siempre que sea posible. Debería aparecer el mensaje de inicio de sesión de Microsoft y los usuarios configurados en Microsoft Entra ID deberían poder acceder a la aplicación. | Desarrollador de aplicaciones |
Probar el encabezado de la autorización de la solicitud. | notaEn los siguientes pasos, se usa la CardDemo
| Desarrollador de aplicaciones |
Probar la funcionalidad de cierre de sesión. | Elija Salir para cerrar sesión e intente acceder de nuevo a la aplicación. Debería ver un nuevo mensaje de inicio de sesión. | Desarrollador de aplicaciones |
Resolución de problemas
| Problema | Solución |
|---|---|
El token emitido por Microsoft Entra ID no es compatible con la seguridad de Spring Boot OAuth 2.0. | Para resolver el problema, consulta Microsoft Entra ID OAuth Flow |
Preguntas generales relacionadas con los tokens. | Para decodificar y ver el contenido de un token JWT, utilice el sitio web https://jwt.io/ |
Recursos relacionados
Para entender cómo funciona la OAuth versión 2.0, consulte el sitio web de la OAuth versión 2.0
. Para obtener información general sobre la Biblioteca de autenticación de Microsoft (MSAL), consulte la documentación de Microsoft Entra
. Para obtener información sobre los perfiles de usuario en un sistema AS/400, consulte el tutorial de IBM i (AS400)
.