---
title: 客户端认证
---

# 客户端认证

FlowMQ 提供统一的客户端认证能力，所有协议（MQTT、Kafka、AMQP、NATS）共享同一套账号与凭据体系。

认证默认开启，初始状态下没有为任何协议配置认证器，此时客户端可匿名访问，确保开箱即用。管理员可随时创建认证器、将其绑定到对应协议，按需收紧安全策略。

## 认证器

认证器是执行凭据校验的组件。FlowMQ 支持以下认证器类型：

| 类型 | 说明 | 状态 |
|------|------|------|
| **密码认证（password）** | 用户名/密码认证，凭据存储于 FlowMQ 内部 | 可用 |
| **Webhook** | 将认证请求转发至外部 HTTP 服务，由业务系统决定是否放行 | 可用 |
| **X.509 证书** | 基于客户端 TLS 证书（mTLS）进行身份识别 | 规划中 |
| **OIDC** | 对接 OpenID Connect / OAuth2，验证 JWT 令牌 | 规划中 |
| **LDAP** | 对接 LDAP / Active Directory | 规划中 |

管理员可以创建任意数量的认证器实例，并分别为每个协议指定使用哪一个。

各协议的凭据承载方式：

| 协议 | 认证方式 |
|------|----------|
| **MQTT** | `CONNECT` 报文中的 `username` / `password` |
| **Kafka** | SASL/PLAIN |
| **AMQP** | SASL PLAIN |
| **NATS** | `CONNECT` 命令中的认证信息 |

## 协议与认证器的绑定

每个协议最多绑定一个认证器。当某个协议绑定了认证器时，该协议的所有连接都必须通过对应的凭据校验；未绑定认证器的协议则允许匿名访问。

这种模型让管理员可以按协议独立配置认证策略。例如，对外的 MQTT 接入使用 Webhook 对接业务系统，内部的 Kafka 接入使用内置的用户名/密码认证，而 NATS 保持匿名开放。

## 匿名访问

如果某个协议没有绑定认证器，客户端无需提供凭据即可连接，FlowMQ 会以匿名身份接受该连接。这保证了未配置认证器的协议不会被意外中断。

如需强制所有连接必须认证，请为每个对外开放的协议都绑定一个认证器。

## Dashboard 操作

在 Dashboard 的 **Authentication** 页面可以：

- 创建、编辑和删除认证器实例
- 为每个协议绑定或解绑认证器
- 对密码认证器执行用户管理（创建用户、修改密码、删除用户）

![客户端认证](.assets/authn_cn.png)
