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
Las aplicaciones de mainframe que se modernizan mediante patrones de refactorización, como las de Refactor con AWS Blu Age, requieren una integración cuidadosa de los mecanismos de AWS Mainframe Modernization 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 de la nube. Los desarrolladores deben considerar cómo implementar la autenticación de manera eficaz mientras trabajan dentro de las limitaciones del entorno 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:
Bibliotecas angulares relevantes 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 el uso de la versión 2.0. OAuth
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 del 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 creada 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 incluidos en el ámbito de aplicación.
Algunos Servicios de AWS no están disponibles en todos. Regiones de AWS Para ver la disponibilidad por región, consulta Servicios de AWS por región
. Para ver puntos de enlace específicos, consulta Puntos de enlace y cuotas del servicio y elige el enlace para el servicio.
Versiones de producto
Este patrón se desarrolló mediante el uso de:
AWS Blu Age Runtime, versión 4.1.0 (el patrón también funciona con versiones posteriores compatibles con versiones anteriores)
Librería MSAL, versión 3.0.23
Kit de desarrollo de Java (JDK) versión 17
Versión angular 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 realizar los usuarios con los recursos del sistema. Los perfiles de usuario los administran oficiales de seguridad o administradores de seguridad.
Pila de tecnología de destino
ID de Microsoft Entra
Backend modernizado basado en Java Spring Boot
AWS Tiempo de ejecución de Blue Age
Spring Security con OAuth 2.0
Aplicación angular de una sola página (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
El siguiente diagrama ilustra el flujo del proceso.
nota
El diagrama 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 el 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
Authorization
encabezado de una solicitud HTTPS para llamar al AWS Blu Age Runtime.La
extension-oauth
biblioteca 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 unSharedContext
objeto para que la lógica empresarial pueda consumirla.nota
SharedContext
es 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.yml
archivo, 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, comprueba su validez comunicándose con Microsoft Entra ID.
Si el token no está presente, 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
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.
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 backend. El .yml
archivo 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 claim.claims
configuración del application-main.yml
archivo 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
yclaimMapValue
. claimName
representa el nombre de una clave en un token web JSON (JWT) enviado por la interfaz y claimMapValue
es el nombre de la clave. SharedContext
Por ejemplo, si quieres capturar el ID de usuario en el backend, claimName
configúralo en el nombre de la clave en el JWT que contiene el userId
ID de Microsoft Entra y configúralo en el nombre de la clave claimMapValue
para obtener el ID de usuario en el código del backend.
Por ejemplo, si lo UserId
configurasclaimMapValue
, puedes 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 implementarlas en producción.
AWS seguridad de configuración.Mueva los valores de configuración confidenciales de
application-main.yml
a 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 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: NATIVE
CloudWatch Registro de Amazon. Considera añadir 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 CloudWatch, consulte Habilitar la correlación entre el rastreo y el registro en la CloudWatch documentación.
Configuración y manejo de los tokens. Configure la vida útil de los tokens en Microsoft Entra ID para adaptarla a sus requisitos de seguridad. Configura los tokens de acceso para que caduquen en 1 hora y actualízalos 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 de su registro en la aplicación Entra ID.Cuando un token caduca y se actualiza:
El interceptor de errores de la aplicación 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 de AWS Blu Age Runtime valida el nuevo token y se actualiza automáticamente
SharedContext
con la información del usuario actual. Esto garantiza que la lógica empresarial siga teniendo acceso al contexto de usuario válido a través deSharedContext.get().getValue()
las llamadas.
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 en tiempo de ejecución de AWS Blu Age. La
oauth2-ext
biblioteca 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 deSharedContext
objetos en sus registros.Configuración de reclamaciones específica. En
application-main.yml
, defina las afirmaciones que necesita de Microsoft Entra ID de forma explícita. Por ejemplo, para capturar el correo electrónico y las funciones del usuario, especifique:gapwalk-application: security: claim: claims: - claimName: upn claimMapValue: username - claimName: roles claimMapValue: userRoles - claimName: email claimMapValue: userEmail
Gestión de errores. Agregue el manejo de errores para abordar las fallas de autenticación en su aplicación 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, agrega el siguiente código a tu
application-main.yml
archivo:server: servlet: session: timeout: 3600 # 1 hour in seconds
MsalGuard. 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 |
---|---|---|
Configure una cuenta de Microsoft Azure para crear un ID de Entra. | Para ver las opciones e instrucciones, consulte el sitio web de Microsoft Azure | Desarrollador de aplicaciones |
Configura un Microsoft Entra ID en tu aplicación. | Para obtener información sobre cómo agregar la autenticación Microsoft Entra ID B2C (Azure AD B2C) a su Angular SPA, 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 |
---|---|---|
Habilite la seguridad de AWS Blu Age Runtime para proteger los puntos de conexión de la API REST de AWS Blu Age. | Configure el
| Desarrollador de aplicaciones |
Incorpore el código de ejemplo de su entorno local a su base de código 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ódigo que aparece anteriormente en este patrón. | Desarrollador de aplicaciones |
Coloca la | Coloque la
| Desarrollador de aplicaciones |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Implemente la aplicación frontend. | Ejecute los siguientes comandos para iniciar la aplicación frontend de forma local:
notaAl añadir la | Desarrollador de aplicaciones |
Inicie la aplicación de backend. | Inicie el servidor Tomcat en Eclipse. | Desarrollador de aplicaciones |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Pruebe la funcionalidad de inicio de sesión. | Acceda a la aplicación implementada localmente en notaAquí se utiliza HTTP con fines de demostración. 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 |
Pruebe el encabezado de autorización de la solicitud. | notaEn los siguientes pasos, se utiliza la CardDemo
| Desarrollador de aplicaciones |
Pruebe la funcionalidad de cierre de sesión. | Seleccione Salir para cerrar sesión e intente acceder de nuevo a la aplicación. Debería presentar un nuevo mensaje de inicio de sesión. | Desarrollador de aplicaciones |
Solució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).