Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Tutorial: Creación de un autorizador personalizado para AWS IoT Core

Modo de enfoque
Tutorial: Creación de un autorizador personalizado para AWS IoT Core - 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.

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.

En este tutorial se muestran los pasos para crear, validar y utilizar la autenticación personalizada mediante la AWS CLI. Si lo desea, con este tutorial, puede utilizar Postman para enviar datos AWS IoT Core mediante la HTTP función Publicar. API

En este tutorial se muestra cómo crear una función de Lambda de ejemplo que implemente la lógica de autorización y autenticación y un autorizador personalizado mediante la llamada a create-authorizer con la firma de token habilitada. A continuación, se valida el autorizador mediante el test-invoke-authorizer tema HTTP Publicar en un tema de prueba MQTT y, AWS IoT Core por último, se pueden enviar los datos API a él. La solicitud de ejemplo especificará el autorizador a invocar mediante el x-amz-customauthorizer-name encabezado y pasará los encabezados de la solicitud y los encabezados de la token-key-name solicitud. x-amz-customauthorizer-signature

Lo que aprenderá en este tutorial:
  • Cómo crear una función de Lambda para que sea un controlador de autorizador personalizado.

  • ¿Cómo crear un autorizador personalizado con la firma de token habilitada AWS CLI

  • Cómo probar su autorizador personalizado con el comando test-invoke-authorizer.

  • ¿Cómo publicar un MQTT tema con Postman y validar la solicitud con tu autorizador personalizado

Para completar este tutorial se necesitan aproximadamente 60 minutos.

Antes de empezar este tutorial, asegúrese de que tiene:
  • Configurar Cuenta de AWS

    Necesitarás tu AWS IoT consola Cuenta de AWS y tu consola para completar este tutorial.

    La cuenta que utiliza para este tutorial funciona mejor cuando incluye al menos estas políticas administradas de AWS :

    importante

    Las IAM políticas utilizadas en este tutorial son más permisivas de lo que debería seguir en una implementación de producción. En un entorno de producción, asegúrese de que sus políticas de cuentas y recursos concedan solo los permisos necesarios.

    Al crear IAM políticas para la producción, determine qué acceso necesitan los usuarios y los roles y, a continuación, diseñe las políticas que les permitan realizar solo esas tareas.

    Para obtener más información, consulte las prácticas recomendadas de seguridad en IAM

  • Instaló el AWS CLI

    Para obtener información acerca de cómo instalar el AWS CLI, consulte Instalación del AWS CLI. Este tutorial requiere una AWS CLI versión aws-cli/2.1.3 Python/3.7.4 Darwin/18.7.0 exe/x86_64 o posterior.

  • Abra SSL las herramientas

    Los ejemplos de este tutorial utilizan Libre SSL 2.6.5. También puede usar las herramientas Open SSL v1.1.1i para este tutorial.

  • Ha revisado la descripción general de AWS Lambda

    Si no lo ha utilizado AWS Lambda antes, consulte AWS LambdaIntroducción a Lambda para conocer sus términos y conceptos.

  • Ha revisado cómo crear solicitudes en Postman

    Para obtener más información, consulte Creación de solicitudes.

  • Ha eliminado los autorizadores personalizados del tutorial anterior

    Solo Cuenta de AWS puede configurar un número limitado de autorizadores personalizados a la vez. Para obtener información sobre la eliminación de un autorizador personalizado, consulte Paso 8: Eliminación.

Paso 1: crear una función de Lambda para su autorizador personalizado

La autenticación personalizada AWS IoT Core utiliza los recursos de autorización que usted crea para autenticar y autorizar a los clientes. La función que creará en esta sección autentica y autoriza a los clientes a medida que se conectan a los recursos y acceden a AWS IoT Core ellos. AWS IoT

La función de Lambda hace lo siguiente:

  • Si proviene de una solicitudtest-invoke-authorizer, devuelve una IAM política con una Deny acción.

  • Si Postman envía una solicitud HTTP y el actionToken parámetro tiene un valor deallow, devuelve una IAM política con una Allow acción. De lo contrario, devuelve una IAM política con una Deny acción.

Para crear la función de Lambda para su autorizador personalizado
  1. En la consola de Lambda, abra Funciones.

  2. Seleccione Crear función.

  3. Confirme que se ha seleccionado Crear desde cero.

  4. En Basic information:

    1. Bajo Function name (Nombre de función), escriba custom-auth-function.

    2. En Tiempo de ejecución, confirme Node.js 18.x.

  5. Elija Create function (Crear función).

    Lambda crea una función Node.js y un rol de ejecución que otorga a la función permiso para cargar los registros. La función Lambda asume la función de ejecución cuando se invoca la función y la utiliza para crear credenciales para las fuentes de eventos AWS SDK y leer los datos de ellas.

  6. Para ver el código y la configuración de la función en el AWS Cloud9editor, elija custom-auth-functionen la ventana del diseñador y, a continuación, elija index.js en el panel de navegación del editor.

    Para lenguajes de scripting como Node.js, Lambda incluye una función básica que devuelve una respuesta de éxito. Puede utilizar el editor de AWS Cloud9 para editar su función siempre que su código fuente no supere los 3 MB.

  7. Reemplace el código index.js en el editor por el siguiente código:

    // A simple Lambda function for an authorizer. It demonstrates // How to parse a CLI and Http password to generate a response. export const handler = async (event, context, callback) => { //Http parameter to initiate allow/deny request const HTTP_PARAM_NAME='actionToken'; const ALLOW_ACTION = 'Allow'; const DENY_ACTION = 'Deny'; //Event data passed to Lambda function var event_str = JSON.stringify(event); console.log('Complete event :'+ event_str); //Read protocolData from the event json passed to Lambda function var protocolData = event.protocolData; console.log('protocolData value---> ' + protocolData); //Get the dynamic account ID from function's ARN to be used // as full resource for IAM policy var ACCOUNT_ID = context.invokedFunctionArn.split(":")[4]; console.log("ACCOUNT_ID---"+ACCOUNT_ID); //Get the dynamic region from function's ARN to be used // as full resource for IAM policy var REGION = context.invokedFunctionArn.split(":")[3]; console.log("REGION---"+REGION); //protocolData data will be undefined if testing is done via CLI. // This will help to test the set up. if (protocolData === undefined) { //If CLI testing, pass deny action as this is for testing purpose only. console.log('Using the test-invoke-authorizer cli for testing only'); callback(null, generateAuthResponse(DENY_ACTION,ACCOUNT_ID,REGION)); } else{ //Http Testing from Postman //Get the query string from the request var queryString = event.protocolData.http.queryString; console.log('queryString values -- ' + queryString); /* global URLSearchParams */ const params = new URLSearchParams(queryString); var action = params.get(HTTP_PARAM_NAME); if(action!=null && action.toLowerCase() === 'allow'){ callback(null, generateAuthResponse(ALLOW_ACTION,ACCOUNT_ID,REGION)); }else{ callback(null, generateAuthResponse(DENY_ACTION,ACCOUNT_ID,REGION)); } } }; // Helper function to generate the authorization IAM response. var generateAuthResponse = function(effect,ACCOUNT_ID,REGION) { var full_resource = "arn:aws:iot:"+ REGION + ":" + ACCOUNT_ID + ":*"; console.log("full_resource---"+full_resource); var authResponse = {}; authResponse.isAuthenticated = true; authResponse.principalId = 'principalId'; var policyDocument = {}; policyDocument.Version = '2012-10-17'; policyDocument.Statement = []; var statement = {}; statement.Action = 'iot:*'; statement.Effect = effect; statement.Resource = full_resource; policyDocument.Statement[0] = statement; authResponse.policyDocuments = [policyDocument]; authResponse.disconnectAfterInSeconds = 3600; authResponse.refreshAfterInSeconds = 600; console.log('custom auth policy function called from http'); console.log('authResponse --> ' + JSON.stringify(authResponse)); console.log(authResponse.policyDocuments[0]); return authResponse; }
  8. Elija Implementar.

  9. Después de que los cambios implementados aparezcan encima del editor:

    1. Desplácese hasta la sección Información general de la función situada encima del editor.

    2. Copie la función ARN y guárdela para utilizarla más adelante en este tutorial.

  10. Comprobación de la función de .

    1. Elija la pestaña Prueba.

    2. Utilizando la configuración predeterminada de la prueba, seleccione Invocar.

    3. Si la prueba se ha realizado correctamente, abra la vista Detalles en Resultados de la ejecución. Debería ver el documento de política que devolvió la función.

      Si la prueba falló o no ve ningún documento de política, revise el código para encontrar y corregir los errores.

Paso 2: crear un par de claves pública y privada para su autorizador personalizado

Su autorizador personalizado requiere una clave pública y privada para autenticarlo. Los comandos de esta sección utilizan SSL herramientas de apertura para crear este key pair.

Para crear un par de claves pública y privada para su autorizador personalizado
  1. Cree el archivo de clave privada.

    openssl genrsa -out private-key.pem 4096
  2. Verifique el archivo de clave privada que acaba de crear.

    openssl rsa -check -in private-key.pem -noout

    Si el comando no muestra ningún error, el archivo de clave privada es válido.

  3. Cree el archivo de clave pública.

    openssl rsa -in private-key.pem -pubout -out public-key.pem
  4. Verifique el archivo de clave pública.

    openssl pkey -inform PEM -pubin -in public-key.pem -noout

    Si el comando no muestra ningún error, el archivo de clave pública es válido.

Paso 3: crear un recurso autorizador personalizado y su autorización

El autorizador AWS IoT personalizado es el recurso que une todos los elementos creados en los pasos anteriores. En esta sección, creará un recurso de autorizador personalizado y le dará permiso para ejecutar la función de Lambda que creó anteriormente. Puede crear un recurso de autorización personalizado mediante la AWS IoT consola AWS CLI, el o el. AWS API

Para este tutorial, solo necesita crear un autorizador personalizado. En esta sección se describe cómo crear mediante la AWS IoT consola y el AWS CLI, de modo que pueda utilizar el método que le resulte más conveniente. No hay diferencia entre los recursos del autorizador personalizado creados por uno u otro método.

Creación de un recurso de autorizador personalizado

Para crear un autorizador personalizado (consola)
  1. Abra la página del autorizador personalizado de la AWS IoT consola y elija Crear autorizador.

  2. En Crear un autorizador:

    1. En Nombre del autorizador, introduzca my-new-authorizer.

    2. En Estado del autorizador, marque Activo.

    3. En Función del autorizador, elija la función de Lambda que creó anteriormente.

    4. En Validación del token - opcional:

      1. Active Validación del token.

      2. En Nombre de la clave del token, introduzca tokenKeyName.

      3. Elija Agregar clave.

      4. En Nombre de la clave, introduzca FirstKey.

      5. En Clave pública, introduzca el contenido del archivo public-key.pem. Asegúrese de incluir las líneas del archivo con -----BEGIN PUBLIC KEY----- y -----END PUBLIC KEY-----, y no agregue ni elimine ningún salto de línea, retorno de carro u otros caracteres del contenido del archivo. La cadena que introduzca debe parecerse a la de este ejemplo.

        -----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvEBzOk4vhN+3LgslvEWt sLCqNmt5Damas3bmiTRvq2gjRJ6KXGTGQChqArAJwL1a9dkS9+maaXC3vc6xzx9z QPu/vQOe5tyzz1MsKdmtFGxMqQ3qjEXAMPLEOmqyUKPP5mff58k6ePSfXAnzBH0q lg2HioefrpU5OSAnpuRAjYKofKjbc2Vrn6N2G7hV+IfTBvCElf0csalS/Rk4phD5 oa4Y0GHISRnevypg5C8n9Rrz91PWGqP6M/q5DNJJXjMyleG92hQgu1N696bn5Dw8 FhedszFa6b2x6xrItZFzewNQkPMLMFhNrQIIyvshtT/F1LVCS5+v8AQ8UGGDfZmv QeqAMAF7WgagDMXcfgKSVU8yid2sIm56qsCLMvD2Sq8Lgzpey9N5ON1o1Cvldwvc KrJJtgwW6hVqRGuShnownLpgG86M6neZ5sRMbVNZO8OzcobLngJ0Ibw9KkcUdklW gvZ6HEJqBY2XE70iEXAMPLETPHzhqvK6Ei1HGxpHsXx6BNft582J1VpgYjXha8oa /NN7l7Zbj/euAb41IVtmX8JrD9z613d1iM5L8HluJlUzn62Q+VeNV2tdA7MfPfMC 8btGYladFAnitThaz6+F0VSBJPu7pZQoLnqyEp5zLMtF+kFl2yOBmGAP0RBivRd9 JWBUCG0bqcLQPeQyjbXSOfUCAwEAAQ== -----END PUBLIC KEY-----
  3. Elija Crear autorizador.

  4. Si se creó el recurso de autorizador personalizado, verá la lista de autorizadores personalizados y su nuevo autorizador personalizado debería aparecer en la lista y podrá continuar con la siguiente sección para probarlo.

    Si ve un error, revíselo e intente crear de nuevo su autorizador personalizado y vuelva a comprobar las entradas. Tenga en cuenta que cada recurso de autorizador personalizado debe tener un nombre único.

Para crear un autorizador personalizado (AWS CLI)
  1. Sustituya sus valores por authorizer-function-arn y token-signing-public-keys, y ejecute el siguiente comando:

    aws iot create-authorizer \ --authorizer-name "my-new-authorizer" \ --token-key-name "tokenKeyName" \ --status ACTIVE \ --no-signing-disabled \ --authorizer-function-arn "arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function" \ --token-signing-public-keys FirstKey="-----BEGIN PUBLIC KEY----- MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAvEBzOk4vhN+3LgslvEWt sLCqNmt5Damas3bmiTRvq2gjRJ6KXGTGQChqArAJwL1a9dkS9+maaXC3vc6xzx9z QPu/vQOe5tyzz1MsKdmtFGxMqQ3qjEXAMPLEOmqyUKPP5mff58k6ePSfXAnzBH0q lg2HioefrpU5OSAnpuRAjYKofKjbc2Vrn6N2G7hV+IfTBvCElf0csalS/Rk4phD5 oa4Y0GHISRnevypg5C8n9Rrz91PWGqP6M/q5DNJJXjMyleG92hQgu1N696bn5Dw8 FhedszFa6b2x6xrItZFzewNQkPMLMFhNrQIIyvshtT/F1LVCS5+v8AQ8UGGDfZmv QeqAMAF7WgagDMXcfgKSVU8yid2sIm56qsCLMvD2Sq8Lgzpey9N5ON1o1Cvldwvc KrJJtgwW6hVqRGuShnownLpgG86M6neZ5sRMbVNZO8OzcobLngJ0Ibw9KkcUdklW gvZ6HEJqBY2XE70iEXAMPLETPHzhqvK6Ei1HGxpHsXx6BNft582J1VpgYjXha8oa /NN7l7Zbj/euAb41IVtmX8JrD9z613d1iM5L8HluJlUzn62Q+VeNV2tdA7MfPfMC 8btGYladFAnitThaz6+F0VSBJPu7pZQoLnqyEp5zLMtF+kFl2yOBmGAP0RBivRd9 JWBUCG0bqcLQPeQyjbXSOfUCAwEAAQ== -----END PUBLIC KEY-----"
    Donde:
    • El authorizer-function-arn valor es el nombre del recurso de Amazon (ARN) de la función Lambda que creó para su autorizador personalizado.

    • El valor token-signing-public-keys incluye el nombre de la clave, FirstKey, y el contenido del archivo public-key.pem. Asegúrese de incluir las líneas del archivo con -----BEGIN PUBLIC KEY----- y -----END PUBLIC KEY-----, y no agregue ni elimine ningún salto de línea, retorno de carro u otros caracteres del contenido del archivo.

      Nota: Tenga cuidado al introducir la clave pública, ya que cualquier alteración de su valor la inutilizará.

  2. Si se crea el autorizador personalizado, el comando devuelve el nombre y ARN el nuevo recurso, como se muestra a continuación.

    { "authorizerName": "my-new-authorizer", "authorizerArn": "arn:aws:iot:Region:57EXAMPLE833:authorizer/my-new-authorizer" }

    Guarde el valor authorizerArn para utilizarlo en el siguiente paso.

    Recuerde que cada recurso de autorizador personalizado debe tener un nombre único.

Autorización del recurso autorizador personalizado

En esta sección, concederá permiso al recurso de autorizador personalizado que acaba de crear para ejecutar la función de Lambda. Para conceder el permiso, puede utilizar el comando add-permissionCLI.

Conceda permiso a su función Lambda mediante el AWS CLI
  1. Después de insertar sus valores, introduzca el siguiente comando. Tenga en cuenta que el valor statement-id debe ser único. Reemplace Id-1234 por otro valor si ha ejecutado este tutorial antes o si obtiene un error ResourceConflictException.

    aws lambda add-permission \ --function-name "custom-auth-function" \ --principal "iot.amazonaws.com" \ --action "lambda:InvokeFunction" \ --statement-id "Id-1234" \ --source-arn authorizerArn
  2. Si el comando tiene éxito, devuelve una declaración de permiso, como la de este ejemplo. Puede continuar con la siguiente sección para probar el autorizador personalizado.

    { "Statement": "{\"Sid\":\"Id-1234\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"iot.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\",\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function\"}}}" }

    Si el comando no tiene éxito, devuelve un error, como en este ejemplo. Tendrá que revisar y corregir el error antes de continuar.

    An error occurred (AccessDeniedException) when calling the AddPermission operation: User: arn:aws:iam::57EXAMPLE833:user/EXAMPLE-1 is not authorized to perform: lambda:AddPer mission on resource: arn:aws:lambda:Region:57EXAMPLE833:function:custom-auth-function

Paso 4: Pruebe el autorizador llamando test-invoke-authorizer

Con todos los recursos definidos, en esta sección llamarás test-invoke-authorizer desde la línea de comandos para probar la aprobación de la autorización.

Tenga en cuenta que cuando se invoca al autorizador desde la línea de comandos, no protocolData está definido, por lo que el autorizador siempre devolverá un documento. DENY Sin embargo, esta prueba confirma que su autorizador personalizado y la función de Lambda están configurados correctamente, aunque no pruebe por completo la función de Lambda.

Para probar su autorizador personalizado y su función Lambda mediante el AWS CLI
  1. En el directorio que tiene el archivo private-key.pem que creó en un paso anterior, ejecute el siguiente comando.

    echo -n "tokenKeyValue" | openssl dgst -sha256 -sign private-key.pem | openssl base64 -A

    Este comando crea una cadena de firma que se utilizará en el siguiente paso. La cadena de firma tiene este aspecto:

    dBwykzlb+fo+JmSGdwoGr8dyC2qB/IyLefJJr+rbCvmu9Jl4KHAA9DG+V+MMWu09YSA86+64Y3Gt4tOykpZqn9mn VB1wyxp+0bDZh8hmqUAUH3fwi3fPjBvCa4cwNuLQNqBZzbCvsluv7i2IMjEg+CPY0zrWt1jr9BikgGPDxWkjaeeh bQHHTo357TegKs9pP30Uf4TrxypNmFswA5k7QIc01n4bIyRTm90OyZ94R4bdJsHNig1JePgnuOBvMGCEFE09jGjj szEHfgAUAQIWXiVGQj16BU1xKpTGSiTAwheLKUjITOEXAMPLECK3aHKYKY+d1vTvdthKtYHBq8MjhzJ0kggbt29V QJCb8RilN/P5+vcVniSXWPplyB5jkYs9UvG08REoy64AtizfUhvSul/r/F3VV8ITtQp3aXiUtcspACi6ca+tsDuX f3LzCwQQF/YSUy02u5XkWn+sto6KCkpNlkD0wU8gl3+kOzxrthnQ8gEajd5Iylx230iqcXo3osjPha7JDyWM5o+K EWckTe91I1mokDr5sJ4JXixvnJTVSx1li49IalW4en1DAkc1a0s2U2UNm236EXAMPLELotyh7h+flFeloZlAWQFH xRlXsPqiVKS1ZIUClaZWprh/orDJplpiWfBgBIOgokJIDGP9gwhXIIk7zWrGmWpMK9o=

    Copie esta cadena de firma para utilizarla en el siguiente paso. Tenga cuidado de no incluir ningún carácter de más ni omitir ninguno.

  2. En este comando, reemplace el valor token-signature por la cadena de firma del paso anterior y ejecute este comando para probar su autorizador.

    aws iot test-invoke-authorizer \ --authorizer-name my-new-authorizer \ --token tokenKeyValue \ --token-signature dBwykzlb+fo+JmSGdwoGr8dyC2qB/IyLefJJr+rbCvmu9Jl4KHAA9DG+V+MMWu09YSA86+64Y3Gt4tOykpZqn9mnVB1wyxp+0bDZh8hmqUAUH3fwi3fPjBvCa4cwNuLQNqBZzbCvsluv7i2IMjEg+CPY0zrWt1jr9BikgGPDxWkjaeehbQHHTo357TegKs9pP30Uf4TrxypNmFswA5k7QIc01n4bIyRTm90OyZ94R4bdJsHNig1JePgnuOBvMGCEFE09jGjjszEHfgAUAQIWXiVGQj16BU1xKpTGSiTAwheLKUjITOEXAMPLECK3aHKYKY+d1vTvdthKtYHBq8MjhzJ0kggbt29VQJCb8RilN/P5+vcVniSXWPplyB5jkYs9UvG08REoy64AtizfUhvSul/r/F3VV8ITtQp3aXiUtcspACi6ca+tsDuXf3LzCwQQF/YSUy02u5XkWn+sto6KCkpNlkD0wU8gl3+kOzxrthnQ8gEajd5Iylx230iqcXo3osjPha7JDyWM5o+KEWckTe91I1mokDr5sJ4JXixvnJTVSx1li49IalW4en1DAkc1a0s2U2UNm236EXAMPLELotyh7h+flFeloZlAWQFHxRlXsPqiVKS1ZIUClaZWprh/orDJplpiWfBgBIOgokJIDGP9gwhXIIk7zWrGmWpMK9o=

    Si el comando tiene éxito, devuelve la información generada por su función de autorización personalizada, como en este ejemplo.

    { "isAuthenticated": true, "principalId": "principalId", "policyDocuments": [ "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Action\":\"iot:*\",\"Effect\":\"Deny\",\"Resource\":\"arn:aws:iot:Region:57EXAMPLE833:*\"}]}" ], "refreshAfterInSeconds": 600, "disconnectAfterInSeconds": 3600 }

    Si el comando devuelve un error, revise el error y vuelva a comprobar los comandos que ha utilizado en esta sección.

Paso 5: Pruebe la publicación del MQTT mensaje con Postman

  1. Para obtener el punto de conexión de datos de su dispositivo desde la línea de comandos, llame a describe-endpoint, tal y como se muestra aquí.

    aws iot describe-endpoint --output text --endpoint-type iot:Data-ATS

    Guarde esta dirección para utilizarla como device_data_endpoint_address en un paso posterior.

  2. Abre una nueva ventana de Postman y crea una nueva HTTP POST solicitud.

    1. Desde su ordenador, abra la aplicación Postman.

    2. En Postman, en el menú File, seleccione New....

    3. En el cuadro de diálogo New, seleccione Request.

    4. En Save Request,

      1. En Request Name, introduzca Custom authorizer test request.

      2. En Select a collection or folder to save to: elija o cree una colección en la que guardar esta solicitud.

      3. Selecciona Guardar en. collection_name

  3. Cree la POST solicitud para probar su autorizador personalizado.

    1. En el selector de métodos de solicitud situado junto al URL campo, elige POST.

    2. En el URL campo, cree el campo URL para su solicitud utilizando lo siguiente URL con el comando device_data_endpoint_address from describe-endpoint en un paso anterior.

      https://device_data_endpoint_address:443/topics/test/cust-auth/topic?qos=0&actionToken=allow

      Tenga en cuenta que esto URL incluye el parámetro de actionToken=allow consulta que indicará a la función Lambda que devuelva un documento de política que permita el acceso a. AWS IoT Tras introducir elURL, los parámetros de la consulta también aparecen en la pestaña Parámetros de Postman.

    3. En la pestaña Auth, en el campo Type, elija No Auth.

    4. En la pestaña Headers:

      1. Si hay alguna clave de host que esté marcada, desmárquela.

      2. Al final de la lista de encabezados, agregue estos nuevos y confirme que están marcados. Sustituya el Host valor por el device_data_endpoint_address suyo y el x-amz-customauthorizer-signature valor por la cadena de firma que utilizó con el test-invoke-authorize comando en la sección anterior.

        Clave Valor
        x-amz-customauthorizer-name my-new-authorizer
        Host device_data_endpoint_address
        tokenKeyName tokenKeyValue
        x-amz-customauthorizer-signature dBwykzlb+fo+JmSGdwoGr8dyC2qB/IyLefJJr+rbCvmu9Jl4KHAA9DG+V+MMWu09YSA86+64Y3Gt4tOykpZqn9mnVB1wyxp+0bDZh8hmqUAUH3fwi3fPjBvCa4cwNuLQNqBZzbCvsluv7i2IMjEg+CPY0zrWt1jr9BikgGPDxWkjaeehbQHHTo357TegKs9pP30Uf4TrxypNmFswA5k7QIc01n4bIyRTm90OyZ94R4bdJsHNig1JePgnuOBvMGCEFE09jGjjszEHfgAUAQIWXiVGQj16BU1xKpTGSiTAwheLKUjITOEXAMPLECK3aHKYKY+d1vTvdthKtYHBq8MjhzJ0kggbt29VQJCb8RilN/P5+vcVniSXWPplyB5jkYs9UvG08REoy64AtizfUhvSul/r/F3VV8ITtQp3aXiUtcspACi6ca+tsDuXf3LzCwQQF/YSUy02u5XkWn+sto6KCkpNlkD0wU8gl3+kOzxrthnQ8gEajd5Iylx230iqcXo3osjPha7JDyWM5o+KEWckTe91I1mokDr5sJ4JXixvnJTVSx1li49IalW4en1DAkc1a0s2U2UNm236EXAMPLELotyh7h+flFeloZlAWQFHxRlXsPqiVKS1ZIUClaZWprh/orDJplpiWfBgBIOgokJIDGP9gwhXIIk7zWrGmWpMK9o=
    5. En la pestaña Body:

      1. En el cuadro de opciones de formato de datos, elija Raw.

      2. En la lista de tipos de datos, elija JavaScript.

      3. En el campo de texto, introduce esta carga útil de JSON mensajes para tu mensaje de prueba:

        { "data_mode": "test", "vibration": 200, "temperature": 40 }
  4. Elija Send para enviar la solicitud.

    Si la solicitud se ha realizado correctamente, devuelve:

    { "message": "OK", "traceId": "ff35c33f-409a-ea90-b06f-fbEXAMPLE25c" }

    Si la respuesta es correcta, indica que su autorizador personalizado permitió la conexión AWS IoT y que el mensaje de prueba se entregó a Broker In. AWS IoT Core

    Si devuelve un error, revisa el mensaje de errordevice_data_endpoint_address, la cadena de firma y los demás valores del encabezado.

Guarde esta solicitud en Postman para utilizarla en la siguiente sección.

Paso 6: Ver los mensajes en el cliente MQTT de prueba

En el paso anterior, enviaste mensajes simulados a un dispositivo AWS IoT mediante Postman. La respuesta correcta indicó que su autorizador personalizado permitió la conexión a AWS IoT y que el mensaje de prueba fue entregado al agente en AWS IoT Core. En esta sección, utilizarás el cliente de MQTT prueba de la AWS IoT consola para ver el contenido del mensaje, tal y como lo harían otros dispositivos y servicios.

Para ver los mensajes de prueba autorizados por su autorizador personalizado
  1. En la AWS IoT consola, abre el cliente MQTT de prueba.

  2. En la pestaña Suscribirse al tema, en Filtro de temas, introduzca test/cust-auth/topic, que es el tema de mensaje utilizado en el ejemplo de Postman de la sección anterior.

  3. Elija Suscribirse.

    Mantenga esta ventana visible para el siguiente paso.

  4. En Postman, en la solicitud que creó para la sección anterior, elija Send.

    Revise la respuesta para asegurarse de que se ha realizado correctamente. Si no es así, solucione el error, tal y como se describe en la sección anterior.

  5. En el cliente de MQTT prueba, deberías ver una nueva entrada que muestre el tema del mensaje y, si está expandido, la carga útil del mensaje a partir de la solicitud que enviaste desde Postman.

    Si no ves tus mensajes en el cliente de MQTT prueba, puedes comprobar lo siguiente:

    • Asegúrese de que su solicitud de Postman ha sido devuelta correctamente. Si AWS IoT rechaza la conexión y devuelve un error, el mensaje de la solicitud no se pasa al intermediario de mensajes.

    • Asegúrate de que las Cuenta de AWS teclas y los que Región de AWS usas para abrir la AWS IoT consola son los mismos que los que usas en PostmanURL.

    • Asegúrese de utilizar el punto final adecuado para el autorizador personalizado. Es posible que el punto final de IoT predeterminado no admita el uso de autorizadores personalizados con funciones Lambda. En su lugar, puede usar las configuraciones de dominio para definir un nuevo punto final y, a continuación, especificar ese punto final para el autorizador personalizado.

    • Asegúrese de haber introducido el tema correctamente en el cliente de MQTT prueba. El filtro del tema distingue entre mayúsculas y minúsculas. En caso de duda, también puedes suscribirte al # tema, que incluye todos los MQTT mensajes que pasan por el intermediario de mensajes Cuenta de AWS y que Región de AWS se utilizan para abrir la AWS IoT consola.

Paso 7: Revisar los resultados y los siguientes pasos

En este tutorial:
  • Ha creado una función de Lambda para que sea un controlador de autorizador personalizado.

  • ha creado un autorizador personalizado con la firma de token habilitada.

  • Ha probado su autorizador personalizado con el comando test-invoke-authorizer.

  • Publicaste un MQTT tema con Postman y validaste la solicitud con tu autorizador personalizado

  • Utilizaste el cliente MQTT de prueba para ver los mensajes enviados desde tu prueba de Postman

Pasos a seguir a continuación

Después de enviar algunos mensajes desde Postman para verificar que el autorizador personalizado funciona, pruebe a experimentar para ver cómo afecta a los resultados cambiar diferentes aspectos de este tutorial. He aquí algunos ejemplos para empezar.

  • Cambie la cadena de firma para que deje de ser válida y vea cómo se gestionan los intentos de conexión no autorizados. Deberías recibir una respuesta de error, como esta, y el mensaje no debería aparecer en el cliente de MQTT prueba.

    { "message": "Forbidden", "traceId": "15969756-a4a4-917c-b47a-5433e25b1356" }
  • Para obtener más información sobre cómo encontrar los errores que pueden producirse al desarrollar y utilizar AWS IoT reglas, consulteMonitorización AWS IoT.

Paso 8: Eliminación

Si desea repetir este tutorial, puede que tenga que eliminar algunos de sus autorizadores personalizados. Solo Cuenta de AWS puede configurar un número limitado de autorizadores personalizados a la vez y puede obtener uno LimitExceededException si intenta añadir uno nuevo sin eliminar uno existente.

Para eliminar un autorizador personalizado (consola)
  1. Abre la página de autorizadores personalizados de la AWS IoT consola y, en la lista de autorizadores personalizados, busca el autorizador personalizado que deseas eliminar.

  2. Abra la página de detalles del autorizador personalizado y, en el menú Acciones, seleccione Editar.

  3. Desmarque la casilla Activar autorizador y, a continuación, seleccione Actualizar.

    No puede eliminar un autorizador personalizado mientras esté activo.

  4. En la página de detalles del autorizador personalizado, abra el menú Acciones y seleccione Eliminar.

Para eliminar un autorizador personalizado (AWS CLI)
  1. Enumere los autorizadores personalizados que tiene instalados y busque el nombre del autorizador personalizado que desea eliminar.

    aws iot list-authorizers
  2. Establezca el autorizador personalizado como inactive ejecutando este comando después de sustituir Custom_Auth_Name por el authorizerName del autorizador personalizado para eliminar.

    aws iot update-authorizer --status INACTIVE --authorizer-name Custom_Auth_Name
  3. Elimine el autorizador personalizado ejecutando este comando después de sustituir Custom_Auth_Name por el authorizerName del autorizador personalizado para eliminar.

    aws iot delete-authorizer --authorizer-name Custom_Auth_Name
PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.