Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Implementa l'autenticazione basata su Microsoft Entra ID in un'applicazione mainframe modernizzata AWS Blu Age
Vishal Jaswani e Rimpy Tewani, Amazon Web Services
Riepilogo
Le applicazioni mainframe modernizzate utilizzando modelli di refactoring, come quelle di Modernizzazione del mainframe AWS Refactor con AWS Blu Age, richiedono un'attenta integrazione dei meccanismi di autenticazione nella nuova architettura applicativa. Questa integrazione viene in genere considerata un'attività di post-modernizzazione. L'attività può essere complessa e spesso comporta la migrazione o l'esternalizzazione dei sistemi di autenticazione esistenti per allinearli ai moderni standard di sicurezza e alle pratiche native del cloud. Gli sviluppatori devono considerare come implementare l'autenticazione in modo efficace mentre lavorano entro i limiti dell'ambiente di runtime e delle librerie dell'applicazione modernizzata. Dopo la modernizzazione, AWS offre modi per semplificare l'integrazione del codice moderno AWS Blu Age con sistemi di gestione delle identità e degli accessi come Amazon Cognito e Microsoft Entra
Questo modello spiega come implementare un meccanismo di autenticazione nell'applicazione modernizzata quando il provider di autenticazione è Microsoft Entra ID, senza perdere tempo in ricerche e prove. Il modello prevede:
Librerie Angular testate sul campo e pertinenti della Microsoft Authentication Library (MSAL) e altra documentazione Microsoft Entra ID che sono essenziali per l'implementazione dell'autenticazione.
Configurazioni richieste su AWS Blu Age Runtime per abilitare Spring Security utilizzando 2.0. OAuth
Una libreria che acquisisce le identità degli utenti autenticati e le trasmette a Blu Age Runtime. AWS
Misure di sicurezza che consigliamo di implementare.
Suggerimenti per la risoluzione dei problemi più comuni relativi alla configurazione dell'ID Microsoft Entra.
Nota
Questo modello utilizza la libreria di OAuth estensioni AWS Blu Age, fornita ai clienti nell'ambito dei servizi AWS professionali
Prerequisiti e limitazioni
Prerequisiti
Un'applicazione modernizzata prodotta dagli strumenti di refactoring per la modernizzazione del mainframe AWS Blu Age. Questo modello utilizza CardDemo
come esempio un'applicazione mainframe open source. La libreria di OAuth estensioni AWS Blu Age, fornita dal team AWS Blu Age durante la collaborazione con AWS Professional Services
. Un attivo Account AWS per implementare e testare l'applicazione modernizzata.
Familiarità con i file di configurazione AWS Blu Age e i fondamenti dell'ID Microsoft Entra.
Limitazioni
Questo modello copre l'autenticazione OAuth 2.0 e i flussi di autorizzazione di base basati su token. Gli scenari di autorizzazione avanzati e i meccanismi di controllo degli accessi dettagliati non rientrano nell'ambito di applicazione.
Alcuni Servizi AWS non sono disponibili in tutti. Regioni AWS Per la disponibilità per regione, vedi Servizi AWS per regione
. Per endpoint specifici, consulta Endpoints and quotas del servizio e scegli il link relativo al servizio.
Versioni del prodotto
Questo modello è stato sviluppato utilizzando:
AWS Blu Age Runtime versione 4.1.0 (il pattern funziona anche con le versioni successive che sono retrocompatibili)
Libreria MSAL versione 3.0.23
Java Development Kit (JDK) versione 17
Versione Angular 16.1
Architettura
Stack di tecnologia di origine
Nei tipici ambienti mainframe, l'autenticazione viene implementata tramite profili utente. Questi profili identificano gli utenti del sistema, definiscono chi può accedere e specificano quali funzioni gli utenti possono eseguire sulle risorse di sistema. I profili utente sono gestiti dai responsabili della sicurezza o dagli amministratori della sicurezza.
Stack tecnologico Target
ID Microsoft Entra
Backend modernizzato basato su Java Spring Boot
AWS Blu Age Runtime
Spring Security con OAuth 2.0
Applicazione angolare a pagina singola (SPA)
Architettura Target
AWS Il runtime Blu Age supporta l'autenticazione OAuth basata su 2.0 per impostazione predefinita, quindi il pattern utilizza quello standard per proteggere il backend APIs.
Il diagramma seguente illustra il flusso del processo.
Nota
Il diagramma include Amazon Aurora come esempio di modernizzazione del database, sebbene Aurora non sia inclusa nei passaggi di questo modello.

dove:
Un utente tenta di autenticarsi con l'ID Microsoft Entra.
L'ID Microsoft Entra restituisce i token di aggiornamento, accesso e ID utilizzati dall'applicazione nelle chiamate successive.
L'interceptor MSAL include il token di accesso nell'
Authorization
intestazione di una richiesta HTTPS per chiamare Blu Age Runtime. AWSLa
extension-oauth
libreria AWS Blu Age estrae le informazioni dell'utente dall'intestazione utilizzando un file di configurazione AWS Blu Age Runtime (application-main.yml
) e inserisce queste informazioni in unSharedContext
oggetto in modo che la logica aziendale possa utilizzarle.Nota
SharedContext
è un componente di runtime fornito da AWS Blu Age che gestisce il contesto e le informazioni sullo stato dell'applicazione modernizzata. Per ulteriori informazioni sui componenti e sugli aggiornamenti di AWS Blu Age Runtime, consulta le note di rilascio di AWS Blu Age nella Modernizzazione del mainframe AWS documentazione. Per ulteriori informazioni sulapplication-main.yml
file, consulta Configurare la configurazione per AWS Blu Age Runtime nella Modernizzazione del mainframe AWS documentazione.Il AWS Blu Age Runtime verifica se il token è presente.
Se il token è presente, ne verifica la validità comunicando con Microsoft Entra ID.
Se il token non è presente, AWS Blu Age Runtime restituisce un errore con il codice di stato HTTP 403.
Se il token è valido, AWS Blue Age Runtime consente alla logica aziendale di continuare. Se il token non è valido, AWS Blu Age Runtime restituisce un errore con il codice di stato HTTP 403.
OAuth Flusso di lavoro 2.0
Per un diagramma di alto livello del flusso di lavoro OAuth 2.0, consulta la documentazione di Microsoft Entra
Strumenti
Servizi AWS
Modernizzazione del mainframe AWSfornisce strumenti e risorse per aiutarvi a pianificare e implementare la migrazione e la modernizzazione dai mainframe agli AWS ambienti di runtime gestiti. È possibile utilizzare le funzionalità di refactoring di questo servizio, fornite da AWS Blu Age, per convertire e modernizzare le applicazioni mainframe esistenti.
Archivio di codice
L' CardDemo applicazione è stata aggiornata per dimostrare l'integrazione con Microsoft Entra ID. È possibile accedere al codice dal GitHub repository per questo pattern.
Configurazione del backend
Questo modello richiede modifiche al file di application-main.yml
configurazione per abilitare Spring Security utilizzando OAuth 2.0 sull'applicazione di backend. Il .yml
file ha il seguente aspetto:
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 Libreria di filtri di OAuth estensione Blu Age
La libreria di OAuth estensioni AWS Blu Age viene fornita dal team AWS Blu Age durante la collaborazione con AWS Professional Services
Questa libreria legge la claim.claims
configurazione nel application-main.yml
file mostrata nel blocco di codice precedente. Questa configurazione è un elenco. Ogni elemento dell'elenco fornisce due valori: claimName
eclaimMapValue
. claimName
rappresenta un nome di chiave in un JSON Web Token (JWT) inviato dal frontend ed claimMapValue
è il nome della chiave in ingresso. SharedContext
Ad esempio, se desideri acquisire l'ID utente sul backend, imposta claimName
il nome della chiave nel JWT che contiene l'ID userId
that fornito da Microsoft Entra e imposta il nome della chiave claimMapValue
per recuperare l'ID utente nel codice di backend.
Ad esempio, se si imposta UserId
claimMapValue
, è possibile utilizzare il codice seguente per estrarre l'ID utente:
SharedContext.get().getValue("userId", [UserId]);
Best practice
Nell'implementazione di questo modello, tenete conto delle seguenti importanti considerazioni sulla sicurezza.
Importante
Questo modello fornisce una base per l'integrazione dell'autenticazione. Si consiglia di implementare misure di sicurezza oltre a quelle illustrate in questa sezione in base ai requisiti aziendali prima di implementarlo in produzione.
AWS sicurezza della configurazione.Sposta i valori di configurazione sensibili da
application-main.yml
a AWS Secrets Manager. Ad esempio, configura le seguenti proprietà utilizzando Secrets Manager:security: oauth2: client: registration: azure: client-id: {clientId} client-secret: ${clientSecret}
Per ulteriori informazioni su come utilizzare Secrets Manager per configurare i parametri AWS Blu Age, consulta AWS Blu Age Runtime secrets nella Modernizzazione del mainframe AWS documentazione.
Protezione dell'ambiente di runtime. Configura l'ambiente applicativo modernizzato con controlli di AWS sicurezza adeguati:
server: tomcat: remoteip: protocol-header: X-Forwarded-Proto remote-ip-header: X-Forwarded-For forward-headers-strategy: NATIVE
CloudWatch Registrazione su Amazon. Valuta la possibilità di aggiungere il file
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>
Per informazioni sull'abilitazione del tracciamento con CloudWatch, consulta Enable trace to log correlation nella CloudWatch documentazione.
Configurazione e gestione dei token. Configura la durata dei token in Microsoft Entra ID per allinearla ai tuoi requisiti di sicurezza. Imposta la scadenza dei token di accesso entro 1 ora e aggiorna i token in modo che scadano entro 24 ore. Nella configurazione AWS Blu Age Runtime (
application-main.yml
), assicurati che la convalida JWT sia configurata correttamente con l'URI esatto dell'emittente e i valori di audience rilevati durante la registrazione dell'applicazione Entra ID.Quando un token scade e viene aggiornato:
L'intercettore degli errori dell'applicazione Angular gestisce la risposta 401 ottenendo un nuovo token tramite MSAL.
Il nuovo token viene inviato con la richiesta successiva.
Il OAuth filtro di AWS Blu Age Runtime convalida il nuovo token e si aggiorna automaticamente
SharedContext
con le informazioni utente correnti. Ciò garantisce che la business logic continui ad avere accesso a un contesto utente valido tramiteSharedContext.get().getValue()
chiamate.
Per ulteriori informazioni sui componenti AWS Blu Age Runtime e sui relativi aggiornamenti, consulta le note di rilascio di AWS Blu Age.
Sicurezza di AWS Blu Age Runtime. La
oauth2-ext
libreria fornita da AWS Blu Age deve essere collocata nella posizione corretta della directory condivisa ({app-server-home}/shared/
) con le autorizzazioni appropriate per i file. Verifica che la libreria estragga correttamente le informazioni dell'utente JWTs controllando la popolazione degliSharedContext
oggetti nei tuoi log.Configurazione dei reclami specifici. Nel
application-main.yml
, definisci in modo esplicito le attestazioni di cui hai bisogno da Microsoft Entra ID. Ad esempio, per acquisire l'e-mail e i ruoli dell'utente, specifica:gapwalk-application: security: claim: claims: - claimName: upn claimMapValue: username - claimName: roles claimMapValue: userRoles - claimName: email claimMapValue: userEmail
Gestione degli errori. Aggiungi la gestione degli errori per risolvere gli errori di autenticazione nella tua applicazione Angular; ad esempio:
@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); }) ); } }
Configurazione del timeout della sessione. Configura le impostazioni di timeout della sessione sia in AWS Blu Age Runtime che in Microsoft Entra ID. Ad esempio, aggiungi il codice seguente al tuo
application-main.yml
file:server: servlet: session: timeout: 3600 # 1 hour in seconds
MsalGuard. È necessario implementare la MsalGuard funzionalità per tutte le rotte protette per impedire l'accesso non autorizzato. Per esempio:
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 } ];
Le rotte prive di MsalGuard protezione saranno accessibili senza autenticazione, esponendo potenzialmente funzionalità riservate. Assicurati che tutte le rotte che richiedono l'autenticazione includano le guardie nella loro configurazione.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Configura un account Microsoft Azure per creare un ID Entra. | Per opzioni e istruzioni, consulta il sito Web di Microsoft Azure | Sviluppatore di app |
Configura un ID Microsoft Entra nella tua applicazione. | Per sapere come aggiungere l'autenticazione Microsoft Entra ID B2C (Azure AD B2C) alla tua Angular SPA, consulta la documentazione Microsoft.
| Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Clona il GitHub repository per ottenere il codice Angular richiesto per l'autenticazione. | Esegui il seguente comando per clonare il GitHub repository
| Sviluppatore di app |
Implementa il codice modernizzato AWS Blu Age su un server Tomcat per implementare l'autenticazione. | Per configurare l'ambiente locale che include Tomcat e il server di sviluppo Angular, segui i passaggi di installazione forniti dal team AWS Blu Age nell'ambito del coinvolgimento dei clienti con Professional Services. AWS | Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Abilita la sicurezza di AWS Blu Age Runtime per proteggere gli endpoint dell'API REST di AWS Blu Age. | Configura il
| Sviluppatore di app |
Incorpora il codice di esempio dal tuo ambiente locale nella tua base di codice Angular modernizzata di Blu Age. | Per informazioni su come incorporare l'esempio nella tua base di codice Angular modernizzata da AWS Blu Age, consulta la sezione Code repository precedente in questo modello. | Sviluppatore di app |
Posiziona la | Posiziona la
| Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Implementa l'applicazione frontend. | Esegui i seguenti comandi per avviare l'applicazione frontend localmente:
NotaL'aggiunta del | Sviluppatore di app |
Avvia l'applicazione di backend. | Avvia il server Tomcat in Eclipse. | Sviluppatore di app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Verifica la funzionalità di accesso. | Accedi all'applicazione distribuita localmente all'indirizzo NotaHTTP viene utilizzato qui a scopo dimostrativo. In un ambiente di produzione o in un altro ambiente accessibile al pubblico, è necessario utilizzare HTTPS per motivi di sicurezza. Anche per lo sviluppo locale, ti consigliamo di configurare HTTPS quando possibile. Dovrebbe apparire la richiesta di accesso Microsoft e gli utenti configurati in Microsoft Entra ID dovrebbero poter accedere all'applicazione. | Sviluppatore di app |
Verifica l'intestazione di autorizzazione nella richiesta. | NotaI passaggi seguenti utilizzano l'CardDemo
| Sviluppatore di app |
Verifica la funzionalità di disconnessione. | Scegli Esci per disconnetterti e riprova ad accedere all'applicazione. Dovrebbe presentare una nuova richiesta di accesso. | Sviluppatore di app |
Risoluzione dei problemi
Problema | Soluzione |
---|---|
Il token emesso da Microsoft Entra ID non è compatibile con la sicurezza Spring Boot OAuth 2.0. | Per una risoluzione del problema, vedi Microsoft Entra ID OAuth Flow |
Domande generali relative ai token. | Per decodificare e visualizzare il contenuto di un token JWT, utilizza il sito Web https://jwt.io/. |
Risorse correlate
Per capire come funziona la OAuth versione 2.0, visitate il sito Web OAuth 2.0
. Per una panoramica della Microsoft Authentication Library (MSAL), consulta la documentazione di Microsoft Entra
. Per informazioni sui profili utente su un sistema AS/400, consulta il tutorial IBM i (AS4
00).