溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

EMQX-AUTH-LDAP使用的實例分析

發(fā)布時間:2022-01-06 16:25:44 來源:億速云 閱讀:121 作者:柒染 欄目:互聯(lián)網(wǎng)科技

本篇文章為大家展示了EMQX-AUTH-LDAP使用的實例分析,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

emqx_auth_ldap,它通過比對每個嘗試接入 EMQX 的終端的 usernamepassword 是否與 OpenLDAP 服務(wù)器存儲的用戶名和密碼一致,以此實現(xiàn)對接入終端的控制,同時它還可以為已通過認(rèn)證的客戶端做 ACL 檢查,通過檢查 OpenLDAP 中對應(yīng)用戶的 mqttPublishTopicmqttSubscriptionTopic 來判斷客戶端是否有發(fā)布和訂閱權(quán)限。其功能邏輯見下圖: EMQX-AUTH-LDAP使用的實例分析

emqx_auth_ldap 目前版本僅支持 OpenLDAP,不支持 Microsoft Active Directory,提供了 連接認(rèn)證訪問控制 的功能。不過用戶只能自行通過第三方工具去管理 OpenLDAP 中的數(shù)據(jù),emqx_auth_ldap 自身不提供這樣的管理功能。

插件配置項說明

這里給出最新版的 emqx_auth_ldap 的默認(rèn)配置文件,主要包括:

配置項說明
auth.ldap.serversldap 服務(wù)器地址
auth.ldap.portldap 端口號
auth.ldap.poolldap 地址池數(shù)量
auth.ldap.bind_dnldap 的綁定專有名稱(DN)
auth.ldap.bind_passwordldap 的綁定密碼
auth.ldap.timeoutldap 的查詢超時時間
auth.ldap.device_dnldap 的設(shè)備專有名
auth.ldap.match_objectclassldap 的匹配對象類
auth.ldap.username.attributetypeldap 的用戶名屬性類型
auth.ldap.password.attributetypeldap 的密碼屬性類型
auth.ldap.sslldap 的 ssl 選項

此處需要注意的是,用戶對 open ldap 的要有基本的理解,才能正確地配置這些參數(shù)。

OpenLDAP 配置說明

當(dāng)用戶將所有 emqx_auth_ldap 的配置選項配置好后,還需要再配置 OpenLDAP 服務(wù)器。

首先,需要將 emqx.schema 拷貝到 ldap 的配置目錄,如果是 Mac 用戶,將 emqx.schema 拷貝到 /etc/openldap/schema/emqx.schema 然后編輯 ldap 的配置文件 slapd.conf,

/etc/openldap/schema/emqx.schema

attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.1.3 NAME 'isEnabled'
EQUALITY booleanMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.7
SINGLE-VALUE
USAGE userApplications )

attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.1 NAME ( 'mqttPublishTopic' 'mpt' )
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
USAGE userApplications )
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.2 NAME ( 'mqttSubscriptionTopic' 'mst' )
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
USAGE userApplications )
attributetype ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4.3 NAME ( 'mqttPubSubTopic' 'mpst' )
EQUALITY caseIgnoreMatch
SUBSTR caseIgnoreSubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.15
USAGE userApplications )

objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.4 NAME 'mqttUser'
AUXILIARY
MAY ( mqttPublishTopic $ mqttSubscriptionTopic $ mqttPubSubTopic) )

objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.2 NAME 'mqttDevice'
SUP top
STRUCTURAL
MUST ( uid )
MAY ( isEnabled ) )

objectclass ( 1.3.6.1.4.1.11.2.53.2.2.3.1.2.3.3 NAME 'mqttSecurity'
SUP top
AUXILIARY
MAY ( userPassword $ userPKCS12 $ pwdAttribute $ pwdLockout ) )

/etc/openldap/slapd.conf

include  /etc/openldap/schema/core.schema
include  /etc/openldap/schema/cosine.schema
include  /etc/openldap/schema/inetorgperson.schema
include  /etc/openldap/schema/ppolicy.schema
include  /etc/openldap/schema/emqx.schema

database bdb
suffix "dc=emqx,dc=io"
rootdn "cn=root,dc=emqx,dc=io"
rootpw {SSHA}eoF7NhNrejVYYyGHqnt+MdKNBh5r1w3W

directory       /etc/openldap/data

編輯完配置文件后可以通過 sudo slapd -d 3 去啟動 OpenLDAP 服務(wù),如果出現(xiàn)以下錯誤:

Unrecognized database type (bdb)
5c4a72b9 slapd.conf: line 7: <database> failed init (bdb)
slapadd: bad configuration file!

那么還需要在 slapd.conf 中添加這一條

modulepath /usr/lib/ldap
moduleload back_bdb.la

這個時候啟動 OpenLDAP 服務(wù)。然后通過命令

./bin/emqx_ctl plugins load emqx_auth_ldap

如果返回

Start apps: [emqx_auth_ldap]
Plugin emqx_auth_ldap loaded successfully.

那么插件就啟用成功了

測試

如果需要對 emqx-auth-ldap 做功能測試,可以通過 sudo slapadd -l schema/emqx.io.ldif -f slapd.conf 命令去將 emqx-auth-ldap 提供的測試數(shù)據(jù)導(dǎo)入到 OpenLDAP 服務(wù)器中。

此時,再去重新 load emqx_auth_ldap 插件。

1.使用正確的用戶名和密碼進(jìn)行連接,并訂閱 "mqttuser0001/pubsub/1" 主題。

mosquitto_sub -p 1883 -u mqttuser0001 -P mqttuser0001 -t 'mqttuser0001/pubsub/1' -d
Client mosqsub|34863-Gilberts- sending CONNECT
Client mosqsub|34863-Gilberts- received CONNACK (0)
Client mosqsub|34863-Gilberts- sending SUBSCRIBE (Mid: 1, Topic: mqttuser0001/pubsub/1, QoS: 0)
Client mosqsub|34863-Gilberts- received SUBACK
Subscribed (mid: 1): 0

結(jié)果:連接并成功訂閱主題

2.使用錯誤的用戶名或密碼進(jìn)行連接,并訂閱 "mqttuser0001/pubsub/1" 主題。

mosquitto_sub -p 1883 -u mqttuser0001 -P mqttuser0002 -t 'mqttuser0001/pubsub/1' -d
Client mosqsub|34884-Gilberts- sending CONNECT
Client mosqsub|34884-Gilberts- received CONNACK (4)
Connection Refused: bad user name or password.
Client mosqsub|34884-Gilberts- sending DISCONNECT

結(jié)果:連接被拒絕

3.使用正確的用戶名和密碼進(jìn)行連接,并訂閱"mqttuser0001/req/+/mqttuser0002"主題。

mosquitto_sub -p 1883 -u mqttuser0001 -P mqttuser0001 -t 'mqttuser0001/req/+/mqttuser0002' -d Client mosqsub|34897-Gilberts- sending CONNECT Client mosqsub|34897-Gilberts- received CONNACK (0) Client mosqsub|34897-Gilberts- sending SUBSCRIBE (Mid: 1, Topic: mqttuser0001/req/+/mqttuser0002, QoS: 0) Client mosqsub|34897-Gilberts- received SUBACK Subscribed (mid: 1): 128

結(jié)果:連接成功,訂閱失敗,錯誤原因碼 128

4.訂閱者和發(fā)布者使用正確的用戶名和密碼進(jìn)行連接 訂閱者訂閱到主題 'mqttuser0001/sub'

  $ mosquitto_sub -p 1883 -u mqttuser0001 -P mqttuser0001 -t 'mqttuser0001/sub' -d   Client mosqsub|34991-Gilberts- sending CONNECT   Client mosqsub|34991-Gilberts- received CONNACK (0)   Client mosqsub|34991-Gilberts- sending SUBSCRIBE (Mid: 1, Topic: mqttuser0001/sub, QoS: 0)   Client mosqsub|34991-Gilberts- received SUBACK   Subscribed (mid: 1): 0

發(fā)布者向主題 'mqttuser0001/sub' 發(fā)布消息。

  mosquitto_pub -p 1883 -u mqttuser0001 -P mqttuser0001 -t 'mqttuser0001/sub' -m "hello"

結(jié)果:訂閱者未接收到任何消息,發(fā)布被拒絕。

做完所有測試, 驗證完 emqx_auth_ldap 的所有功能,就可以正式地使用該插件了。

上述內(nèi)容就是EMQX-AUTH-LDAP使用的實例分析,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI