MQTT之emqx_auth_http插件认证

官方中文参考文档:

https://docs.emqx.io/docs/broker/v3/cn/plugins.html#http

说明:本示例基于docker上部署运行的MQTT 3.0版本介绍,插件已启动Dashboard面板

第一步:MQTT消息面板部分

配置auth、super及ack请求验证的api路径:

第二部分:Java后台api请求:

package com.ifreecomm.education.platform.apis.controller.internal;

import com.ifreecomm.education.infrastructure.authentication.AllowAnonymous;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController("openMqttController")
@RequestMapping("/api/internal/mqtt")
@Api(description = "MQTT Broker调用的API")
public class EmqAuthController {


    @ApiOperation("客户端登陆验证接口")
    @PostMapping("/auth")
    @AllowAnonymous
    public ResponseEntity<?> auth(@ApiParam("用户名,使用UserId代替")
                                  @RequestParam String username,
                                  @ApiParam("MQTT客户端id")
                                  @RequestParam String clientid,
                                  @ApiParam("MQTT验证密码,使用Token代替")
                                  @RequestParam String password) {

        log.info("=========> receive auth request:clientid = {}, username={}, password={}",clientid,username,password);

        /**
         * TODO 业务鉴权逻辑
         */
        return ResponseEntity.status(HttpStatus.OK).build();
    }

    @ApiOperation("超级用户验证接口")
    @PostMapping("/superuser")
    @AllowAnonymous
    public ResponseEntity<?> superuser(@ApiParam("用户名,使用UserId代替")
                                       @RequestParam String username,
                                       @ApiParam("MQTT客户端id")
                                       @RequestParam String clientid) {

        /**
         * TODO 超级用户验证逻辑
         */
        return ResponseEntity.ok().build();
    }

    @ApiOperation("客户端操作权限验证接口")
    @PostMapping("/acl")
    @AllowAnonymous
    public ResponseEntity<?> acl(@ApiParam("操作类型,订阅:1,发布:2")
                                 @RequestParam Integer access,
                                 @ApiParam("用户名,使用UserId代替")
                                 @RequestParam String username,
                                 @ApiParam("MQTT客户端id")
                                 @RequestParam String clientid,
                                 @ApiParam("操作主题(topic)")
                                 @RequestParam String topic) {

        /**
         * TODO 客户端操作权限验证逻辑
         */
        return ResponseEntity.ok().build();
    }

}

第三步:使用控制面板Websocket测试,后台依次进入auth、superuser、acl控制器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值