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 org.eclipse.californium.elements.util.SslContextUtil;
|
||||
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.californium.bootstrap.LeshanBootstrapServer;
|
||||
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.thingsboard.server.transport.lwm2m.bootstrap.secure.LwM2MBootstrapSecurityStore;
|
||||
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.config.LwM2MTransportBootstrapConfig;
|
||||
import org.thingsboard.server.transport.lwm2m.config.LwM2MTransportServerConfig;
|
||||
@ -38,6 +42,7 @@ import java.security.KeyStoreException;
|
||||
import java.security.PrivateKey;
|
||||
import java.security.PublicKey;
|
||||
import java.security.cert.X509Certificate;
|
||||
import java.util.List;
|
||||
|
||||
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));
|
||||
|
||||
/* Define model provider (Create Models )*/
|
||||
List<ObjectModel> models = ObjectLoader.loadDefault();
|
||||
builder.setModel(new StaticModel(models));
|
||||
|
||||
/* Create credentials */
|
||||
this.setServerWithCredentials(builder);
|
||||
|
||||
// /** Set securityStore with new ConfigStore */
|
||||
// builder.setConfigStore(lwM2MInMemoryBootstrapConfigStore);
|
||||
/* Set securityStore with new ConfigStore */
|
||||
builder.setConfigStore(new LwM2MInMemoryBootstrapConfigurationAdapter(lwM2MInMemoryBootstrapConfigStore));
|
||||
|
||||
/* SecurityStore */
|
||||
builder.setSecurityStore(lwM2MBootstrapSecurityStore);
|
||||
|
||||
@ -74,15 +74,19 @@ public class LwM2MBootstrapConfig implements Serializable {
|
||||
configBs.servers.put(0, server0);
|
||||
/* Security Configuration (object 0) as defined in LWM2M 1.0.x TS. Bootstrap instance = 0 */
|
||||
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 */
|
||||
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;
|
||||
}
|
||||
|
||||
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();
|
||||
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.securityMode = 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,13 +31,18 @@ public class LwM2MServerBootstrap {
|
||||
|
||||
String host = "0.0.0.0";
|
||||
Integer port = 0;
|
||||
String securityHost = "0.0.0.0";
|
||||
Integer securityPort = 0;
|
||||
|
||||
SecurityMode securityMode = SecurityMode.NO_SEC;
|
||||
|
||||
Integer serverId = 123;
|
||||
boolean bootstrapServerIs = false;
|
||||
|
||||
public LwM2MServerBootstrap(){};
|
||||
public LwM2MServerBootstrap() {
|
||||
}
|
||||
|
||||
;
|
||||
|
||||
public LwM2MServerBootstrap(LwM2MServerBootstrap bootstrapFromCredential, LwM2MServerBootstrap profileServerBootstrap) {
|
||||
this.clientPublicKeyOrId = bootstrapFromCredential.getClientPublicKeyOrId();
|
||||
@ -47,6 +52,8 @@ public class LwM2MServerBootstrap {
|
||||
this.bootstrapServerAccountTimeout = profileServerBootstrap.getBootstrapServerAccountTimeout();
|
||||
this.host = (profileServerBootstrap.getHost().equals("0.0.0.0")) ? "localhost" : profileServerBootstrap.getHost();
|
||||
this.port = profileServerBootstrap.getPort();
|
||||
this.securityHost = (profileServerBootstrap.getSecurityHost().equals("0.0.0.0")) ? "localhost" : profileServerBootstrap.getSecurityHost();
|
||||
this.securityPort = profileServerBootstrap.getSecurityPort();
|
||||
this.securityMode = profileServerBootstrap.getSecurityMode();
|
||||
this.serverId = profileServerBootstrap.getServerId();
|
||||
this.bootstrapServerIs = profileServerBootstrap.bootstrapServerIs;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user