Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Mettre en œuvre l'authentification basée sur l'identifiant Microsoft Entra dans une application centrale modernisée de AWS Blu Age
Vishal Jaswani et Rimpy Tewani, Amazon Web Services
Récapitulatif
Les applications mainframe modernisées à l'aide de modèles de refactorisation, tels que ceux de AWS Mainframe Modernization Refactor with AWS Blu Age, nécessitent une intégration minutieuse des mécanismes d'authentification dans la nouvelle architecture applicative. Cette intégration est généralement considérée comme une activité de post-modernisation. La tâche peut être complexe et implique souvent la migration ou l'externalisation de systèmes d'authentification existants afin de les aligner sur les normes de sécurité modernes et les pratiques natives du cloud. Les développeurs doivent réfléchir à la manière d'implémenter efficacement l'authentification tout en respectant les contraintes de l'environnement d'exécution et des bibliothèques de l'application modernisée. Après la modernisation, vous AWS propose des moyens de faciliter l'intégration de votre code moderne AWS Blu Age aux systèmes de gestion des identités et des accès tels qu'Amazon Cognito et Microsoft Entra ID
Ce modèle explique comment implémenter un mécanisme d'authentification dans votre application modernisée lorsque le fournisseur d'authentification est Microsoft Entra ID, sans perdre de temps à effectuer des recherches et à effectuer des essais. Le patron fournit :
Bibliothèques angulaires pertinentes et testées sur le terrain provenant de la Microsoft Authentication Library (MSAL) et d'autres documents Microsoft Entra ID essentiels à la mise en œuvre de l'authentification.
Configurations requises sur le AWS Blu Age Runtime pour activer Spring Security à l'aide de la OAuth version 2.0.
Une bibliothèque qui capture les identités des utilisateurs authentifiés et les transmet au AWS Blu Age Runtime.
Mesures de sécurité que nous recommandons de mettre en œuvre.
Conseils de dépannage pour les problèmes courants liés à la configuration de l'identifiant Microsoft Entra.
Note
Ce modèle utilise la bibliothèque d' OAuth extensions AWS Blu Age, qui est fournie aux clients dans le cadre de leur engagement en matière de services AWS professionnels
Conditions préalables et limitations
Prérequis
Une application modernisée produite par les outils de refactorisation de modernisation des ordinateurs centraux de AWS Blu Age. Ce modèle est utilisé CardDemo
comme exemple d'application mainframe open source. La bibliothèque d' OAuth extensions AWS Blu Age, fournie par l'équipe AWS Blu Age lors de votre engagement avec les services AWS professionnels
. Un actif Compte AWS pour déployer et tester l'application modernisée.
Connaissance des fichiers de configuration AWS Blu Age et des principes fondamentaux de Microsoft Entra ID.
Limites
Ce modèle couvre l'authentification OAuth 2.0 et les flux d'autorisation de base basés sur des jetons. Les scénarios d'autorisation avancés et les mécanismes de contrôle d'accès précis ne sont pas concernés.
Certains Services AWS ne sont pas disponibles du tout Régions AWS. Pour connaître la disponibilité par région, voir Services AWS par région
. Pour des points de terminaison spécifiques, consultez Points de terminaison de service et quotas, puis choisissez le lien correspondant au service.
Versions du produit
Ce modèle a été développé en utilisant :
AWS Blu Age Runtime version 4.1.0 (le modèle fonctionne également avec les versions ultérieures rétrocompatibles)
bibliothèque MSAL version 3.0.23
Kit de développement Java (JDK) version 17
Version angulaire 16.1
Architecture
Pile technologique source
Dans les environnements mainframe classiques, l'authentification est mise en œuvre par le biais de profils utilisateur. Ces profils identifient les utilisateurs du système, définissent qui peut se connecter et spécifient les fonctions que les utilisateurs peuvent exécuter sur les ressources du système. Les profils utilisateur sont gérés par des responsables de la sécurité ou des administrateurs de sécurité.
Pile technologique cible
Identifiant Microsoft Entra
Backend Java Spring Boot modernisé
AWS Blue Age Runtime
Spring Security avec OAuth 2.0
Application angulaire à page unique (SPA)
Architecture cible
AWS Le moteur d'exécution Blu Age prend en charge l'authentification OAuth basée sur la version 2.0 par défaut. Le modèle utilise donc cette norme pour protéger le backend. APIs
Le schéma suivant illustre le déroulement du processus.
Note
Le schéma inclut Amazon Aurora comme exemple de modernisation de base de données, bien qu'Aurora ne soit pas inclus dans les étapes de ce modèle.

où :
Un utilisateur essaie de s'authentifier avec l'identifiant Microsoft Entra.
Microsoft Entra ID renvoie les jetons d'actualisation, d'accès et d'identification que l'application utilise lors des appels suivants.
L'intercepteur MSAL inclut le jeton d'accès dans l'
Authorization
en-tête d'une requête HTTPS pour appeler le AWS Blu Age Runtime.La
extension-oauth
bibliothèque AWS Blu Age extrait les informations utilisateur de l'en-tête à l'aide d'un fichier de configuration AWS Blu Age Runtime (application-main.yml
) et place ces informations dans unSharedContext
objet afin que la logique métier puisse les utiliser.Note
SharedContext
est un composant d'exécution fourni par AWS Blu Age qui gère le contexte de l'application et les informations d'état dans l'ensemble de l'application modernisée. Pour plus d'informations sur les composants et les mises à jour de AWS Blu Age Runtime, consultez les notes de mise à jour de AWS Blu Age dans la AWS Mainframe Modernization documentation. Pour plus d'informations sur leapplication-main.yml
fichier, consultez la section Configuration de la configuration pour AWS Blu Age Runtime dans la AWS Mainframe Modernization documentation.Le AWS Blu Age Runtime vérifie si le jeton est présent.
Si le jeton est présent, il vérifie sa validité en communiquant avec l'identifiant Microsoft Entra.
Si le jeton n'est pas présent, le AWS Blu Age Runtime renvoie une erreur avec le code d'état HTTP 403.
Si le jeton est valide, le AWS Blue Age Runtime permet à la logique métier de se poursuivre. Si le jeton n'est pas valide, le AWS Blu Age Runtime renvoie une erreur avec le code d'état HTTP 403.
OAuth flux de travail 2.0
Pour un schéma détaillé du flux de travail OAuth 2.0, consultez la documentation Microsoft Entra
Outils
Services AWS
AWS Mainframe Modernizationfournit des outils et des ressources pour vous aider à planifier et à mettre en œuvre la migration et la modernisation des mainframes vers des environnements d'exécution AWS gérés. Vous pouvez utiliser les fonctionnalités de refactoring de ce service, fournies par AWS Blu Age, pour convertir et moderniser vos anciennes applications mainframe.
Référentiel de code
L' CardDemo application a été mise à jour pour démontrer l'intégration avec Microsoft Entra ID. Vous pouvez accéder au code depuis le GitHub référentiel de ce modèle
Configuration du backend
Ce modèle nécessite des modifications du fichier application-main.yml
de configuration pour activer Spring Security en utilisant la OAuth version 2.0 sur l'application principale. Le .yml
fichier ressemble à ceci :
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 Bibliothèque de filtres d' OAuth extension Blu Age
La bibliothèque d' OAuth extensions AWS Blu Age est fournie par l'équipe AWS Blu Age lors de votre engagement auprès des services AWS professionnels
Cette bibliothèque lit la claim.claims
configuration dans le application-main.yml
fichier affiché dans le bloc de code précédent. Cette configuration est une liste. Chaque élément de la liste fournit deux valeurs : claimName
etclaimMapValue
. claimName
représente le nom d'une clé dans un jeton Web JSON (JWT) envoyé par le frontend et claimMapValue
est le nom de la clé entrée. SharedContext
Par exemple, si vous souhaitez capturer l'ID utilisateur sur le backend, définissez le nom claimName
de la clé dans le JWT qui contient l'userId
ID Microsoft Entra, et définissez le nom de la clé claimMapValue
pour récupérer l'ID utilisateur dans le code du backend.
Par exemple, si vous le configurez UserId
claimMapValue
, vous pouvez utiliser le code suivant pour extraire l'ID utilisateur :
SharedContext.get().getValue("userId", [UserId]);
Bonnes pratiques
Lors de la mise en œuvre de ce modèle, tenez compte des considérations de sécurité importantes suivantes.
Important
Ce modèle constitue la base de l'intégration de l'authentification. Nous vous recommandons de mettre en œuvre des mesures de sécurité en plus de celles décrites dans cette section en fonction des besoins de votre entreprise avant de le déployer en production.
AWS sécurité de configuration.Déplacez les valeurs de configuration sensibles de
application-main.yml
à AWS Secrets Manager. Par exemple, configurez les propriétés suivantes à l'aide de Secrets Manager :security: oauth2: client: registration: azure: client-id: {clientId} client-secret: ${clientSecret}
Pour plus d'informations sur la façon dont vous pouvez utiliser Secrets Manager pour configurer les paramètres de AWS Blu Age, consultez les secrets de AWS Blu Age Runtime dans la AWS Mainframe Modernization documentation.
Protection de l'environnement d'exécution. Configurez l'environnement applicatif modernisé avec des contrôles AWS de sécurité appropriés :
server: tomcat: remoteip: protocol-header: X-Forwarded-Proto remote-ip-header: X-Forwarded-For forward-headers-strategy: NATIVE
CloudWatch Journalisation sur Amazon. Pensez à ajouter le fichier
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>
Pour plus d'informations sur l'activation du suivi avec CloudWatch, consultez la section Activer le traçage pour enregistrer la corrélation dans la CloudWatch documentation.
Configuration et gestion des jetons. Configurez la durée de vie des jetons dans Microsoft Entra ID pour répondre à vos exigences de sécurité. Définissez les jetons d'accès pour qu'ils expirent dans un délai d'une heure et actualisez les jetons pour qu'ils expirent dans les 24 heures. Dans la configuration de AWS Blu Age Runtime (
application-main.yml
), assurez-vous que la validation JWT est correctement configurée avec l'URI exact de l'émetteur et les valeurs d'audience indiquées lors de l'enregistrement de votre application Entra ID.Lorsqu'un jeton expire et est actualisé :
L'intercepteur d'erreurs de l'application Angular gère la réponse 401 en obtenant un nouveau jeton via MSAL.
Le nouveau jeton est envoyé avec la demande suivante.
Le OAuth filtre du AWS Blu Age Runtime valide le nouveau jeton et se met automatiquement à jour
SharedContext
avec les informations utilisateur actuelles. Cela garantit que Business Logic continue d'avoir accès à un contexte utilisateur valide par le biais d'SharedContext.get().getValue()
appels.
Pour plus d'informations sur les composants de AWS Blu Age Runtime et leurs mises à jour, consultez les notes de mise à jour de AWS Blu Age.
Sécurité de l'environnement d'exécution AWS Blu Age. La
oauth2-ext
bibliothèque fournie par AWS Blu Age doit être placée dans le répertoire partagé approprié ({app-server-home}/shared/
) avec les autorisations de fichier appropriées. Vérifiez que la bibliothèque extrait correctement les informations utilisateur JWTs en vérifiant la populationSharedContext
d'objets dans vos journaux.Configuration des réclamations spécifiques. Dans
application-main.yml
, définissez explicitement les demandes dont vous avez besoin à partir de Microsoft Entra ID. Par exemple, pour capturer l'e-mail et les rôles de l'utilisateur, spécifiez :gapwalk-application: security: claim: claims: - claimName: upn claimMapValue: username - claimName: roles claimMapValue: userRoles - claimName: email claimMapValue: userEmail
Gestion des erreurs. Ajoutez la gestion des erreurs pour résoudre les échecs d'authentification dans votre application Angular ; par exemple :
@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); }) ); } }
Configuration du délai d'expiration de session. Configurez les paramètres de temporisation de session dans le AWS Blu Age Runtime et dans le Microsoft Entra ID. Ajoutez par exemple le code suivant à votre
application-main.yml
fichier :server: servlet: session: timeout: 3600 # 1 hour in seconds
MsalGuard. Vous devez implémenter MsalGuard cette fonctionnalité pour tous les itinéraires protégés afin d'empêcher tout accès non autorisé. Par exemple :
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 } ];
Les itinéraires non MsalGuard protégés seront accessibles sans authentification, ce qui peut exposer des fonctionnalités sensibles. Assurez-vous que toutes les routes qui nécessitent une authentification incluent les gardes dans leur configuration.
Épopées
Tâche | Description | Compétences requises |
---|---|---|
Configurez un compte Microsoft Azure pour créer un identifiant Entra. | Pour les options et les instructions, consultez le site Web de Microsoft Azure | Développeur d’applications |
Configurez un identifiant Microsoft Entra dans votre application. | Pour savoir comment ajouter l'authentification Microsoft Entra ID B2C (Azure AD B2C) à votre Angular SPA, consultez la documentation Microsoft
| Développeur d’applications |
Tâche | Description | Compétences requises |
---|---|---|
Clonez le GitHub référentiel pour obtenir le code angulaire requis pour l'authentification. | Exécutez la commande suivante pour cloner le GitHub référentiel
| Développeur d’applications |
Déployez le code modernisé AWS Blu Age sur un serveur Tomcat pour implémenter l'authentification. | Pour configurer l'environnement local qui inclut Tomcat et le serveur de développement Angular, suivez les étapes d'installation fournies par l'équipe AWS Blu Age dans le cadre de votre engagement client auprès des services AWS professionnels. | Développeur d’applications |
Tâche | Description | Compétences requises |
---|---|---|
Activez la sécurité d'AWS Blu Age Runtime pour protéger les points de terminaison de l'API REST AWS Blu Age. | Configurez le
| Développeur d’applications |
Intégrez l'exemple de code de votre environnement local dans votre base de code Angular modernisée de Blu Age. | Pour plus d'informations sur la façon d'intégrer l'exemple dans votre base de code Angular modernisée de AWS Blu Age, consultez la section Référentiel de code plus haut dans ce modèle. | Développeur d’applications |
Placez la | Placez la
| Développeur d’applications |
Tâche | Description | Compétences requises |
---|---|---|
Déployez l'application frontale. | Exécutez les commandes suivantes pour démarrer l'application frontale localement :
NoteL'ajout de l' | Développeur d’applications |
Démarrez l'application principale. | Démarrez le serveur Tomcat dans Eclipse. | Développeur d’applications |
Tâche | Description | Compétences requises |
---|---|---|
Testez la fonctionnalité de connexion. | Accédez à l'application déployée localement NoteLe protocole HTTP est utilisé ici à des fins de démonstration. Dans un environnement de production ou accessible au public, vous devez utiliser le protocole HTTPS pour des raisons de sécurité. Même pour le développement local, nous vous recommandons de configurer le protocole HTTPS lorsque cela est possible. L'invite de connexion Microsoft devrait apparaître et les utilisateurs configurés avec l'identifiant Microsoft Entra devraient être autorisés à accéder à l'application. | Développeur d’applications |
Testez l'en-tête d'autorisation dans la demande. | NoteLes étapes suivantes utilisent l'CardDemo
| Développeur d’applications |
Testez la fonctionnalité de déconnexion. | Choisissez Quitter pour vous déconnecter, puis réessayez d'accéder à l'application. Il devrait présenter une nouvelle invite de connexion. | Développeur d’applications |
Résolution des problèmes
Problème | Solution |
---|---|
Le jeton émis par Microsoft Entra ID n'est pas compatible avec la sécurité Spring Boot OAuth 2.0. | Pour trouver une solution à ce problème, consultez Microsoft Entra ID OAuth Flow |
Questions générales relatives aux jetons. | Pour décoder et afficher le contenu d'un jeton JWT, utilisez le site Web https://jwt.io/ |
Ressources connexes
Pour comprendre le fonctionnement de la OAuth version 2.0, consultez le site Web de la OAuth version 2.0
. Pour une présentation de la Microsoft Authentication Library (MSAL), consultez la documentation Microsoft Entra
. Pour plus d'informations sur les profils utilisateur sur un système AS/400, consultez le didacticiel IBM i (AS400)
. Pour le flux d'authentification OAuth 2.0 et OpenID Connect (OIDC) dans la plateforme d'identité Microsoft, consultez la documentation Microsoft
Entra.