EMQX 5.x HTTP ACL-сервер с использованием NodeJS

В нашем предыдущем посте EMQX 5.x HTTP password authentication server минимальный пример с использованием NodeJS мы предоставили полный пример того, как реализовать EMQX HTTP-аутентификацию.

Этот пост предоставляет расширение к нашей предыдущей HTTP-аутентификации путём добавления Koa-роутера (т.е. HTTP-эндпоинта / URL) для предоставления ACL-аутентификации, т.е. разрешения или запрета доступа на уровне топиков с пользовательской логикой.

emqx-5-x-http-acl-server-using-nodejs.js
router.post('/emqx/acl', async ctx => {
    const body = ctx.request.body;
    console.log(body)
    // TODO: Этот пример всегда возвращает true
    // Вам нужно реализовать вашу логику аутентификации
    ctx.body = {
        result: "allow",
    };
});

Добавьте этот код перед app.use(router.routes()); в скрипте из EMQX 5.x HTTP password authentication server минимальный пример с использованием NodeJS.

Мой рекомендованный тело конфигурации авторизации, который вы можете установить в EMQX-дашборде:

emqx_acl_request_body.json
{
  "action": "${action}",
  "client_id": "${clientid}",
  "ip": "${peerhost}",
  "topic": "${topic}",
  "username": "${username}"
}

Check out similar posts by category: EMQX MQTT NodeJS