

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.

# Authentifier et autoriser les appareils clients
<a name="ipc-client-device-auth"></a>

**Note**  
Cette fonctionnalité est disponible pour les versions 2.6.0 et ultérieures du composant [Greengrass](greengrass-nucleus-component.md) nucleus.

Utilisez le service IPC d'authentification des appareils clients pour développer un composant de courtier local personnalisé auquel les appareils IoT locaux, tels que les appareils clients, peuvent se connecter.

Pour utiliser ces opérations IPC, incluez la version 2.2.0 ou ultérieure du composant d'[authentification du périphérique client en tant que dépendance dans votre composant](client-device-auth-component.md) personnalisé. Vous pouvez ensuite utiliser les opérations IPC dans vos composants personnalisés pour effectuer les opérations suivantes :
+ Vérifiez l'identité des appareils clients qui se connectent au périphérique principal.
+ Créez une session pour qu'un appareil client se connecte au périphérique principal.
+ Vérifiez si un appareil client est autorisé à effectuer une action.
+ Recevez une notification lorsque le certificat de serveur de l'appareil principal change.

**Topics**
+ [Versions minimales du SDK](#ipc-client-device-auth-sdk-versions)
+ [Autorisation](#ipc-client-device-auth-authorization)
+ [VerifyClientDeviceIdentity](#ipc-operation-verifyclientdeviceidentity)
+ [GetClientDeviceAuthToken](#ipc-operation-getclientdeviceauthtoken)
+ [AuthorizeClientDeviceAction](#ipc-operation-authorizeclientdeviceaction)
+ [SubscribeToCertificateUpdates](#ipc-operation-subscribetocertificateupdates)

## Versions minimales du SDK
<a name="ipc-client-device-auth-sdk-versions"></a>

Le tableau suivant répertorie les versions minimales du service IPC Kit SDK des appareils AWS IoT que vous devez utiliser pour interagir avec le service IPC d'authentification de l'appareil client.


| Kit SDK | Version minimale | 
| --- | --- | 
|  [Kit SDK des appareils AWS IoT pour Java v2](https://github.com/aws/aws-iot-device-sdk-java-v2)  |  v1.9.3  | 
|  [Kit SDK des appareils AWS IoT pour Python v2](https://github.com/aws/aws-iot-device-sdk-python-v2)  |  v1.11.3  | 
|  [Kit SDK des appareils AWS IoT pour C\$1\$1 v2](https://github.com/aws/aws-iot-device-sdk-cpp-v2)  |  v1.18.3  | 
|  [Kit SDK des appareils AWS IoT pour JavaScript v2](https://github.com/aws/aws-iot-device-sdk-js-v2)  |  v1.12.0  | 

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

Pour utiliser le service IPC d'authentification de l'appareil client dans un composant personnalisé, vous devez définir des politiques d'autorisation permettant à votre composant d'effectuer ces opérations. Pour plus d'informations sur la définition des politiques d'autorisation, consultez[Autoriser les composants à effectuer des opérations IPC](interprocess-communication.md#ipc-authorization-policies).

Les politiques d'autorisation pour l'authentification et l'autorisation des appareils clients présentent les propriétés suivantes.

**Identifiant du service IPC :** `aws.greengrass.clientdevices.Auth`


| Opération | Description | Ressources | 
| --- | --- | --- | 
|  `aws.greengrass#VerifyClientDeviceIdentity`  |  Permet à un composant de vérifier l'identité d'un appareil client.  |  `*`  | 
|  `aws.greengrass#GetClientDeviceAuthToken`  |  Permet à un composant de valider les informations d'identification d'un appareil client et de créer une session pour cet appareil client.  |  `*`  | 
|  `aws.greengrass#AuthorizeClientDeviceAction`  |  Permet à un composant de vérifier si un appareil client est autorisé à effectuer une action.  |  `*`  | 
|  `aws.greengrass#SubscribeToCertificateUpdates`  |  Permet à un composant de recevoir des notifications lorsque le certificat de serveur de l'appareil principal change.  |  `*`  | 
|  `*`  |  Permet à un composant d'effectuer toutes les opérations de service IPC d'authentification du périphérique client.  |  `*`  | 

### Exemples de politiques d'autorisation
<a name="ipc-client-device-auth-authorization-policy-examples"></a>

Vous pouvez vous référer à l'exemple de politique d'autorisation suivant pour vous aider à configurer les politiques d'autorisation pour vos composants.

**Example Exemple de politique d'autorisation**  
L'exemple de politique d'autorisation suivant permet à un composant d'effectuer toutes les opérations IPC d'authentification du périphérique 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>

Vérifiez l'identité d'un appareil client. Cette opération vérifie si le périphérique client est valide AWS IoT .

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

La demande de cette opération comporte les paramètres suivants :

`credential`  
Les informations d'identification de l'appareil client. Cet objet contient `ClientDeviceCredential` les informations suivantes :    
`clientDeviceCertificate`(Python :`client_device_certificate`)  
Le certificat de périphérique X.509 de l'appareil client.

### Réponse
<a name="ipc-operation-verifyclientdeviceidentity-response"></a>

La réponse de cette opération contient les informations suivantes :

`isValidClientDevice`(Python :`is_valid_client_device`)  
Si l'identité de l'appareil client est valide.

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

Valide les informations d'identification d'un appareil client et crée une session pour l'appareil client. Cette opération renvoie un jeton de session que vous pouvez utiliser dans les demandes suivantes pour [autoriser les actions de l'appareil client](#ipc-operation-authorizeclientdeviceaction).

Pour connecter correctement un appareil client, le [composant d'authentification du périphérique client](client-device-auth-component.md#client-device-auth-component-configuration) doit accorder l'`mqtt:connect`autorisation pour l'ID client utilisé par le périphérique client.

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

La demande de cette opération comporte les paramètres suivants :

`credential`  
Les informations d'identification de l'appareil client. Cet objet contient `CredentialDocument` les informations suivantes :    
`mqttCredential`(Python :`mqtt_credential`)  
Les informations d'identification MQTT de l'appareil client. Spécifiez l'ID client et le certificat que l'appareil client utilise pour se connecter. Cet objet contient `MQTTCredential` les informations suivantes :    
`clientId`(Python :`client_id`)  
L'ID client à utiliser pour se connecter.  
`certificatePem`(Python :`certificate_pem`)  
Le certificat de périphérique X.509 à utiliser pour la connexion.  
`username`  
Cette propriété n'est pas utilisée actuellement.  
`password`  
Cette propriété n'est pas utilisée actuellement.

### Réponse
<a name="ipc-operation-getclientdeviceauthtoken-response"></a>

La réponse de cette opération contient les informations suivantes :

`clientDeviceAuthToken`(Python :`client_device_auth_token`)  
Le jeton de session pour l'appareil client. Vous pouvez utiliser ce jeton de session dans les demandes suivantes pour autoriser les actions de cet appareil client.

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

Vérifiez si un appareil client est autorisé à effectuer une action sur une ressource. Les *politiques d'autorisation des appareils clients* spécifient les autorisations que les appareils clients peuvent exécuter lorsqu'ils sont connectés à un périphérique principal. Vous définissez les politiques d'autorisation de l'appareil client lorsque vous configurez le [composant d'authentification du périphérique client](client-device-auth-component.md#client-device-auth-component-configuration).

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

La demande de cette opération comporte les paramètres suivants :

`clientDeviceAuthToken`(Python :`client_device_auth_token`)  
Le jeton de session pour l'appareil client.

`operation`  
L'opération à autoriser.

`resource`  
Ressource sur laquelle le dispositif client effectue l'opération.

### Réponse
<a name="ipc-operation-authorizeclientdeviceaction-response"></a>

La réponse de cette opération contient les informations suivantes :

`isAuthorized`(Python :`is_authorized`)  
Si le dispositif client est autorisé à effectuer l'opération sur la ressource.

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

Abonnez-vous pour recevoir le nouveau certificat de serveur de l'appareil principal à chaque rotation. Lorsque le certificat de serveur change, les courtiers doivent le recharger à l'aide du nouveau certificat de serveur.

Le [composant d'authentification de l'appareil client](client-device-auth-component.md) effectue une rotation des certificats de serveur tous les 7 jours par défaut. Vous pouvez configurer l'intervalle de rotation entre 2 et 10 jours.

<a name="ipc-subscribe-operation-note"></a>Il s'agit d'une opération d'abonnement dans le cadre de laquelle vous vous abonnez à un flux de messages d'événements. Pour utiliser cette opération, définissez un gestionnaire de réponse au flux avec des fonctions qui gèrent les messages d'événements, les erreurs et la fermeture du flux. Pour de plus amples informations, veuillez consulter [Abonnez-vous aux diffusions d'événements IPC](interprocess-communication.md#ipc-subscribe-operations).

**Type de message d'événement :** `CertificateUpdateEvent`

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

La demande de cette opération comporte les paramètres suivants :

`certificateOptions`(Python :`certificate_options`)  
Les types de mises à jour de certificats auxquels vous devez vous abonner. Cet objet contient `CertificateOptions` les informations suivantes :    
`certificateType`(Python :`certificate_type`)  
Type de mises à jour de certificat auxquelles vous devez vous abonner. Choisissez l'option suivante :  
+ `SERVER`

### Réponse
<a name="ipc-operation-subscribetocertificateupdates-response"></a>

La réponse de cette opération contient les informations suivantes :

`messages`  
Le flux de messages. Cet objet contient `CertificateUpdateEvent` les informations suivantes :    
`certificateUpdate`(Python :`certificate_update`)  
Les informations relatives au nouveau certificat. Cet objet contient `CertificateUpdate` les informations suivantes :    
`certificate`  
Certificat.  
`privateKey`(Python :`private_key`)  
La clé privée du certificat.  
`publicKey`(Python :`public_key`)  
La clé publique du certificat.  
`caCertificates`(Python :`ca_certificates`)  
Liste des certificats de l'autorité de certification (CA) de la chaîne de certificats de l'autorité de certification du certificat.