Примечание: Если вы также хотите реализовать ACL-авторизацию через HTTP, см. наше расширение к этому примеру: EMQX 5.x HTTP ACL-сервер с использованием NodeJS
Этот сервер реализует минимальный HTTP-сервер аутентификации. В этом минимальном примере он всегда будет разрешать аутентификацию — вам нужно реализовать собственную логику для проверки паролей. Примечание: Этот сервер написан для EMQX версии 5.0 и не будет работать для EMQX 4.x без модификации. См. официальную документацию по EMQX 5.x HTTP auth для получения дополнительной информации.
#!/usr/bin/env node
const router = require('koa-router')();
const koaBody = require('koa-body');
const Koa = require('koa');
const app = new Koa();
app.use(koaBody());
router.post('/emqx/auth', async ctx => {
const body = ctx.request.body;
const username = body.username;
const password = body.password;
// TODO: This example always returns "allow"
// You need to implement your authentication logic
ctx.body = {
result: "allow",
is_superuser: false
};
});
app.use(router.routes());
if (!module.parent) app.listen(19261);Этот скрипт основан на нашем предыдущем посте Минимальный Koa.JS пример с Router & Body parser, поэтому вы можете установить зависимости с использованием
npm i --save koa koa-router koa-bodyКонфигурация тела запроса, которую вы можете установить в EMQX-дашборде:
{
"client_id": "${clientid}",
"password": "${password}",
"username": "${username}"
}