

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

# Riferimento sugli hook per Trusted Language Extensions per PostgreSQL
<a name="PostgreSQL_trusted_language_extension-hooks-reference"></a>

Trusted Language Extensions per PostgreSQL supporta gli hook PostgreSQL. Un *hook* è un meccanismo di callback interno che gli sviluppatori possono usare per estendere le funzionalità di base di PostgreSQL. Utilizzando gli hook, gli sviluppatori possono implementare le proprie funzioni o procedure da utilizzare durante varie operazioni del database, modificando così il comportamento di PostgreSQL in qualche modo. Ad esempio, puoi usare un hook `passcheck` per personalizzare il modo in cui PostgreSQL gestisce le password fornite durante la creazione o la modifica delle password per gli utenti (ruoli).

Consultare la seguente documentazione per informazioni sull’hook passcheck disponibile per le estensioni TLE. Per ulteriori informazioni sugli hook disponibili, incluso l’hook di autenticazione del client, consulta [Trusted Language Extensions hooks](https://github.com/aws/pg_tle/blob/main/docs/04_hooks.md).

## Hook di verifica della password (passcheck)
<a name="passcheck_hook"></a>

L'hook `passcheck` viene utilizzato per personalizzare il comportamento di PostgreSQL durante il processo di verifica della password per i seguenti comandi SQL e il metacomando `psql`.
+ `CREATE ROLE username ...PASSWORD`: per ulteriori informazioni, consulta [CREATE ROLE](https://www.postgresql.org/docs/current/sql-createrole.html) nella documentazione di PostgreSQL.
+ `ALTER ROLE username...PASSWORD`: per ulteriori informazioni, consulta [ALTER ROLE](https://www.postgresql.org/docs/current/sql-alterrole.html) nella documentazione di PostgreSQL.
+ `\password username`: questo metacomando `psql` interattivo modifica in modo sicuro la password per l'utente specificato eseguendo l'hashing della password prima di utilizzare in modo trasparente la sintassi `ALTER ROLE ... PASSWORD`. Il metacomando è un wrapper sicuro per il comando `ALTER ROLE ... PASSWORD`, quindi l'hook si applica al comportamento del metacomando `psql`.

Per vedere un esempio, consulta [Codice di hook di controllo della password](PostgreSQL_trusted_language_extension.overview.tles-and-hooks.md#PostgreSQL_trusted_language_extension-example-hook_code_listing).

**Contents**
+ [Prototipo di funzione](#passcheck_hook-prototype)
+ [Arguments (Argomenti)](#passcheck_hook-arguments)
+ [Configurazione](#passcheck_hook-configuration)
+ [Note per l'utilizzo](#passcheck_hook-usage)

### Prototipo di funzione
<a name="passcheck_hook-prototype"></a>

```
passcheck_hook(username text, password text, password_type pgtle.password_types, valid_until timestamptz, valid_null boolean)
```

### Arguments (Argomenti)
<a name="passcheck_hook-arguments"></a>

La funzione dell'hook `passcheck` accetta i seguenti argomenti:
+ `username`: il nome (come testo) del ruolo (nome utente) che imposta una password.
+ `password`: la password in chiaro o con hash. La password immessa deve corrispondere al tipo specificato in `password_type`.
+ `password_type`: specifica il formato `pgtle.password_type` della password, che può essere costituito da una delle seguenti opzioni.
  + `PASSWORD_TYPE_PLAINTEXT`: una password in testo semplice.
  + `PASSWORD_TYPE_MD5`— Una password che è stata sottoposta a hash utilizzando l' MD5 algoritmo (message digest 5).
  + `PASSWORD_TYPE_SCRAM_SHA_256`: una password che è stata sottoposta a hash utilizzando l'algoritmo SCRAM-SHA-256.
+ `valid_until`: specifica l'ora in cui la password diventa non valida. Questo argomento è facoltativo. Se utilizzi questo argomento, specifica l'ora come valore `timestamptz`.
+ `valid_null`: se questo booleano è impostato su `true`, l'opzione `valid_until` è impostata su `NULL`.

### Configurazione
<a name="passcheck_hook-configuration"></a>

La funzione `pgtle.enable_password_check` controlla se l'hook passcheck è attivo. L'hook passcheck ha tre possibili impostazioni.
+ `off`: disattiva l'hook `passcheck` di verifica della password. Si tratta del valore di default.
+ `on`: attiva l'hook `passcode` di verifica della password in modo che le password vengano confrontate con la tabella.
+ `require`: richiede la definizione di un hook di verifica della password.

### Note per l'utilizzo
<a name="passcheck_hook-usage"></a>

Per attivare o disattivare l'hook `passcheck`, è necessario modificare il gruppo di parametri database personalizzato per l'istanza di scrittura del cluster database Aurora PostgreSQL.

Per Linux, macOS o Unix:

```
aws rds modify-db-parameter-group \
    --region aws-region \
    --db-parameter-group-name your-custom-parameter-group \
    --parameters "ParameterName=pgtle.enable_password_check,ParameterValue=on,ApplyMethod=immediate"
```

Per Windows:

```
aws rds modify-db-parameter-group ^
    --region aws-region ^
    --db-parameter-group-name your-custom-parameter-group ^
    --parameters "ParameterName=pgtle.enable_password_check,ParameterValue=on,ApplyMethod=immediate"
```