EMQ X はどのような認証方法をサポートしていますか?

EMQ Xの認証とは、クライアントがEMQ Xに接続するときに、サーバー側の構成を介してクライアントのサーバーへの接続許可を制御することを指します。

EMQ X の認定サポートには、次の 2 つのレベルが含まれます。

MQTT プロトコル自体は、CONNECT メッセージでユーザー名とパスワードを指定します。EMQ X は、ユーザー名、ClientID、HTTP、JWT、LDAP、および MongoDB、MySQL、PostgreSQL、Redis などのさまざまなデータベースに基づくさまざまな形式の認証をサポートします。プラグインの形式。

トランスポート層では、TLS はクライアント証明書を使用したクライアントからサーバーへの認証を保証し、サーバーがクライアントに対してサーバー証明書を検証することを保証します。PSKベースのTLS/DTLS認証もサポートされています。

検証方法

EMQ Xは、認証データ ソースとして、組み込みデータ ソース (ファイル、組み込みデータベース)、JWT、外部の主流データベース、およびカスタム HTTP API の使用をサポートします。

データ ソースへの接続と認証ロジックの実行はプラグインによって実装されます。各プラグインは認証方法に対応しており、使用前に対応するプラグインを有効にする必要があります。

クライアントが接続すると、プラグインは、そのユーザー名/クライアント ID およびパスワードが指定されたデータ ソースの情報と一致するかどうかを確認してクライアントを認証します。

EMQ Xでサポートされる認証方法:

組み込みデータソース

ユーザー名認証

クライアントID認証

構成ファイルとEMQ Xの組み込みデータベースを使用して認証データソースを提供し、十分にシンプルで軽量なHTTP APIを通じて管理します。

外部データベース

LDAP認証

MySQL 認定

PostgreSQL 認定

Redis認証

MongoDB 認定

外部データベースは大量のデータを保存できると同時に、外部の機器管理システムとの統合を容易にします。

他の

HTTP認証

JWT認証

JWT認証は認証情報を一括発行でき、HTTP認証は複雑な認証や認証ロジックを実装できます。

プラグインの設定を変更した後、有効にするためにプラグインを再起動する必要があります一部の認証プラグインには ACL 機能が含まれています

認証結果

どの認証方法でも最終的には結果を返します。

認証成功: クライアントとの比較後、認証が成功しました。

認証に失敗しました: クライアント認証を比較した結果、失敗しました。データ ソースのパスワードは現在のパスワードと一致しません。

認証を無視する(ignore):現在の認証方式では認証データが見つからず、結果が成功か失敗かを明示的に判断することができません。

匿名認証

EMQ X のデフォルト構成では匿名認証が有効になっており、どのクライアントも EMQ X にアクセスできます。認証プラグインが有効になっていない場合、または認証プラグインが接続リクエストを明示的に許可/拒否 (無視) しない場合、EMQ X は匿名認証の有効化に従ってクライアントの接続を許可するかどうかを決定します。

匿名認証スイッチを構成します。

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

本番環境では匿名認証を無効にしてください。

注: コンテナに入って構成を変更し、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

認証情報の生成方法

  1. クライアントごとに、ユーザー名、クライアントID、パスワード、ソルト(塩)などの情報を分けます。

  2. MySQL 認証と同じソルティング ルールとハッシュ方法を使用してクライアント情報を処理し、暗号文を取得します。

  3. クライアント情報をデータベースに書き込みます。クライアントのパスワードは暗号文情報である必要があります。

おすすめ

転載: blog.csdn.net/cz_00001/article/details/132474213