Username认证

1.插件

  Username 认证使用配置文件预设客户端用户名与密码,支持通过 HTTP API 管理认证数据。
  Username 认证不依赖外部数据源,使用上足够简单轻量。使用这种认证方式前需要开启插件,我们可以在Dashboard里找到这个插件并开启。
  

 

2.哈希方法

  Username 认证默认使用 sha256 进行密码哈希加密,可在 etc/plugins/emqx_auth_username.conf 中更改: 

    # etc/plugins/emqx_auth_username.conf
    ## Value: plain | md5 | sha | sha256
    auth.user.password_hash = sha256
  配置哈希方法后,新增的预设认证数据与通过 HTTP API 添加的认证数据将以哈希密文存储在 EMQ X 内置数据库中。
 
3.预设认证数据
  可以通过配置文件预设认证数据,编辑配置文件: etc/plugins/emqx_auth_username.conf
  
  插件启动时将读取预设认证数据并加载到 EMQ X 内置数据库中,节点上的认证数据会在此阶段同步至集群中。
  预设认证数据在配置文件中使用了明文密码,出于安全性与可维护性考虑应当避免使用该功能
 
4.HTTP API 管理认证数据  
  EMQ X提供了对应的HTTP API用以维护内置数据源中的认证信息,我们可以添加/查看/取消/更改认证数据我们通过VSCode来访问EMQ X的API /auth_username 完成认证数据的相关操作   
  1:查看已有认证用户数据: GET api/v4/auth_username     
    @hostname = 192.168.0.176
    @port=18083
    @contentType=application/json
    @userName=admin
    @password=public
    #############查看已有用户认证数据##############
    GET http://{{hostname}}:{{port}}/api/v4/auth_username HTTP/1.1
    Content-Type: {{contentType}}
    Authorization: Basic {{userName}}:{{password}} 
    返回结果     
    HTTP/1.1 200 OK
    connection: close
    content-length: 20
    content-type: application/json
    date: Thu, 04 Jun 2020 08:02:39 GMT  
    server: Cowboy
    {
      "data": [],
      "code": 0
    }
  2:添加认证数据API 定义: POST api/v4/auth_username{ "username": "emqx_u", "password": "emqx_p"}     
    ########添加用户认证数据##############
    POST http://{{hostname}}:{{port}}/api/v4/auth_username HTTP/1.1
    Content-Type: {{contentType}}
    Authorization: Basic {{userName}}:{{password}}
     
    {
      "username": "user",
      "password": "123456"
    }   
    使用 POST 请求添加 username 为 user password 为 123456 的认证信息,返回信息中 code = 0 即为成
功。 
 
  
  
  
 
  3.更改指定用户名的密码API 定义: PUT api/v4/auth_username/${username}{ "password": "emqx_new_p"}
指定用户名,传递新密码进行更改,再次连接时需要使用新密码进行连接:  
    ###########更改指定用户名的密码#############
    PUT http://{{hostname}}:{{port}}/api/v4/auth_username/user HTTP/1.1
    Content-Type: {{contentType}}
    Authorization: Basic {{userName}}:{{password}}
    {
      "password": "user"
    }
  4:查看指定用户名信息API 定义: GET api/v4/auth_username/${username}指定用户名,查看相关用户名、密码信息,注意此处返回的密码是使用配置文件指定哈希方式加密后的密码:
    ###########查看指定用户名信息#############
    GET http://{{hostname}}:{{port}}/api/v4/auth_username/user HTTP/1.1
    Content-Type: {{contentType}}
    Authorization: Basic {{userName}}:{{password}}
  5:删除认证数据API 定义: DELETE api/v4/auth_username/${username} 
    ###########删除指定的用户信息#############
    DELETE http://{{hostname}}:{{port}}/api/v4/auth_username/user HTTP/1.1
    Content-Type: {{contentType}}
    Authorization: Basic {{userName}}:{{password}} 
 
5.MQTTX客户端验证
  使用mqtt客户端工具验证使用username连接登录的功能。从 https://github.com/emqx/MQTTX 这个地址下载对应操作系统的mqtt客户端工具。 
  (1)新建连接,配置如下
    

 

    在对应的输入框内输入username和password,clientId这里目前可以随便输入(因为基于clientId的认证功能还没有启用),之后点连接,连接成功。用户名和密码如果输入错误的话是连接不成功的。 
  (2)再次创建爱你一个客户端连接,可作为消息的订阅者,上一个连接作为发布者如下
     

  (3)订阅者添加订阅

    

   (4)上一个客户端连接作为消息的发布者来进行消息的发布

    

   (5)查看订阅者是否接受到消息

posted @ 2021-10-09 17:35  921341593  阅读(252)  评论(0)    收藏  举报