

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 e autorizza i dispositivi client
<a name="ipc-client-device-auth"></a>

**Nota**  
[Questa funzionalità è disponibile per la versione 2.6.0 e successive del componente Greengrass nucleus.](greengrass-nucleus-component.md)

Utilizza il servizio IPC di autenticazione dei dispositivi client per sviluppare un componente broker locale personalizzato a cui possano connettersi i dispositivi IoT locali, come i dispositivi client.

Per utilizzare queste operazioni IPC, includi la versione 2.2.0 o successiva del componente di [autenticazione del dispositivo client come dipendenza nel componente](client-device-auth-component.md) personalizzato. È quindi possibile utilizzare le operazioni IPC nei componenti personalizzati per effettuare le seguenti operazioni:
+ Verifica l'identità dei dispositivi client che si connettono al dispositivo principale.
+ Crea una sessione per consentire a un dispositivo client di connettersi al dispositivo principale.
+ Verifica se un dispositivo client è autorizzato a eseguire un'azione.
+ Ricevi una notifica quando il certificato del server del dispositivo principale cambia.

**Topics**
+ [Versioni SDK minime](#ipc-client-device-auth-sdk-versions)
+ [Autorizzazione](#ipc-client-device-auth-authorization)
+ [VerifyClientDeviceIdentity](#ipc-operation-verifyclientdeviceidentity)
+ [GetClientDeviceAuthToken](#ipc-operation-getclientdeviceauthtoken)
+ [AuthorizeClientDeviceAction](#ipc-operation-authorizeclientdeviceaction)
+ [SubscribeToCertificateUpdates](#ipc-operation-subscribetocertificateupdates)

## Versioni SDK minime
<a name="ipc-client-device-auth-sdk-versions"></a>

La tabella seguente elenca le versioni minime da utilizzare per interagire con il servizio IPC di autenticazione del dispositivo client. SDK per dispositivi AWS IoT 


| SDK | Versione minima | 
| --- | --- | 
|  [SDK per dispositivi AWS IoT per Java v2](https://github.com/aws/aws-iot-device-sdk-java-v2)  |  v1.9.3  | 
|  [SDK per dispositivi AWS IoT per Python v2](https://github.com/aws/aws-iot-device-sdk-python-v2)  |  v1.11.3  | 
|  [SDK per dispositivi AWS IoT per C\$1\$1 v2](https://github.com/aws/aws-iot-device-sdk-cpp-v2)  |  v1.18.3  | 
|  [SDK per dispositivi AWS IoT per v2 JavaScript ](https://github.com/aws/aws-iot-device-sdk-js-v2)  |  v1.12.0  | 

## Autorizzazione
<a name="ipc-client-device-auth-authorization"></a>

Per utilizzare il servizio IPC di autenticazione del dispositivo client in un componente personalizzato, è necessario definire politiche di autorizzazione che consentano al componente di eseguire queste operazioni. Per informazioni sulla definizione delle politiche di autorizzazione, vedere. [Autorizza i componenti a eseguire operazioni IPC](interprocess-communication.md#ipc-authorization-policies)

Le politiche di autorizzazione per l'autenticazione e l'autorizzazione dei dispositivi client hanno le seguenti proprietà.

**Identificatore del servizio IPC:** `aws.greengrass.clientdevices.Auth`


| Operation | Description | Resources | 
| --- | --- | --- | 
|  `aws.greengrass#VerifyClientDeviceIdentity`  |  Consente a un componente di verificare l'identità di un dispositivo client.  |  `*`  | 
|  `aws.greengrass#GetClientDeviceAuthToken`  |  Consente a un componente di convalidare le credenziali di un dispositivo client e di creare una sessione per quel dispositivo client.  |  `*`  | 
|  `aws.greengrass#AuthorizeClientDeviceAction`  |  Consente a un componente di verificare se un dispositivo client è autorizzato a eseguire un'azione.  |  `*`  | 
|  `aws.greengrass#SubscribeToCertificateUpdates`  |  Consente a un componente di ricevere notifiche quando il certificato del server del dispositivo principale ruota.  |  `*`  | 
|  `*`  |  Consente a un componente di eseguire tutte le operazioni del servizio IPC di autenticazione del dispositivo client.  |  `*`  | 

### Esempi di politiche di autorizzazione
<a name="ipc-client-device-auth-authorization-policy-examples"></a>

È possibile fare riferimento al seguente esempio di politica di autorizzazione per configurare le politiche di autorizzazione per i componenti.

**Example Esempio di politica di autorizzazione**  
Il seguente esempio di politica di autorizzazione consente a un componente di eseguire tutte le operazioni IPC di autenticazione dei dispositivi client.  

```
{
  "accessControl": {
    "aws.greengrass.clientdevices.Auth": {
      "com.example.MyLocalBrokerComponent:clientdevices:1": {
        "policyDescription": "Allows access to authenticate and authorize client devices.",
        "operations": [
          "aws.greengrass#VerifyClientDeviceIdentity",
          "aws.greengrass#GetClientDeviceAuthToken",
          "aws.greengrass#AuthorizeClientDeviceAction",
          "aws.greengrass#SubscribeToCertificateUpdates"
        ],
        "resources": [
          "*"
        ]
      }
    }
  }
}
```

## VerifyClientDeviceIdentity
<a name="ipc-operation-verifyclientdeviceidentity"></a>

Verifica l'identità di un dispositivo client. Questa operazione verifica se il dispositivo client è valido AWS IoT .

### Richiesta
<a name="ipc-operation-verifyclientdeviceidentity-request"></a>

La richiesta di questa operazione ha i seguenti parametri:

`credential`  
Le credenziali del dispositivo client. Questo oggetto contiene `ClientDeviceCredential` le seguenti informazioni:    
`clientDeviceCertificate`(Python:) `client_device_certificate`  
Il certificato del dispositivo X.509 del dispositivo client.

### Risposta
<a name="ipc-operation-verifyclientdeviceidentity-response"></a>

La risposta di questa operazione contiene le seguenti informazioni:

`isValidClientDevice`(Python:) `is_valid_client_device`  
Se l'identità del dispositivo client è valida.

## GetClientDeviceAuthToken
<a name="ipc-operation-getclientdeviceauthtoken"></a>

Convalida le credenziali di un dispositivo client e crea una sessione per il dispositivo client. Questa operazione restituisce un token di sessione che è possibile utilizzare nelle richieste successive per [autorizzare le azioni del dispositivo client](#ipc-operation-authorizeclientdeviceaction).

Per connettere correttamente un dispositivo client, il [componente di autenticazione del dispositivo client](client-device-auth-component.md#client-device-auth-component-configuration) deve concedere l'`mqtt:connect`autorizzazione per l'ID client utilizzato dal dispositivo client.

### Richiesta
<a name="ipc-operation-getclientdeviceauthtoken-request"></a>

La richiesta di questa operazione ha i seguenti parametri:

`credential`  
Le credenziali del dispositivo client. Questo oggetto contiene `CredentialDocument` le seguenti informazioni:    
`mqttCredential`(Python:) `mqtt_credential`  
Le credenziali MQTT del dispositivo client. Specificare l'ID client e il certificato utilizzati dal dispositivo client per la connessione. Questo oggetto contiene `MQTTCredential` le seguenti informazioni:    
`clientId`(Python:) `client_id`  
L'ID client da utilizzare per la connessione.  
`certificatePem`(Python:) `certificate_pem`  
Il certificato del dispositivo X.509 da utilizzare per la connessione.  
`username`  
Questa proprietà non è attualmente utilizzata.  
`password`  
Questa proprietà non è attualmente utilizzata.

### Risposta
<a name="ipc-operation-getclientdeviceauthtoken-response"></a>

La risposta di questa operazione contiene le seguenti informazioni:

`clientDeviceAuthToken`(Python:) `client_device_auth_token`  
Il token di sessione per il dispositivo client. È possibile utilizzare questo token di sessione nelle richieste successive per autorizzare le azioni di questo dispositivo client.

## AuthorizeClientDeviceAction
<a name="ipc-operation-authorizeclientdeviceaction"></a>

Verifica se un dispositivo client è autorizzato a eseguire un'azione su una risorsa. Le *politiche di autorizzazione dei dispositivi client* specificano le autorizzazioni che i dispositivi client possono eseguire mentre sono connessi a un dispositivo principale. Le politiche di autorizzazione dei dispositivi client vengono definite quando si configura il componente di [autenticazione del dispositivo client](client-device-auth-component.md#client-device-auth-component-configuration).

### Richiesta
<a name="ipc-operation-authorizeclientdeviceaction-request"></a>

La richiesta di questa operazione ha i seguenti parametri:

`clientDeviceAuthToken`(Python:) `client_device_auth_token`  
Il token di sessione per il dispositivo client.

`operation`  
L'operazione da autorizzare.

`resource`  
La risorsa in cui il dispositivo client esegue l'operazione.

### Risposta
<a name="ipc-operation-authorizeclientdeviceaction-response"></a>

La risposta di questa operazione contiene le seguenti informazioni:

`isAuthorized`(Python:) `is_authorized`  
Se il dispositivo client è autorizzato a eseguire l'operazione sulla risorsa.

## SubscribeToCertificateUpdates
<a name="ipc-operation-subscribetocertificateupdates"></a>

Abbonati per ricevere il nuovo certificato server del dispositivo principale ogni volta che ruota. Quando il certificato del server cambia, i broker devono ricaricarlo utilizzando il nuovo certificato del server.

Per impostazione predefinita, il [componente di autenticazione del dispositivo client](client-device-auth-component.md) ruota i certificati del server ogni 7 giorni. È possibile configurare l'intervallo di rotazione tra 2 e 10 giorni.

<a name="ipc-subscribe-operation-note"></a>Questa operazione è un'operazione di sottoscrizione in cui ci si iscrive a un flusso di messaggi di eventi. Per utilizzare questa operazione, definite un gestore di risposte di flusso con funzioni che gestiscono i messaggi di evento, gli errori e la chiusura dei flussi. Per ulteriori informazioni, consulta [Iscriviti ai flussi di eventi IPC](interprocess-communication.md#ipc-subscribe-operations).

**Tipo di messaggio di evento:** `CertificateUpdateEvent`

### Richiesta
<a name="ipc-operation-subscribetocertificateupdates-request"></a>

La richiesta di questa operazione ha i seguenti parametri:

`certificateOptions`(Python:) `certificate_options`  
I tipi di aggiornamenti dei certificati a cui sottoscrivere. Questo oggetto contiene `CertificateOptions` le seguenti informazioni:    
`certificateType`(Python:) `certificate_type`  
Il tipo di aggiornamenti dei certificati a cui sottoscrivere. Scegli la seguente opzione:  
+ `SERVER`

### Risposta
<a name="ipc-operation-subscribetocertificateupdates-response"></a>

La risposta di questa operazione contiene le seguenti informazioni:

`messages`  
Il flusso di messaggi. Questo oggetto contiene `CertificateUpdateEvent` le seguenti informazioni:    
`certificateUpdate`(Python:) `certificate_update`  
Le informazioni sul nuovo certificato. Questo oggetto contiene `CertificateUpdate` le seguenti informazioni:    
`certificate`  
Il certificato.  
`privateKey`(Python:) `private_key`  
La chiave privata del certificato.  
`publicKey`(Python:) `public_key`  
La chiave pubblica del certificato.  
`caCertificates`(Python:) `ca_certificates`  
L'elenco dei certificati di autorità di certificazione (CA) nella catena di certificati CA del certificato.