Lwm2m: fix bug Bootstrap + Tests NoSec - ok
This commit is contained in:
parent
309715641f
commit
4457b5a11a
@ -19,6 +19,9 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.eclipse.californium.elements.util.SslContextUtil;
|
import org.eclipse.californium.elements.util.SslContextUtil;
|
||||||
import org.eclipse.californium.scandium.config.DtlsConnectorConfig;
|
import org.eclipse.californium.scandium.config.DtlsConnectorConfig;
|
||||||
|
import org.eclipse.leshan.core.model.ObjectLoader;
|
||||||
|
import org.eclipse.leshan.core.model.ObjectModel;
|
||||||
|
import org.eclipse.leshan.core.model.StaticModel;
|
||||||
import org.eclipse.leshan.server.bootstrap.BootstrapSessionManager;
|
import org.eclipse.leshan.server.bootstrap.BootstrapSessionManager;
|
||||||
import org.eclipse.leshan.server.californium.bootstrap.LeshanBootstrapServer;
|
import org.eclipse.leshan.server.californium.bootstrap.LeshanBootstrapServer;
|
||||||
import org.eclipse.leshan.server.californium.bootstrap.LeshanBootstrapServerBuilder;
|
import org.eclipse.leshan.server.californium.bootstrap.LeshanBootstrapServerBuilder;
|
||||||
@ -26,6 +29,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.thingsboard.server.transport.lwm2m.bootstrap.secure.LwM2MBootstrapSecurityStore;
|
import org.thingsboard.server.transport.lwm2m.bootstrap.secure.LwM2MBootstrapSecurityStore;
|
||||||
import org.thingsboard.server.transport.lwm2m.bootstrap.secure.LwM2MInMemoryBootstrapConfigStore;
|
import org.thingsboard.server.transport.lwm2m.bootstrap.secure.LwM2MInMemoryBootstrapConfigStore;
|
||||||
|
import org.thingsboard.server.transport.lwm2m.bootstrap.secure.LwM2MInMemoryBootstrapConfigurationAdapter;
|
||||||
import org.thingsboard.server.transport.lwm2m.bootstrap.secure.LwM2mDefaultBootstrapSessionManager;
|
import org.thingsboard.server.transport.lwm2m.bootstrap.secure.LwM2mDefaultBootstrapSessionManager;
|
||||||
import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportBootstrapConfig;
|
import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportBootstrapConfig;
|
||||||
import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportServerConfig;
|
import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportServerConfig;
|
||||||
@ -38,6 +42,7 @@ import java.security.KeyStoreException;
|
|||||||
import java.security.PrivateKey;
|
import java.security.PrivateKey;
|
||||||
import java.security.PublicKey;
|
import java.security.PublicKey;
|
||||||
import java.security.cert.X509Certificate;
|
import java.security.cert.X509Certificate;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static org.thingsboard.server.transport.lwm2m.server.LwM2mNetworkConfig.getCoapConfig;
|
import static org.thingsboard.server.transport.lwm2m.server.LwM2mNetworkConfig.getCoapConfig;
|
||||||
|
|
||||||
@ -79,12 +84,14 @@ public class LwM2MTransportBootstrapService {
|
|||||||
builder.setCoapConfig(getCoapConfig(bootstrapConfig.getPort(), bootstrapConfig.getSecurePort(), serverConfig));
|
builder.setCoapConfig(getCoapConfig(bootstrapConfig.getPort(), bootstrapConfig.getSecurePort(), serverConfig));
|
||||||
|
|
||||||
/* Define model provider (Create Models )*/
|
/* Define model provider (Create Models )*/
|
||||||
|
List<ObjectModel> models = ObjectLoader.loadDefault();
|
||||||
|
builder.setModel(new StaticModel(models));
|
||||||
|
|
||||||
/* Create credentials */
|
/* Create credentials */
|
||||||
this.setServerWithCredentials(builder);
|
this.setServerWithCredentials(builder);
|
||||||
|
|
||||||
// /** Set securityStore with new ConfigStore */
|
/* Set securityStore with new ConfigStore */
|
||||||
// builder.setConfigStore(lwM2MInMemoryBootstrapConfigStore);
|
builder.setConfigStore(new LwM2MInMemoryBootstrapConfigurationAdapter(lwM2MInMemoryBootstrapConfigStore));
|
||||||
|
|
||||||
/* SecurityStore */
|
/* SecurityStore */
|
||||||
builder.setSecurityStore(lwM2MBootstrapSecurityStore);
|
builder.setSecurityStore(lwM2MBootstrapSecurityStore);
|
||||||
|
|||||||
@ -74,15 +74,19 @@ public class LwM2MBootstrapConfig implements Serializable {
|
|||||||
configBs.servers.put(0, server0);
|
configBs.servers.put(0, server0);
|
||||||
/* Security Configuration (object 0) as defined in LWM2M 1.0.x TS. Bootstrap instance = 0 */
|
/* Security Configuration (object 0) as defined in LWM2M 1.0.x TS. Bootstrap instance = 0 */
|
||||||
this.bootstrapServer.setBootstrapServerIs(true);
|
this.bootstrapServer.setBootstrapServerIs(true);
|
||||||
configBs.security.put(0, setServerSecurity(this.bootstrapServer.getHost(), this.bootstrapServer.getPort(), this.bootstrapServer.isBootstrapServerIs(), this.bootstrapServer.getSecurityMode(), this.bootstrapServer.getClientPublicKeyOrId(), this.bootstrapServer.getServerPublicKey(), this.bootstrapServer.getClientSecretKey(), this.bootstrapServer.getServerId()));
|
configBs.security.put(0, setServerSecurity(this.lwm2mServer.getHost(), this.lwm2mServer.getPort(), this.lwm2mServer.getSecurityHost(), this.lwm2mServer.getSecurityPort(), this.bootstrapServer.isBootstrapServerIs(), this.bootstrapServer.getSecurityMode(), this.bootstrapServer.getClientPublicKeyOrId(), this.bootstrapServer.getServerPublicKey(), this.bootstrapServer.getClientSecretKey(), this.bootstrapServer.getServerId()));
|
||||||
/* Security Configuration (object 0) as defined in LWM2M 1.0.x TS. Server instance = 1 */
|
/* Security Configuration (object 0) as defined in LWM2M 1.0.x TS. Server instance = 1 */
|
||||||
configBs.security.put(1, setServerSecurity(this.lwm2mServer.getHost(), this.lwm2mServer.getPort(), this.lwm2mServer.isBootstrapServerIs(), this.lwm2mServer.getSecurityMode(), this.lwm2mServer.getClientPublicKeyOrId(), this.lwm2mServer.getServerPublicKey(), this.lwm2mServer.getClientSecretKey(), this.lwm2mServer.getServerId()));
|
configBs.security.put(1, setServerSecurity(this.lwm2mServer.getHost(), this.lwm2mServer.getPort(), this.lwm2mServer.getSecurityHost(), this.lwm2mServer.getSecurityPort(), this.lwm2mServer.isBootstrapServerIs(), this.lwm2mServer.getSecurityMode(), this.lwm2mServer.getClientPublicKeyOrId(), this.lwm2mServer.getServerPublicKey(), this.lwm2mServer.getClientSecretKey(), this.lwm2mServer.getServerId()));
|
||||||
return configBs;
|
return configBs;
|
||||||
}
|
}
|
||||||
|
|
||||||
private BootstrapConfig.ServerSecurity setServerSecurity(String host, Integer port, boolean bootstrapServer, SecurityMode securityMode, String clientPublicKey, String serverPublicKey, String secretKey, int serverId) {
|
private BootstrapConfig.ServerSecurity setServerSecurity(String host, Integer port, String securityHost, Integer securityPort, boolean bootstrapServer, SecurityMode securityMode, String clientPublicKey, String serverPublicKey, String secretKey, int serverId) {
|
||||||
BootstrapConfig.ServerSecurity serverSecurity = new BootstrapConfig.ServerSecurity();
|
BootstrapConfig.ServerSecurity serverSecurity = new BootstrapConfig.ServerSecurity();
|
||||||
serverSecurity.uri = "coaps://" + host + ":" + Integer.toString(port);
|
if (securityMode.equals(SecurityMode.NO_SEC)) {
|
||||||
|
serverSecurity.uri = "coap://" + host + ":" + Integer.toString(port);
|
||||||
|
} else {
|
||||||
|
serverSecurity.uri = "coaps://" + securityHost + ":" + Integer.toString(securityPort);
|
||||||
|
}
|
||||||
serverSecurity.bootstrapServer = bootstrapServer;
|
serverSecurity.bootstrapServer = bootstrapServer;
|
||||||
serverSecurity.securityMode = securityMode;
|
serverSecurity.securityMode = securityMode;
|
||||||
serverSecurity.publicKeyOrId = setPublicKeyOrId(clientPublicKey, securityMode);
|
serverSecurity.publicKeyOrId = setPublicKeyOrId(clientPublicKey, securityMode);
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2021 The Thingsboard Authors
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.thingsboard.server.transport.lwm2m.bootstrap.secure;
|
||||||
|
|
||||||
|
import org.eclipse.leshan.server.bootstrap.BootstrapConfigStore;
|
||||||
|
import org.eclipse.leshan.server.bootstrap.BootstrapConfigurationStoreAdapter;
|
||||||
|
|
||||||
|
public class LwM2MInMemoryBootstrapConfigurationAdapter extends BootstrapConfigurationStoreAdapter {
|
||||||
|
|
||||||
|
public LwM2MInMemoryBootstrapConfigurationAdapter(BootstrapConfigStore store) {
|
||||||
|
super(store);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -31,24 +31,31 @@ public class LwM2MServerBootstrap {
|
|||||||
|
|
||||||
String host = "0.0.0.0";
|
String host = "0.0.0.0";
|
||||||
Integer port = 0;
|
Integer port = 0;
|
||||||
|
String securityHost = "0.0.0.0";
|
||||||
|
Integer securityPort = 0;
|
||||||
|
|
||||||
SecurityMode securityMode = SecurityMode.NO_SEC;
|
SecurityMode securityMode = SecurityMode.NO_SEC;
|
||||||
|
|
||||||
Integer serverId = 123;
|
Integer serverId = 123;
|
||||||
boolean bootstrapServerIs = false;
|
boolean bootstrapServerIs = false;
|
||||||
|
|
||||||
public LwM2MServerBootstrap(){};
|
public LwM2MServerBootstrap() {
|
||||||
|
}
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
public LwM2MServerBootstrap(LwM2MServerBootstrap bootstrapFromCredential, LwM2MServerBootstrap profileServerBootstrap) {
|
public LwM2MServerBootstrap(LwM2MServerBootstrap bootstrapFromCredential, LwM2MServerBootstrap profileServerBootstrap) {
|
||||||
this.clientPublicKeyOrId = bootstrapFromCredential.getClientPublicKeyOrId();
|
this.clientPublicKeyOrId = bootstrapFromCredential.getClientPublicKeyOrId();
|
||||||
this.clientSecretKey = bootstrapFromCredential.getClientSecretKey();
|
this.clientSecretKey = bootstrapFromCredential.getClientSecretKey();
|
||||||
this.serverPublicKey = profileServerBootstrap.getServerPublicKey();
|
this.serverPublicKey = profileServerBootstrap.getServerPublicKey();
|
||||||
this.clientHoldOffTime = profileServerBootstrap.getClientHoldOffTime();
|
this.clientHoldOffTime = profileServerBootstrap.getClientHoldOffTime();
|
||||||
this.bootstrapServerAccountTimeout = profileServerBootstrap.getBootstrapServerAccountTimeout();
|
this.bootstrapServerAccountTimeout = profileServerBootstrap.getBootstrapServerAccountTimeout();
|
||||||
this.host = (profileServerBootstrap.getHost().equals("0.0.0.0")) ? "localhost" : profileServerBootstrap.getHost();
|
this.host = (profileServerBootstrap.getHost().equals("0.0.0.0")) ? "localhost" : profileServerBootstrap.getHost();
|
||||||
this.port = profileServerBootstrap.getPort();
|
this.port = profileServerBootstrap.getPort();
|
||||||
this.securityMode = profileServerBootstrap.getSecurityMode();
|
this.securityHost = (profileServerBootstrap.getSecurityHost().equals("0.0.0.0")) ? "localhost" : profileServerBootstrap.getSecurityHost();
|
||||||
this.serverId = profileServerBootstrap.getServerId();
|
this.securityPort = profileServerBootstrap.getSecurityPort();
|
||||||
this.bootstrapServerIs = profileServerBootstrap.bootstrapServerIs;
|
this.securityMode = profileServerBootstrap.getSecurityMode();
|
||||||
|
this.serverId = profileServerBootstrap.getServerId();
|
||||||
|
this.bootstrapServerIs = profileServerBootstrap.bootstrapServerIs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user