Autorizzazione con identità Amazon Cognito - AWS IoT Core

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

Autorizzazione con identità Amazon Cognito

Esistono due tipi di identità di Amazon Cognito: non autenticate e autenticate. Se l'app supporta identità Amazon Cognito non autenticate, non viene eseguita alcuna autenticazione in modo da non sapere chi è l'utente.

Identità non autenticate: per le identità di Amazon Cognito non autenticate, concedi le autorizzazioni associando IAM un ruolo a un pool di identità non autenticato. Consigliamo di concedere l'accesso solo alle risorse che si desidera rendere disponibili agli utenti sconosciuti.

Importante

Per gli utenti non autenticati che si connettono AWS IoT Core ad Amazon Cognito, consigliamo di consentire l'accesso a risorse molto limitate nelle policy. IAM

Identità autenticate: per le identità Amazon Cognito autenticate, è necessario specificare autorizzazioni in due posizioni:

  • Allega una IAM policy al pool di identità Amazon Cognito autenticato e

  • Allega una AWS IoT Core policy all'identità di Amazon Cognito (utente autenticato).

Esempi di policy per utenti Amazon Cognito non autenticati e autenticati che si connettono a AWS IoT Core

L'esempio seguente mostra le autorizzazioni sia nella policy che nella IAM policy IoT di un'identità Amazon Cognito. L'utente autenticato desidera pubblicare su un argomento specifico del dispositivo (ad esempio DEVICE device/ _id/status).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/Client_ID" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/device/Device_ID/status" ] } ] }

L'esempio seguente mostra le autorizzazioni in una IAM policy di un ruolo non autenticato di Amazon Cognito. L'utente non autenticato desidera pubblicare in argomenti non specifici del dispositivo che non richiedono l'autenticazione.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/non_device_specific_topic" ] } ] }

GitHub esempi

I seguenti esempi di applicazioni web GitHub mostrano come incorporare l'allegato delle policy agli utenti autenticati nel processo di registrazione e autenticazione degli utenti.

Amplify è un insieme di strumenti e servizi che ti aiuta a creare applicazioni web e mobili che si integrano con i servizi. AWS Per ulteriori informazioni su Amplify, consulta Amplify Framework Documentation (Documentazione Amplify Framework).

Entrambi gli esempi eseguono la seguente procedura.

  1. Quando un utente si registra per un account, l'applicazione crea un bacino d'utenza e un'identità di Amazon Cognito.

  2. Quando un utente si autentica, l'applicazione crea e allega una policy all'identità. Ciò consente all'utente di pubblicare e sottoscrivere le autorizzazioni.

  3. L'utente può utilizzare l'applicazione per pubblicare e sottoscrivere MQTT argomenti.

Il primo esempio utilizza l'AttachPolicyAPIoperazione direttamente all'interno dell'operazione di autenticazione. L'esempio seguente mostra come implementare questa API chiamata all'interno di un'applicazione web React che utilizza Amplify e. SDK per dispositivi AWS IoT per JavaScript

function attachPolicy(id, policyName) { var Iot = new AWS.Iot({region: AWSConfiguration.region, apiVersion: AWSConfiguration.apiVersion, endpoint: AWSConfiguration.endpoint}); var params = {policyName: policyName, target: id}; console.log("Attach IoT Policy: " + policyName + " with cognito identity id: " + id); Iot.attachPolicy(params, function(err, data) { if (err) { if (err.code !== 'ResourceAlreadyExistsException') { console.log(err); } } else { console.log("Successfully attached policy with the identity", data); } }); }

Questo codice viene visualizzato nel file.js. AuthDisplay

Il secondo esempio implementa l'AttachPolicyAPIoperazione in una funzione Lambda. L'esempio seguente mostra come Lambda utilizza questa API chiamata.

iot.attachPolicy(params, function(err, data) { if (err) { if (err.code !== 'ResourceAlreadyExistsException') { console.log(err); res.json({error: err, url: req.url, body: req.body}); } } else { console.log(data); res.json({success: 'Create and attach policy call succeed!', url: req.url, body: req.body}); } });

Questo codice viene visualizzato all'interno della funzione iot.GetPolicy nel fileapp.js.

Nota

Quando chiami la funzione con AWS le credenziali ottenute tramite i pool di identità di Amazon Cognito, l'oggetto di contesto nella funzione Lambda contiene un valore per. context.cognito_identity_id Per ulteriori informazioni, consulta gli argomenti seguenti.