

AWS Il servizio di modernizzazione del mainframe (esperienza Managed Runtime Environment) non è più aperto a nuovi clienti. Per funzionalità simili a AWS Mainframe Modernization Service (esperienza Managed Runtime Environment), esplora AWS Mainframe Modernization Service (Self-Managed Experience). I clienti esistenti possono continuare a utilizzare il servizio normalmente. [Per ulteriori informazioni, consulta AWS Modifica della disponibilità di Mainframe Modernization.](https://docs.aws.amazon.com/m2/latest/userguide/mainframe-modernization-availability-change.html)

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à.

# Configurare l'autenticazione per le applicazioni Gapwalk
<a name="ba-runtime-auth"></a>

Per configurare OAuth2 l'autenticazione per l'applicazione Gapwalk, è necessario configurare un provider di identità (IdP) e integrarlo con l'applicazione. Questa guida illustra i passaggi per utilizzare Amazon Cognito o Keycloak come IdP. Con Amazon Cognito, puoi aggiornare il file di configurazione dell'applicazione con i dettagli del pool di utenti Cognito. Con Keycloak, puoi controllare l'accesso alle tue applicazioni APIs e alle tue risorse in base ai ruoli assegnati all'utente.

**Topics**
+ [Configura l' OAuth2 autenticazione Gapwalk con Amazon Cognito](ba-runtime-auth-cognito.md)
+ [Configura l'autenticazione OAuth2 Gapwalk con Keycloak](ba-runtime-auth-keycloak.md)

# Configura l' OAuth2 autenticazione Gapwalk con Amazon Cognito
<a name="ba-runtime-auth-cognito"></a>

Questo argomento descrive come configurare OAuth2 l'autenticazione per le applicazioni Gapwalk utilizzando Amazon Cognito come provider di identità (IdP).

## Prerequisiti
<a name="ba-runtime-auth-cognito-prereq"></a>

In questo tutorial utilizzeremo Amazon Cognito come IdP e PlanetDemo come progetto modernizzato.

Puoi utilizzare qualsiasi altro provider di identità esterno. Le ClientRegistration informazioni devono essere ottenute dal tuo IdP e sono necessarie per l'autenticazione di Gapwalk. Per ulteriori informazioni, consulta la [Guida per sviluppatori di Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/) .

**Le informazioni: ClientRegistration **

client-id  
L'ID del ClientRegistration. Nel nostro esempio lo sarà. PlanetsDemo

segreto del cliente  
Il segreto del tuo cliente.

endpoint di autorizzazione  
L'URI dell'endpoint di autorizzazione per il server di autorizzazione.

endpoint del token  
L'URI dell'endpoint del token per il server di autorizzazione.

endpoint jwks  
L'URI utilizzato per ottenere la chiave Web JSON (JWK) che contiene le chiavi per la convalida della firma web JSON emessa dal server di autorizzazione.

URI di reindirizzamento  
L'URI a cui il server di autorizzazione reindirizza l'utente finale se l'accesso viene concesso.

## Configurazione di Amazon Cognito
<a name="cog-setup"></a>

Per prima cosa creeremo e configureremo un pool di utenti e utenti Amazon Cognito che utilizzeremo con la nostra applicazione Gapwalk distribuita a scopo di test.

**Nota**  
Se utilizzi un altro IdP, puoi saltare questo passaggio.

**Crea un pool di utenti**

1. Accedi ad Amazon Cognito in Console di gestione AWS ed esegui l'autenticazione utilizzando le tue credenziali. AWS 

1. Scegli **User Pools** (Pool di utenti).

1. Scegli **Create a User Pool (Crea un bacino d'utenza)**.

1. In **Configura l'esperienza di accesso**, mantieni il tipo di provider predefinito del pool di **utenti Cognito**. **Puoi scegliere una o più **opzioni di accesso al pool di utenti di Cognito**; per ora, scegli **Nome utente**, quindi scegli Avanti.**  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/cog-auth-provider.png)

1. **In **Configura i requisiti di sicurezza**, mantieni le impostazioni predefinite e disabilita **l'autenticazione a più fattori** scegliendo Nessuna **MFA**, quindi scegli Avanti.**  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/cog-sec-requirements.png)

1. **Come misura di sicurezza, disattiva **Abilita l'autoregistrazione**, quindi scegli Avanti.**  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/cog-config-sign-up.png)

1. **Scegli **Invia email con Cognito**, quindi scegli Avanti.**  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/cog-email.png)

1. In **Integra la tua app**, specifica un nome per il tuo pool di utenti. Nelle **pagine di autenticazione ospitate**, scegli **Usa l'interfaccia utente ospitata da Cognito**.  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/cog-domain.png)

1. Per semplicità, in **Dominio**, scegli **Usa un dominio Cognito** e inserisci un prefisso di dominio, ad esempio. `https://planetsdemo` L'app demo deve essere aggiunta come client.

   1. Nel **client iniziale dell'app**, scegli **Client riservato**. Inserisci il nome del client dell'app, ad esempio**planetsdemo**, quindi scegli **Genera un segreto client**.

   1. In **URL di callback consentito**, inserisci l'URL a cui reindirizzare l'utente dopo l'autenticazione. L'URL deve terminare con. `/login/oauth2/code/cognito` Ad esempio, per la nostra applicazione e le applicazioni di backend Gapwalk e 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
      ```

      Puoi modificare l'URL in un secondo momento.  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/cog-urls.png)

   1. In **Connessione consentita**, URLs inserisci l'URL della pagina di disconnessione a cui desideri reindirizzare Amazon Cognito quando l'applicazione disconnette gli utenti. Ad esempio, per le applicazioni backend Gapwalk e BAC:

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

      Puoi modificare l'URL in un secondo momento.

   1. Mantieni i valori predefiniti nelle sezioni **Impostazioni avanzate del client dell'app** e **Attribuisci autorizzazioni di lettura e scrittura**.

   1. Scegli **Next (Successivo)**.

1. In **Rivedi e crea**, verifica le tue scelte, quindi scegli **Crea pool di utenti**.

Per ulteriori informazioni, consulta [Creare un pool di utenti](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html).

**Creazione di utenti**

Poiché l'autoregistrazione è disabilitata, crea un utente Amazon Cognito. Accedi ad Amazon Cognito in. Console di gestione AWS Scegli il pool di utenti che hai creato, quindi in **Utenti** scegli **Crea utente**.

In **Informazioni utente**, scegli **Invia un invito via e-mail**, inserisci un nome utente e un indirizzo e-mail e scegli **Genera una password**. Selezionare **Create user (Crea utente)**.

**Creazione del ruolo**

Nella scheda **Gruppi**, crea 3 gruppi (SUPER\$1ADMIN, ADMIN e USER) e associa il tuo utente a uno o più di questi gruppi. Questi ruoli vengono successivamente mappati su ROLE\$1SUPER\$1ADMIN, ROLE\$1ADMIN e ROLE\$1USER dall'applicazione Gapwalk per consentire l'accesso ad alcune chiamate REST API con restrizioni.

L'applicazione scope-to-role implementa una mappatura OAuth2 gerarchica che funziona con più provider di identità. Quando i token JWT emessi da Cognito vengono utilizzati per l'autorizzazione del server di risorse, gli ambiti definiti nel token vengono mappati automaticamente ai ruoli corrispondenti.

## Integra Amazon Cognito nell'applicazione Gapwalk
<a name="integrate-cognito"></a>

Ora che il pool di utenti e gli utenti di Amazon Cognito sono pronti, vai al `application-main.yml` file della tua applicazione modernizzata e aggiungi il codice seguente:

```
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
```

Sostituisci i seguenti segnaposto come descritto:

1. Accedi ad Amazon Cognito in Console di gestione AWS ed esegui l'autenticazione utilizzando le tue credenziali. AWS 

1. Scegli **User Pools** e scegli il pool di utenti che hai creato. Puoi trovare il tuo **ID *pool-id* del pool di utenti**.

1. Scegli **l'integrazione delle app** dove puoi trovare la tua*your-cognito-domain*, quindi vai su **App client e analisi** e scegli la tua app.

1. Nel **client App: YourApp** puoi trovare *client-name**client-id*, e *client-secret* (**Mostra il segreto del client**).

1. *region-id*corrisponde all'ID della AWS regione in cui hai creato l'utente e il pool di utenti di Amazon Cognito. Esempio: `eu-west-3`.

1. Per *redirect-uri* inserisci l'URI che hai specificato per **Allowed callback** URL. Nel nostro esempio lo è`http://localhost:8080/planetsdemo/login/oauth2/code/cognito`.

Ora puoi distribuire la tua applicazione Gapwalk e utilizzare l'utente creato in precedenza per accedere alla tua app.

# Configura l'autenticazione OAuth2 Gapwalk con Keycloak
<a name="ba-runtime-auth-keycloak"></a>

Questo argomento descrive come configurare OAuth2 l'autenticazione per le applicazioni Gapwalk utilizzando Keycloak come provider di identità (IdP). In questo tutorial utilizziamo Keycloak 24.0.0.

## Prerequisiti
<a name="ba-runtime-auth-keycloak-prereq"></a>
+ [Keycloak](https://www.keycloak.org/)
+ Applicazione Gapwalk

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

1. Vai alla dashboard di Keycloak nel tuo browser web. Le credenziali predefinite sono admin/admin. Vai alla barra di navigazione in alto a sinistra e crea un realm con il nome**demo**, come mostrato nell'immagine seguente.  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/ba-runtime-auth-keycloak_2.png)

1. Crea un client con il nome**app-demo**.  
![\[User interface for creating a new client in an authentication management system.\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/ba-runtime-auth-keycloak_3.jpg)

   `localhost:8080`Sostituiscilo con l'indirizzo della tua applicazione Gapwalk  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/ba-runtime-auth-keycloak_4.png)  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/ba-runtime-auth-keycloak_5.png)

1. **Per rendere segreto il tuo client, scegli **Clients**, poi **app-demo, quindi Credenziali**.**  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/ba-runtime-auth-keycloak_6.jpg)

1. **Scegli **Clienti**, quindi Ambiti **client, quindi Aggiungi mappatore** predefinito.** **Scegli i ruoli del realm.**  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/ba-runtime-auth-keycloak_7.jpg)

1. Modifica il tuo ruolo di realm con la configurazione mostrata nell'immagine seguente.  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/ba-runtime-auth-keycloak_8.jpg)

1. Ricorda il **Token Claim Name** definito. Avrai bisogno di questo valore nella definizione delle impostazioni Gapwalk per la `gapwalk-application.security.claimGroupName` proprietà.  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/ba-runtime-auth-keycloak_9.jpg)

1. Scegli **i ruoli di Realms** e crea 3 ruoli:**SUPER\$1ADMIN**, **ADMIN** e. **USER** Questi ruoli vengono successivamente mappati su `ROLE_SUPER_ADMIN` e `ROLE_USER` dall'applicazione Gapwalk per poter accedere ad alcune chiamate API REST con restrizioni. `ROLE_ADMIN`  
![\[alt_text\]](http://docs.aws.amazon.com/it_it/m2/latest/userguide/images/ba-runtime-auth-keycloak_10.jpg)

## Integra Keycloak nell'applicazione Gapwalk
<a name="gapwalk-setup"></a>

Modifica il tuo come segue: `application-main.yml`

```
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
```

Sostituisci *<KEYCLOAK\$1SERVER\$1HOSTNAME>**<YOUR\$1REALM\$1NAME>*,*<YOUR\$1CLIENT\$1ID>*, e *<YOUR\$1CLIENT\$1SECRET>* con il nome host del server Keycloak, il nome dell'area, l'ID cliente e il segreto del cliente.