

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Otentikasi dan otorisasi perangkat klien
<a name="ipc-client-device-auth"></a>

**catatan**  
[Fitur ini tersedia untuk v2.6.0 dan yang lebih baru dari komponen inti Greengrass.](greengrass-nucleus-component.md)

Gunakan layanan IPC autentikasi perangkat klien untuk mengembangkan komponen broker lokal khusus di mana perangkat IoT lokal, seperti perangkat klien, dapat terhubung.

Untuk menggunakan operasi IPC ini, sertakan versi 2.2.0 atau yang lebih baru dari [komponen autentikasi perangkat klien sebagai dependensi dalam komponen](client-device-auth-component.md) kustom Anda. Anda kemudian dapat menggunakan operasi IPC di komponen kustom Anda untuk melakukan hal berikut:
+ Verifikasi identitas perangkat klien yang terhubung ke perangkat inti.
+ Buat sesi untuk perangkat klien untuk terhubung ke perangkat inti.
+ Verifikasi apakah perangkat klien memiliki izin untuk melakukan tindakan.
+ Menerima pemberitahuan saat sertifikat server perangkat inti berputar.

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

## SDK (Versi Minimum)
<a name="ipc-client-device-auth-sdk-versions"></a>

Tabel berikut mencantumkan versi minimum AWS IoT Device SDK yang harus Anda gunakan untuk berinteraksi dengan layanan IPC autentikasi perangkat klien.


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

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

Untuk menggunakan layanan IPC autentikasi perangkat klien dalam komponen kustom, Anda harus menentukan kebijakan otorisasi yang memungkinkan komponen Anda melakukan operasi ini. Untuk informasi tentang cara menentukan kebijakan otorisasi, lihat [Otorisasi komponen untuk melakukan operasi IPC](interprocess-communication.md#ipc-authorization-policies).

Kebijakan otorisasi untuk otentikasi dan otorisasi perangkat klien memiliki properti berikut.

**Pengenal layanan IPC:** `aws.greengrass.clientdevices.Auth`


| Operasi | Deskripsi | Sumber daya | 
| --- | --- | --- | 
|  `aws.greengrass#VerifyClientDeviceIdentity`  |  Memungkinkan komponen untuk memverifikasi identitas perangkat klien.  |  `*`  | 
|  `aws.greengrass#GetClientDeviceAuthToken`  |  Memungkinkan komponen untuk memvalidasi kredensi perangkat klien dan membuat sesi untuk perangkat klien tersebut.  |  `*`  | 
|  `aws.greengrass#AuthorizeClientDeviceAction`  |  Memungkinkan komponen untuk memverifikasi apakah perangkat klien memiliki izin untuk melakukan tindakan.  |  `*`  | 
|  `aws.greengrass#SubscribeToCertificateUpdates`  |  Memungkinkan komponen untuk menerima pemberitahuan ketika sertifikat server perangkat inti berputar.  |  `*`  | 
|  `*`  |  Memungkinkan komponen untuk melakukan semua operasi layanan IPC autentikasi perangkat klien.  |  `*`  | 

### Contoh kebijakan otorisasi
<a name="ipc-client-device-auth-authorization-policy-examples"></a>

Anda dapat mereferensikan contoh kebijakan otorisasi berikut untuk membantu Anda mengonfigurasi kebijakan otorisasi untuk komponen Anda.

**Example Contoh kebijakan otorisasi**  
Contoh kebijakan otorisasi berikut memungkinkan komponen untuk melakukan semua operasi IPC autentikasi perangkat klien.  

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

Verifikasi identitas perangkat klien. Operasi ini memverifikasi apakah perangkat klien adalah AWS IoT hal yang valid.

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

Permintaan operasi ini memiliki parameter berikut:

`credential`  
Kredensi perangkat klien. Objek ini, `ClientDeviceCredential`, berisi informasi berikut:    
`clientDeviceCertificate`(Python:) `client_device_certificate`  
Sertifikat perangkat X.509 perangkat klien.

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

Tanggapan operasi ini memiliki informasi berikut:

`isValidClientDevice`(Python:) `is_valid_client_device`  
Apakah identitas perangkat klien valid.

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

Memvalidasi kredensi perangkat klien dan membuat sesi untuk perangkat klien. Operasi ini mengembalikan token sesi yang dapat Anda gunakan dalam permintaan berikutnya untuk [mengotorisasi tindakan perangkat klien](#ipc-operation-authorizeclientdeviceaction).

Agar berhasil menghubungkan perangkat klien, [komponen autentikasi perangkat klien](client-device-auth-component.md#client-device-auth-component-configuration) harus memberikan `mqtt:connect` izin untuk ID klien yang digunakan perangkat klien.

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

Permintaan operasi ini memiliki parameter berikut:

`credential`  
Kredensi perangkat klien. Objek ini, `CredentialDocument`, berisi informasi berikut:    
`mqttCredential`(Python:) `mqtt_credential`  
Kredensi MQTT perangkat klien. Tentukan ID klien dan sertifikat yang digunakan perangkat klien untuk terhubung. Objek ini, `MQTTCredential`, berisi informasi berikut:    
`clientId`(Python:) `client_id`  
ID klien yang digunakan untuk terhubung.  
`certificatePem`(Python:) `certificate_pem`  
Sertifikat perangkat X.509 yang digunakan untuk menghubungkan.  
`username`  
Properti ini saat ini tidak digunakan.  
`password`  
Properti ini saat ini tidak digunakan.

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

Tanggapan operasi ini memiliki informasi berikut:

`clientDeviceAuthToken`(Python:) `client_device_auth_token`  
Token sesi untuk perangkat klien. Anda dapat menggunakan token sesi ini dalam permintaan berikutnya untuk mengotorisasi tindakan perangkat klien ini.

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

Verifikasi apakah perangkat klien memiliki izin untuk melakukan tindakan pada sumber daya. *Kebijakan otorisasi perangkat klien* menentukan izin yang dapat dilakukan perangkat klien saat terhubung ke perangkat inti. Anda menentukan kebijakan otorisasi perangkat klien saat mengonfigurasi komponen [autentikasi perangkat klien](client-device-auth-component.md#client-device-auth-component-configuration).

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

Permintaan operasi ini memiliki parameter berikut:

`clientDeviceAuthToken`(Python:) `client_device_auth_token`  
Token sesi untuk perangkat klien.

`operation`  
Operasi untuk mengotorisasi.

`resource`  
Sumber daya tempat perangkat klien melakukan operasi.

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

Tanggapan operasi ini memiliki informasi berikut:

`isAuthorized`(Python:) `is_authorized`  
Apakah perangkat klien berwenang untuk melakukan operasi pada sumber daya.

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

Berlangganan untuk menerima sertifikat server baru perangkat inti setiap kali berputar. Ketika sertifikat server berputar, broker harus memuat ulang menggunakan sertifikat server baru.

[Komponen autentikasi perangkat klien](client-device-auth-component.md) memutar sertifikat server setiap 7 hari secara default. Anda dapat mengkonfigurasi interval rotasi antara 2 dan 10 hari.

<a name="ipc-subscribe-operation-note"></a>Operasi ini adalah operasi berlangganan di mana Anda berlangganan aliran pesan peristiwa. Untuk menggunakan operasi ini, tentukan bagian yang menangani respons aliran dengan fungsi yang menangani pesan peristiwa, kesalahan, dan penutupan aliran. Untuk informasi selengkapnya, lihat [Berlangganan pengaliran peristiwa IPC](interprocess-communication.md#ipc-subscribe-operations).

**Jenis pesan peristiwa:** `CertificateUpdateEvent`

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

Permintaan operasi ini memiliki parameter berikut:

`certificateOptions`(Python:) `certificate_options`  
Jenis pembaruan sertifikat untuk berlangganan. Objek ini, `CertificateOptions`, berisi informasi berikut:    
`certificateType`(Python:) `certificate_type`  
Jenis pembaruan sertifikat untuk berlangganan. Pilih opsi berikut:  
+ `SERVER`

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

Tanggapan operasi ini memiliki informasi berikut:

`messages`  
Aliran pesan. Objek ini, `CertificateUpdateEvent`, berisi informasi berikut:    
`certificateUpdate`(Python:) `certificate_update`  
Informasi tentang sertifikat baru. Objek ini, `CertificateUpdate`, berisi informasi berikut:    
`certificate`  
Sertifikat.  
`privateKey`(Python:) `private_key`  
Kunci pribadi sertifikat.  
`publicKey`(Python:) `public_key`  
Kunci publik sertifikat.  
`caCertificates`(Python:) `ca_certificates`  
Daftar sertifikat otoritas sertifikat (CA) dalam rantai sertifikat CA sertifikat.