¿Qué métodos de autenticación admite EMQ X?

La autenticación en EMQ X se refiere a controlar el permiso del cliente para conectarse al servidor a través de la configuración del lado del servidor cuando un cliente se conecta a EMQ X.

El soporte de certificación de EMQ X incluye dos niveles:

El propio protocolo MQTT especifica el nombre de usuario y la contraseña en el mensaje CONNECT. EMQ X admite varias formas de autenticación basadas en el nombre de usuario, ClientID, HTTP, JWT, LDAP y varias bases de datos como MongoDB, MySQL, PostgreSQL, Redis, etc. forma de complementos.

En la capa de transporte, TLS garantiza la autenticación de cliente a servidor mediante certificados de cliente y garantiza que el servidor verifique el certificado del servidor ante el cliente. También se admite la autenticación TLS/DTLS basada en PSK.

método de verificación

EMQ X admite el uso de fuentes de datos integradas (archivos, bases de datos integradas), JWT, bases de datos externas convencionales y API HTTP personalizadas como fuentes de datos de autenticación.

La conexión a fuentes de datos y la lógica de autenticación se implementan a través de complementos. Cada complemento corresponde a un método de autenticación y el complemento correspondiente debe habilitarse antes de su uso.

Cuando el cliente se conecta, el complemento lo autentica verificando si su nombre de usuario/identificador de cliente y contraseña son consistentes con la información de la fuente de datos especificada.

Métodos de autenticación soportados por EMQ X:

fuente de datos incorporada

Autenticación de nombre de usuario

Autenticación de ID de cliente

Utilice archivos de configuración y la base de datos integrada de EMQ X para proporcionar fuentes de datos de autenticación y administre a través de la API HTTP, que es bastante simple y liviana.

base de datos externa

Autenticación LDAP

Certificación MySQL

Certificación PostgreSQL

Autenticación de Redis

Certificación MongoDB

La base de datos externa puede almacenar una gran cantidad de datos y al mismo tiempo facilita la integración con el sistema de gestión de equipos externos.

otro

autenticación HTTP

Autenticación JWT

La autenticación JWT puede emitir información de autenticación en lotes, y la autenticación HTTP puede implementar una lógica de autenticación y autenticación compleja.

Después de cambiar la configuración del complemento, debe reiniciar el complemento para que surta efecto. Algunos complementos de autenticación incluyen la función ACL

Resultado de la certificación

Cualquier método de autenticación eventualmente devolverá un resultado:

Autenticación exitosa: después de comparar la autenticación del cliente es exitosa

Error de autenticación: después de comparar el error de autenticación del cliente, la contraseña en la fuente de datos no es consistente con la contraseña actual

Ignorar la autenticación (ignorar): no se encuentran datos de autenticación en el método de autenticación actual y es imposible juzgar explícitamente si el resultado es exitoso o fallido.

autenticación anónima

La autenticación anónima está habilitada en la configuración predeterminada de EMQ X y cualquier cliente puede acceder a EMQ X. Cuando el complemento de autenticación no está habilitado o el complemento de autenticación no permite/niega (ignora) explícitamente la solicitud de conexión, EMQ X decidirá si permite que el cliente se conecte de acuerdo con la habilitación de la autenticación anónima.

Configure el interruptor de autenticación anónima:

# etc/emqx.conf
## Value: true | false
allow_anonymous = true

Desactive la autenticación anónima en el entorno de producción.

Nota: Necesitamos ingresar al contenedor para modificar la configuración y luego reiniciar el servicio EMQ X.

# etc/plugins/emqx_auth_mysql.conf

## 不加盐,仅做哈希处理
auth.mysql.password_hash = sha256

## salt 前缀:使用 sha256 加密 salt + 密码 拼接的字符串
auth.mysql.password_hash = salt,sha256

## salt 后缀:使用 sha256 加密 密码 + salt 拼接的字符串
auth.mysql.password_hash = sha256,salt

## pbkdf2 with macfun iterations dklen
## macfun: md4, md5, ripemd160, sha, sha224, sha256, sha384, sha512
## auth.mysql.password_hash = pbkdf2,sha256,1000,20

Cómo generar información de autenticación

  1. Para cada cliente, divida el nombre de usuario, la ID del cliente, la contraseña y la sal (salt) y otra información.

  2. Utilice las mismas reglas de salazón y métodos de hash que la autenticación MySQL para procesar la información del cliente y obtener texto cifrado.

  3. Escriba la información del cliente en la base de datos y la contraseña del cliente debe ser información de texto cifrado.

Supongo que te gusta

Origin blog.csdn.net/cz_00001/article/details/132474213
Recomendado
Clasificación