

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

# Autentica gli utenti delle applicazioni React esistenti utilizzando Amazon Cognito e l'interfaccia utente AWS Amplify
<a name="authenticate-react-app-users-cognito-amplify-ui"></a>

*Daniel Kozhemyako, Amazon Web Services*

## Riepilogo
<a name="authenticate-react-app-users-cognito-amplify-ui-summary"></a>

Questo modello mostra come aggiungere funzionalità di autenticazione a un'applicazione React frontend esistente utilizzando una libreria AWS Amplify UI e un pool di utenti Amazon Cognito.

Il modello utilizza Amazon Cognito per fornire l'autenticazione, l'autorizzazione e la gestione degli utenti per l'applicazione. Utilizza anche un componente di [Amplify](https://ui.docs.amplify.aws/react/getting-started/introduction) UI, una libreria open source che estende le funzionalità AWS Amplify di sviluppo dell'interfaccia utente (UI). Il componente [Authenticator UI](https://ui.docs.amplify.aws/react/connected-components/authenticator/advanced) gestisce le sessioni di accesso ed esegue il flusso di lavoro connesso al cloud che autentica gli utenti tramite Amazon Cognito.

Dopo aver implementato questo modello, gli utenti possono accedere utilizzando una delle seguenti credenziali:
+ Nome utente e password
+ Provider di identità social, come Apple, Facebook, Google e Amazon
+ Provider di identità aziendali compatibili con SAML 2.0 o con OpenID Connect (OIDC)

**Nota**  
Per creare un componente dell'interfaccia utente di autenticazione personalizzato, puoi eseguire il componente dell'interfaccia utente di Authenticator in modalità headless.

## Prerequisiti e limitazioni
<a name="authenticate-react-app-users-cognito-amplify-ui-prereqs"></a>

**Prerequisiti**
+ Un attivo Account AWS
+ Un'applicazione web React 18.2.0 o successiva
+ [Node.js e npm 6.14.4 o versioni successive, installati](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)

**Limitazioni**
+ Questo modello si applica solo alle applicazioni web React.
+ Questo modello utilizza un componente Amplify UI predefinito. La soluzione non copre i passaggi necessari per implementare un componente dell'interfaccia utente personalizzato.

**Versioni del prodotto**
+ Amplify UI 6.1.3 o versione successiva (Gen 1)
+ Amplify 6.0.16 o versione successiva (Gen 1)

## Architecture
<a name="authenticate-react-app-users-cognito-amplify-ui-architecture"></a>

**Architettura Target**

Il diagramma seguente mostra un'architettura che utilizza Amazon Cognito per autenticare gli utenti per un'applicazione web React.

![\[Amazon Cognito autentica gli utenti per un'applicazione web React.\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/images/pattern-img/b2cea053-6931-4404-8aa8-c623ce2024ac/images/b7f69f20-a39d-4a78-8605-7dab73c59052.png)


## Tools (Strumenti)
<a name="authenticate-react-app-users-cognito-amplify-ui-tools"></a>

**Servizi AWS**
+ [Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) fornisce autenticazione, autorizzazione e gestione degli utenti per app Web e mobili.

**Altri strumenti**
+ [Amplify](https://ui.docs.amplify.aws/react/getting-started/introduction) UI è una libreria di interfaccia utente open source che fornisce componenti personalizzabili che puoi connettere al cloud.
+ [Node.js](https://nodejs.org/en/docs/) è un ambiente di JavaScript runtime basato sugli eventi progettato per la creazione di applicazioni di rete scalabili.
+ [npm](https://docs.npmjs.com/about-npm) è un registro software che viene eseguito in un ambiente Node.js e viene utilizzato per condividere o prendere in prestito pacchetti e gestire la distribuzione di pacchetti privati.

## Best practice
<a name="authenticate-react-app-users-cognito-amplify-ui-best-practices"></a>

Se stai creando una nuova applicazione, ti consigliamo di utilizzare Amplify Gen 2.

## Epiche
<a name="authenticate-react-app-users-cognito-amplify-ui-epics"></a>

### Crea un pool di utenti Amazon Cognito
<a name="create-an-cog-user-pool"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Crea un pool di utenti. | [Crea un pool di utenti Amazon Cognito](https://docs.aws.amazon.com/cognito/latest/developerguide/tutorial-create-user-pool.html). Configura le opzioni di accesso e i requisiti di sicurezza del pool di utenti in base al tuo caso d'uso. | Sviluppatore di app | 
| Aggiungi un client per l'app. | [Configura un client di app per pool di utenti](https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-settings-client-apps.html). Questo client è necessario per consentire all'applicazione di interagire con il pool di utenti di Amazon Cognito. | Sviluppatore di app | 

### Integra il tuo pool di utenti Amazon Cognito con il componente Authenticator UI
<a name="integrate-your-cog-user-pool-with-the-authenticator-ui-component"></a>


| Operazione | Description | Competenze richieste | 
| --- | --- | --- | 
| Installare le dipendenze. | Per installare i `@aws-amplify/ui-react` pacchetti `aws-amplify` and, esegui il seguente comando dalla directory principale dell'applicazione:<pre>npm i @aws-amplify/ui-react aws-amplify</pre> | Sviluppatore di app | 
| Configura il pool di utenti. | In base all'esempio seguente, create un `aws-exports.js` file e salvatelo nella `src` cartella. Il file deve includere le seguenti informazioni:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html)<pre>// replace the user pool region, id, and app client id details<br />const awsmobile = {<br />    "aws_project_region": "put_your_region_here",<br />    "aws_cognito_region": "put_your_region_here",<br />    "aws_user_pools_id": "put_your_user_pool_id_here",<br />    "aws_user_pools_web_client_id": "put_your_user_pool_app_id_here"<br />}<br /><br />export default awsmobile;</pre> | Sviluppatore di app | 
| Importa e configura il servizio Amplify. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html) | Sviluppatore di app | 
| Aggiungi il componente Authenticator UI. | Per visualizzare il componente dell'`Authenticator`interfaccia utente, aggiungete le seguenti righe di codice al file del punto di ingresso dell'applicazione ()`App.js`:<pre>import { Authenticator } from '@aws-amplify/ui-react';<br />import '@aws-amplify/ui-react/styles.css';</pre>Lo snippet di codice di esempio importa il componente `Authenticator` UI e il file Amplify UI styles.css, necessario quando si utilizzano i temi predefiniti del componente.Il componente `Authenticator` UI fornisce due valori restituiti:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html)Vedi il seguente componente di esempio:<pre>function App() {<br />    return (<br />        <Authenticator><br />            {({ signOut, user }) => (<br />                <div><br />                    <p>Welcome {user.username}</p><br />                    <button onClick={signOut}>Sign out</button><br />                </div><br />            )}<br />        </Authenticator><br />    );<br />}</pre>Per un `App.js` file di esempio, consultate la sezione [Informazioni aggiuntive](#authenticate-react-app-users-cognito-amplify-ui-additional) di questo modello. | Sviluppatore di app | 
| (Facoltativo) Recupera le informazioni sulla sessione. | Dopo l'autenticazione di un utente, puoi recuperare i dati relativi alla sua sessione dal client Amplify. Ad esempio, puoi recuperare il token web JSON (JWT) dalla sessione di un utente in modo da poter autenticare le richieste dalla sua sessione a un'API di backend.Guarda il seguente esempio di intestazione di richiesta che include un JWT:<pre>import { fetchAuthSession } from 'aws-amplify/auth';<br />(await fetchAuthSession()).tokens?.idToken?.toString();</pre> | Sviluppatore di app | 

## risoluzione dei problemi
<a name="authenticate-react-app-users-cognito-amplify-ui-troubleshooting"></a>


| Problema | Soluzione | 
| --- | --- | 
| I nuovi utenti non possono iscriversi all'applicazione. | Come segue, assicurati che il tuo pool di utenti Amazon Cognito sia configurato per consentire agli utenti di registrarsi per far parte del pool di utenti:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/prescriptive-guidance/latest/patterns/authenticate-react-app-users-cognito-amplify-ui.html) | 
| Il componente di autenticazione ha smesso di funzionare dopo l'aggiornamento dalla v5 alla v6. | La `Auth` categoria è passata a un approccio funzionale e a parametri denominati in Amplify v6. Ora devi importare il funzionale APIs direttamente dal percorso. `aws-amplify/auth` Per ulteriori informazioni, consulta [Migrare dalla v5 alla v6](https://docs.amplify.aws/gen1/react/build-a-backend/auth/auth-migration-guide/) nella documentazione di Amplify. | 

## Risorse correlate
<a name="authenticate-react-app-users-cognito-amplify-ui-resources"></a>
+ [Guida introduttiva ad Amazon Cognito (sito Web](https://aws.amazon.com/cognito/getting-started/))AWS 
+ [Crea una nuova app React](https://reactjs.org/docs/create-a-new-react-app.html) (documentazione React)
+ [Cos'è Amazon Cognito?](https://docs.aws.amazon.com/cognito/latest/developerguide/what-is-amazon-cognito.html) (documentazione di Amazon Cognito)
+ [Libreria Amplify UI (documentazione Amplify](https://ui.docs.amplify.aws/))

## Informazioni aggiuntive
<a name="authenticate-react-app-users-cognito-amplify-ui-additional"></a>

Il `App.js` file deve contenere il seguente codice:

```
import './App.css';
import { Amplify } from 'aws-amplify';
import awsExports from './aws-exports';
import { fetchAuthSession } from 'aws-amplify/auth';
import { Authenticator } from '@aws-amplify/ui-react';
import '@aws-amplify/ui-react/styles.css';
Amplify.configure({ ...awsExports });
let token = (await fetchAuthSession()).tokens?.idToken?.toString();
function App() {
  return (
      <Authenticator>
        {({ signOut, user }) => (
            <div>
              <p>Welcome {user.username}</p>
                <p>Your token is: {token}</p>
              <button onClick={signOut}>Sign out</button>
            </div>
        )}
      </Authenticator>
  );
}

export default App;
```