提交 d7d0f621 编写于 作者: 如梦技术's avatar 如梦技术 🐛

mica-mqtt server 添加默认的账号密码配置。

上级 e93ff243
......@@ -315,7 +315,7 @@ public class MqttServerCreator {
}
public MqttServerCreator usernamePassword(String username, String password) {
return authHandler(new DefaultMqttServerAuthHandler(true, username, password));
return authHandler(new DefaultMqttServerAuthHandler(username, password));
}
public IMqttServerUniqueIdService getUniqueIdService() {
......@@ -511,9 +511,6 @@ public class MqttServerCreator {
if (StrUtil.isBlank(this.nodeName)) {
this.nodeName = ManagementFactory.getRuntimeMXBean().getName() + ':' + port;
}
if (this.authHandler == null) {
this.authHandler = new DefaultMqttServerAuthHandler();
}
if (this.uniqueIdService == null) {
this.uniqueIdService = new DefaultMqttServerUniqueIdServiceImpl();
}
......
......@@ -27,23 +27,17 @@ import java.util.Objects;
* @author L.cm
*/
public class DefaultMqttServerAuthHandler implements IMqttServerAuthHandler {
private final boolean enabled;
private final String authUserName;
private final String authPassword;
public DefaultMqttServerAuthHandler() {
this(false, null, null);
}
public DefaultMqttServerAuthHandler(boolean enabled, String authUserName, String authPassword) {
this.enabled = enabled;
this.authUserName = enabled ? Objects.requireNonNull(authUserName, "Mqtt auth enabled but username is null.") : null;
this.authPassword = enabled ? Objects.requireNonNull(authPassword, "Mqtt auth enabled but password is null.") : null;
public DefaultMqttServerAuthHandler(String authUserName, String authPassword) {
this.authUserName = Objects.requireNonNull(authUserName, "Mqtt auth enabled but username is null.");
this.authPassword = Objects.requireNonNull(authPassword, "Mqtt auth enabled but password is null.");
}
@Override
public boolean authenticate(ChannelContext context, String uniqueId, String clientId, String userName, String password) {
return enabled && authUserName.equals(userName) && authPassword.equals(password);
return authUserName.equals(userName) && authPassword.equals(password);
}
}
......@@ -110,7 +110,7 @@ public class DefaultMqttServerProcessor implements MqttServerProcessor {
return;
}
// 3. 认证
if (!authHandler.verifyAuthenticate(context, uniqueId, clientId, userName, password)) {
if (authHandler != null && !authHandler.verifyAuthenticate(context, uniqueId, clientId, userName, password)) {
connAckByReturnCode(clientId, uniqueId, context, MqttConnectReasonCode.CONNECTION_REFUSED_BAD_USER_NAME_OR_PASSWORD);
return;
}
......
......@@ -13,7 +13,7 @@
<properties>
<!-- mica-mqtt version -->
<revision>1.3.5</revision>
<revision>1.3.6-SNAPSHOT</revision>
<!-- java version -->
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
......
......@@ -112,8 +112,10 @@ public class MqttServerConfiguration {
// 自定义消息监听
messageListenerObjectProvider.ifAvailable(serverCreator::messageListener);
// 认证处理器
MqttServerProperties.MqttAuth mqttAuth = properties.getAuth();
IMqttServerAuthHandler authHandler = authHandlerObjectProvider.getIfAvailable(() -> new DefaultMqttServerAuthHandler(mqttAuth.isEnable(), mqttAuth.getUsername(), mqttAuth.getPassword()));
IMqttServerAuthHandler authHandler = authHandlerObjectProvider.getIfAvailable(() -> {
MqttServerProperties.MqttAuth mqttAuth = properties.getAuth();
return mqttAuth.isEnable() ? new DefaultMqttServerAuthHandler(mqttAuth.getUsername(), mqttAuth.getPassword()) : null;
});
serverCreator.authHandler(authHandler);
// mqtt 内唯一id
uniqueIdServiceObjectProvider.ifAvailable(serverCreator::uniqueIdService);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册