Autorización con identidades de Amazon Cognito - AWS IoT Core

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Autorización con identidades de Amazon Cognito

Hay dos tipos de identidades de Amazon Cognito: autenticadas y sin autenticar. Si la aplicación admite identidades de Amazon Cognito no autenticadas, no se realiza ninguna autenticación, por lo que no se sabe quién es el usuario.

Identidades no autenticadas: en el caso de las identidades de Amazon Cognito no autenticadas, se conceden permisos asociando un rol a IAM un grupo de identidades no autenticadas. Le recomendamos que solo conceda acceso a aquellos recursos que desee que estén disponibles para usuarios desconocidos.

importante

Para los usuarios de Amazon Cognito no autenticados que se conecten AWS IoT Core a, le recomendamos que dé acceso a recursos muy limitados en las políticas. IAM

Identidades autenticadas: para las identidades autenticadas de Amazon Cognito, debe especificar los permisos en dos lugares.

  • Adjunte una IAM política al grupo autenticado de Amazon Cognito Identity y

  • Adjunte una AWS IoT Core política a Amazon Cognito Identity (usuario autenticado).

Ejemplos de políticas para usuarios de Amazon Cognito autenticados y no autenticados que se conectan a AWS IoT Core

El siguiente ejemplo muestra los permisos tanto en la IAM política como en la política de IoT de una identidad de Amazon Cognito. El usuario autenticado quiere publicar en un tema específico del dispositivo (por ejemplo, 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" ] } ] }

El siguiente ejemplo muestra los permisos de una IAM política de un rol no autenticado de Amazon Cognito. El usuario no autenticado desea publicar en temas no específicos de un dispositivo que no requieren autenticación.

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

Los siguientes ejemplos de aplicaciones web GitHub muestran cómo incorporar políticas adjuntas a los usuarios autenticados en el proceso de registro y autenticación de los usuarios.

Amplify es un conjunto de herramientas y servicios que le ayuda a crear aplicaciones web y móviles que se integran con AWS los servicios. Para obtener más información acerca de Amplify, consulte la Documentación de Amplify Framework.

En los dos ejemplos se realizan los siguientes pasos.

  1. Cuando un usuario se registra para obtener una cuenta, la aplicación crea una identidad y un grupo de usuarios de Amazon Cognito.

  2. Cuando un usuario se autentica, la aplicación crea y asocia una política a la identidad. Esto otorga al usuario permisos de publicación y suscripción.

  3. El usuario puede usar la aplicación para publicar MQTT temas y suscribirse a ellos.

El primer ejemplo utiliza la AttachPolicy API operación directamente dentro de la operación de autenticación. El siguiente ejemplo muestra cómo implementar esta API llamada dentro de una aplicación web de React que usa Amplify y el. SDK de AWS IoT Device para 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); } }); }

Este código aparece en el AuthDisplayarchivo.js.

El segundo ejemplo implementa la AttachPolicy API operación en una función Lambda. El siguiente ejemplo muestra cómo Lambda utiliza esta API llamada.

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}); } });

Este código aparece dentro de la función iot.GetPolicy en el archivo app.js.

nota

Cuando llama a la función con AWS las credenciales que obtiene a través de los grupos de identidades de Amazon Cognito, el objeto de contexto de la función Lambda contiene un valor para. context.cognito_identity_id Para obtener más información, consulte lo siguiente.