

AWS Le service de modernisation du mainframe (expérience de l'environnement d'exécution géré) n'est plus ouvert aux nouveaux clients. Pour des fonctionnalités similaires au service de modernisation AWS du mainframe (expérience de l'environnement d'exécution géré), explorez le service de modernisation AWS du mainframe (expérience autogérée). Les clients existants peuvent continuer à utiliser le service normalement. Pour plus d'informations, consultez la section [Modification de la disponibilité de la modernisation du AWS mainframe](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html).

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.

# Configurer l'authentification pour les applications Gapwalk
<a name="ba-runtime-auth"></a>

Pour configurer OAuth2 l'authentification pour votre application Gapwalk, vous devez configurer un fournisseur d'identité (IdP) et l'intégrer à votre application. Ce guide décrit les étapes à suivre pour utiliser Amazon Cognito ou Keycloak comme IdP. Avec Amazon Cognito, vous pouvez mettre à jour le fichier de configuration de votre application avec les détails du groupe d'utilisateurs Cognito. Avec Keycloak, vous pouvez contrôler l'accès à votre application APIs et à vos ressources en fonction des rôles assignés à l'utilisateur.

**Topics**
+ [Configurer l' OAuth2 authentification Gapwalk avec Amazon Cognito](ba-runtime-auth-cognito.md)
+ [Configurer l' OAuth2 authentification Gapwalk avec Keycloak](ba-runtime-auth-keycloak.md)

# Configurer l' OAuth2 authentification Gapwalk avec Amazon Cognito
<a name="ba-runtime-auth-cognito"></a>

Cette rubrique explique comment configurer l' OAuth2 authentification pour les applications Gapwalk utilisant Amazon Cognito en tant que fournisseur d'identité (IdP).

## Conditions préalables
<a name="ba-runtime-auth-cognito-prereq"></a>

Dans ce didacticiel, nous utiliserons Amazon Cognito comme IdP et PlanetDemo comme projet modernisé.

Vous pouvez utiliser n'importe quel autre fournisseur d'identité externe. Les ClientRegistration informations doivent être obtenues auprès de votre IdP et sont requises pour l'authentification Gapwalk. Pour plus d'informations, consultez le [Guide du développeur Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/).

**Les ClientRegistration informations :**

identificateur du client  
ID du ClientRegistration. Dans notre exemple, ce sera le cas PlanetsDemo.

client-secret  
Le secret de votre client.

point final d'autorisation  
L'URI du point de terminaison d'autorisation pour le serveur d'autorisation.

point de terminaison symbolique  
L'URI du point de terminaison du jeton pour le serveur d'autorisation.

point de terminaison jwks  
L'URI utilisé pour obtenir la clé Web JSON (JWK) qui contient les clés permettant de valider la signature Web JSON émise par le serveur d'autorisation.

URI de redirection  
L'URI vers lequel le serveur d'autorisation redirige l'utilisateur final si l'accès est accordé.

## Configuration d'Amazon Cognito
<a name="cog-setup"></a>

Nous allons d'abord créer et configurer un groupe d'utilisateurs et un utilisateur Amazon Cognito que nous utiliserons avec notre application Gapwalk déployée à des fins de test.

**Note**  
Si vous utilisez un autre IdP, vous pouvez ignorer cette étape.

**Création d'un groupe d'utilisateurs**

1. Accédez à Amazon Cognito dans le AWS Management Console et authentifiez-vous à l'aide de vos informations d'identification. AWS 

1. Choisissez **Groupes d’utilisateurs**.

1. Sélectionnez **Create a user pool**.

1. Dans **Configurer l'expérience de connexion**, conservez le type de fournisseur par défaut du groupe **d'utilisateurs Cognito**. **Vous pouvez choisir une ou plusieurs **options de connexion au groupe d'utilisateurs de Cognito** ; pour l'instant, choisissez **Nom d'utilisateur**, puis Suivant.**  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/cog-auth-provider.png)

1. **Dans **Configurer les exigences de sécurité**, conservez les valeurs par défaut et désactivez l'**authentification multifactorielle** en choisissant Pas de **MFA**, puis en choisissant Suivant.**  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/cog-sec-requirements.png)

1. Par mesure de sécurité, désactivez **Activer l'enregistrement automatique**, puis choisissez **Suivant**.  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/cog-config-sign-up.png)

1. **Choisissez **Envoyer un e-mail avec Cognito**, puis cliquez sur Suivant.**  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/cog-email.png)

1. Dans **Intégrer votre application**, spécifiez le nom de votre groupe d'utilisateurs. Dans les **pages d'authentification hébergées**, choisissez **Utiliser l'interface utilisateur hébergée de Cognito**.  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/cog-domain.png)

1. Pour plus de simplicité, dans **Domaine**, choisissez **Utiliser un domaine Cognito** et entrez un préfixe de domaine, par exemple,. `https://planetsdemo` L'application de démonstration doit être ajoutée en tant que client.

   1. Dans **Client d'application initial**, sélectionnez **Client confidentiel**. Entrez un nom de client d'application, tel que**planetsdemo**, puis choisissez **Generate a client secret**.

   1. Dans **URL de rappel autorisée**, entrez l'URL vers laquelle rediriger l'utilisateur après l'authentification. L'URL doit se terminer par`/login/oauth2/code/cognito`. Par exemple, pour nos applications d'application et de backend Gapwalk et BAC :

      ```
      http://localhost:8080/bac
            http://localhost:8080/bac/login/oauth2/code/cognito
            http://localhost:8080/gapwalk-application
            http://localhost:8080/gapwalk-application/login/oauth2/code/cognito
            http://localhost:8080/planetsdemo
            http://localhost:8080/planetsdemo/login/oauth2/code/cognito
      ```

      Vous pourrez modifier l'URL ultérieurement.  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/cog-urls.png)

   1. Dans **Déconnexion autorisée, URLs** entrez l'URL de la page de déconnexion vers laquelle vous souhaitez qu'Amazon Cognito redirige lorsque votre application déconnecte les utilisateurs. Par exemple, pour les applications principales Gapwalk et BAC :

      ```
      http://localhost:8080/bac/logout
      http://localhost:8080/gapwalk-application/logout
      http://localhost:8080/planetsdemo/logout
      ```

      Vous pourrez modifier l'URL ultérieurement.

   1. Conservez les valeurs par défaut dans les sections **Paramètres avancés du client de l'application** et **Autorisations de lecture et d'écriture des attributs**.

   1. Choisissez **Suivant**.

1. Dans **Révision et création**, vérifiez vos choix, puis choisissez **Créer un groupe d'utilisateurs**.

Pour plus d'informations, voir [Création d'un groupe d'utilisateurs](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html).

**Création d'utilisateurs**

L'enregistrement automatique étant désactivé, créez un utilisateur Amazon Cognito. Accédez à Amazon Cognito dans le. AWS Management Console Choisissez le groupe d'utilisateurs que vous avez créé, puis dans **Utilisateurs**, choisissez **Créer un utilisateur**.

Dans **Informations utilisateur**, choisissez **Envoyer une invitation par e-mail**, entrez un nom d'utilisateur et une adresse e-mail, puis choisissez **Générer un mot de passe**. Choisissez **Create user (Créer un utilisateur)**.

**Création de rôles**

Dans l'onglet **Groupes**, créez 3 groupes (SUPER\$1ADMIN, ADMIN et USER) et associez votre utilisateur à un ou plusieurs de ces groupes. Ces rôles sont ensuite mappés à ROLE\$1SUPER\$1ADMIN, ROLE\$1ADMIN et ROLE\$1USER par l'application Gapwalk pour permettre l'accès à certains appels REST d'API restreints.

L'application implémente un scope-to-role mappage hiérarchique qui fonctionne avec plusieurs fournisseurs OAuth2 d'identité. Lorsque les jetons JWT émis par Cognito sont utilisés pour l'autorisation du serveur de ressources, les étendues définies dans le jeton sont automatiquement mappées aux rôles correspondants.

## Intégrer Amazon Cognito dans l'application Gapwalk
<a name="integrate-cognito"></a>

Maintenant que votre groupe d'utilisateurs et vos utilisateurs Amazon Cognito sont prêts, accédez au `application-main.yml` fichier de votre application modernisée et ajoutez le code suivant :

```
gapwalk-application.security: enabled
gapwalk-application.security.identity: oauth
gapwalk-application.security.issuerUri: https://cognito-idp.<region-id>.amazonaws.com/<pool-id>
gapwalk-application.security.domainName: <your-cognito-domain>

spring:
  security:
    oauth2:
      client:
        registration:
          cognito:
            client-id: <client-id>
            client-name: <client-name>
            client-secret: <client-secret>
            provider: cognito
            authorization-grant-type: authorization_code
            scope: openid
            redirect-uri: "<redirect-uri>"
        provider:
          cognito:
            issuer-uri: ${gapwalk-application.security.issuerUri}
            authorization-uri: ${gapwalk-application.security.domainName}/oauth2/authorize
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/.well-known/jwks.json
            token-uri: ${gapwalk-application.security.domainName}/oauth2/token
            user-name-attribute: username
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/.well-known/jwks.json
```

Remplacez les espaces réservés suivants comme décrit :

1. Accédez à Amazon Cognito dans le AWS Management Console et authentifiez-vous à l'aide de vos informations d'identification. AWS 

1. Choisissez **Groupes d'utilisateurs** et choisissez le groupe d'utilisateurs que vous avez créé. Vous pouvez trouver votre **identifiant *pool-id* dans le groupe d'utilisateurs**.

1. Choisissez **Intégration d'applications** où vous pouvez trouver votre*your-cognito-domain*, puis accédez à **Clients d'applications et analyses** et choisissez votre application.

1. Dans **App client : YourApp**, vous pouvez trouver le *client-name**client-id*, et *client-secret* (**Afficher le secret du client**).

1. *region-id*correspond à l'ID de AWS région dans lequel vous avez créé votre utilisateur et votre groupe d'utilisateurs Amazon Cognito. Exemple: `eu-west-3`.

1. Pour *redirect-uri* saisir l'URI que vous avez spécifié pour l'**URL de rappel autorisée**. Dans notre exemple, c'est le cas`http://localhost:8080/planetsdemo/login/oauth2/code/cognito`.

Vous pouvez désormais déployer votre application Gapwalk et utiliser l'utilisateur créé précédemment pour vous connecter à votre application.

# Configurer l' OAuth2 authentification Gapwalk avec Keycloak
<a name="ba-runtime-auth-keycloak"></a>

Cette rubrique décrit comment configurer l' OAuth2 authentification pour les applications Gapwalk utilisant Keycloak comme fournisseur d'identité (IdP). Dans ce tutoriel, nous utilisons Keycloak 24.0.0.

## Conditions préalables
<a name="ba-runtime-auth-keycloak-prereq"></a>
+ [Cape à clés](https://www.keycloak.org/)
+ Application Gapwalk

## Configuration de Keycloak
<a name="keycloak-setup"></a>

1. Accédez à votre tableau de bord Keycloak dans votre navigateur Web. Les informations d'identification par défaut sont admin/admin. Accédez à la barre de navigation en haut à gauche et créez un domaine portant le nom**demo**, comme indiqué dans l'image suivante.  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/ba-runtime-auth-keycloak_2.png)

1. Créez un client portant ce nom**app-demo**.  
![\[User interface for creating a new client in an authentication management system.\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/ba-runtime-auth-keycloak_3.jpg)

   Remplacez `localhost:8080` par l'adresse de votre application Gapwalk  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/ba-runtime-auth-keycloak_4.png)  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/ba-runtime-auth-keycloak_5.png)

1. **Pour obtenir le secret de votre client, choisissez **Clients**, **app-demo**, puis Credentials.**  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/ba-runtime-auth-keycloak_6.jpg)

1. Choisissez **Clients**, puis Étendue **du client, puis** **Ajouter un mappeur prédéfini**. Choisissez les **rôles du domaine**.  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/ba-runtime-auth-keycloak_7.jpg)

1. Modifiez votre rôle de domaine avec la configuration illustrée dans l'image suivante.  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/ba-runtime-auth-keycloak_8.jpg)

1. N'oubliez pas le **nom de demande de jeton** défini. Vous aurez besoin de cette valeur dans la définition des paramètres Gapwalk de la `gapwalk-application.security.claimGroupName` propriété.  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/ba-runtime-auth-keycloak_9.jpg)

1. Choisissez **les rôles Realms**, puis créez 3 rôles : **SUPER\$1ADMIN****ADMIN**, et**USER**. Ces rôles sont ensuite mappés à `ROLE_SUPER_ADMIN``ROLE_ADMIN`, et `ROLE_USER` par l'application Gapwalk pour pouvoir accéder à certains appels REST d'API restreints.  
![\[alt_text\]](http://docs.aws.amazon.com/fr_fr/m2/latest/userguide/images/ba-runtime-auth-keycloak_10.jpg)

## Intégrez Keycloak dans l'application Gapwalk
<a name="gapwalk-setup"></a>

Modifiez votre `application-main.yml` comme suit :

```
gapwalk-application.security: enabled
gapwalk-application.security.identity: oauth
gapwalk-application.security.issuerUri: http://<KEYCLOAK_SERVER_HOSTNAME>/realms/<YOUR_REALM_NAME>
gapwalk-application.security.claimGroupName: "keycloak:groups"

gapwalk-application.security.userAttributeName: "preferred_username"
# Use "username" for cognito, 
#     "preferred_username" for keycloak
#      or any other string

spring:
  security:
    oauth2:
      client:
        registration:
          demo:
            client-id: <YOUR_CLIENT_ID>
            client-name: Demo App
            client-secret: <YOUR_CLIENT_SECRET>
            provider: keycloak
            authorization-grant-type: authorization_code
            scope: openid
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
        provider:
          keycloak:
            issuer-uri: ${gapwalk-application.security.issuerUri}
            authorization-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/auth
            jwk-set-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/certs
            token-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/token
            user-name-attribute: ${gapwalk-application.security.userAttributeName}
      resourceserver:
        jwt:
          jwk-set-uri: ${gapwalk-application.security.issuerUri}/protocol/openid-connect/certs
```

Remplacez*<KEYCLOAK\$1SERVER\$1HOSTNAME>*, *<YOUR\$1REALM\$1NAME>**<YOUR\$1CLIENT\$1ID>*, et par le nom *<YOUR\$1CLIENT\$1SECRET>* d'hôte de votre serveur Keycloak, votre nom de domaine, votre identifiant client et votre secret client.