您好,登錄后才能下訂單哦!
本篇文章為大家展示了EMQX-AUTH-LDAP使用的實例分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
emqx_auth_ldap,它通過比對每個嘗試接入 EMQX 的終端的 username
和 password
是否與 OpenLDAP 服務器存儲的用戶名和密碼一致,以此實現對接入終端的控制,同時它還可以為已通過認證的客戶端做 ACL 檢查,通過檢查 OpenLDAP 中對應用戶的 mqttPublishTopic
和 mqttSubscriptionTopic
來判斷客戶端是否有發布和訂閱權限。其功能邏輯見下圖:
emqx_auth_ldap 目前版本僅支持 OpenLDAP,不支持 Microsoft Active Directory,提供了 連接認證 和 訪問控制 的功能。不過用戶只能自行通過第三方工具去管理 OpenLDAP 中的數據,emqx_auth_ldap 自身不提供這樣的管理功能。
這里給出最新版的 emqx_auth_ldap 的默認配置文件,主要包括:
配置項 | 說明 |
---|---|
auth.ldap.servers | ldap 服務器地址 |
auth.ldap.port | ldap 端口號 |
auth.ldap.pool | ldap 地址池數量 |
auth.ldap.bind_dn | ldap 的綁定專有名稱(DN) |
auth.ldap.bind_password | ldap 的綁定密碼 |
auth.ldap.timeout | ldap 的查詢超時時間 |
auth.ldap.device_dn | ldap 的設備專有名 |
auth.ldap.match_objectclass | ldap 的匹配對象類 |
auth.ldap.username.attributetype | ldap 的用戶名屬性類型 |
auth.ldap.password.attributetype | ldap 的密碼屬性類型 |
auth.ldap.ssl | ldap 的 ssl 選項 |
此處需要注意的是,用戶對 open ldap 的要有基本的理解,才能正確地配置這些參數。
當用戶將所有 emqx_auth_ldap 的配置選項配置好后,還需要再配置 OpenLDAP 服務器。
首先,需要將 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 服務,如果出現以下錯誤:
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 服務。然后通過命令
./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 提供的測試數據導入到 OpenLDAP 服務器中。
此時,再去重新 load emqx_auth_ldap 插件。
1.使用正確的用戶名和密碼進行連接,并訂閱 "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
結果:連接并成功訂閱主題
2.使用錯誤的用戶名或密碼進行連接,并訂閱 "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
結果:連接被拒絕
3.使用正確的用戶名和密碼進行連接,并訂閱"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
結果:連接成功,訂閱失敗,錯誤原因碼 128
4.訂閱者和發布者使用正確的用戶名和密碼進行連接 訂閱者訂閱到主題 '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
發布者向主題 'mqttuser0001/sub' 發布消息。
mosquitto_pub -p 1883 -u mqttuser0001 -P mqttuser0001 -t 'mqttuser0001/sub' -m "hello"
結果:訂閱者未接收到任何消息,發布被拒絕。
做完所有測試, 驗證完 emqx_auth_ldap 的所有功能,就可以正式地使用該插件了。
上述內容就是EMQX-AUTH-LDAP使用的實例分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。