jwt settings - running install on msa black box tests
This commit is contained in:
parent
5ea3c9ff6a
commit
c313e1cf9c
@ -32,6 +32,7 @@ import java.util.Arrays;
|
|||||||
"org.thingsboard.server.dao",
|
"org.thingsboard.server.dao",
|
||||||
"org.thingsboard.server.common.stats",
|
"org.thingsboard.server.common.stats",
|
||||||
"org.thingsboard.server.common.transport.config.ssl",
|
"org.thingsboard.server.common.transport.config.ssl",
|
||||||
|
"org.thingsboard.server.config.jwt",
|
||||||
"org.thingsboard.server.cache",
|
"org.thingsboard.server.cache",
|
||||||
"org.thingsboard.server.springfox"
|
"org.thingsboard.server.springfox"
|
||||||
})
|
})
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.thingsboard.server.config;
|
package org.thingsboard.server.config.jwt;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
@ -13,12 +13,13 @@
|
|||||||
* See the License for the specific language governing permissions and
|
* See the License for the specific language governing permissions and
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
package org.thingsboard.server.config;
|
package org.thingsboard.server.config.jwt;
|
||||||
|
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.RandomStringUtils;
|
import org.apache.commons.lang3.RandomStringUtils;
|
||||||
|
import org.springframework.dao.InvalidDataAccessResourceUsageException;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.thingsboard.common.util.JacksonUtil;
|
import org.thingsboard.common.util.JacksonUtil;
|
||||||
import org.thingsboard.server.common.data.AdminSettings;
|
import org.thingsboard.server.common.data.AdminSettings;
|
||||||
@ -67,11 +68,12 @@ public class JwtSettingsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void createJwtAdminSettings() {
|
public void createJwtAdminSettings() {
|
||||||
|
log.debug("Creating JWT admin settings...");
|
||||||
Objects.requireNonNull(jwtSettings, "JWT settings is null");
|
Objects.requireNonNull(jwtSettings, "JWT settings is null");
|
||||||
if (!isJwtAdminSettingsExists()) {
|
if (isJwtAdminSettingsNotExists()) {
|
||||||
if (hasDefaultTokenSigningKey()) {
|
if (hasDefaultTokenSigningKey()) {
|
||||||
if (!isAllowedDefaultJwtSigningKey()) {
|
if (!isAllowedDefaultJwtSigningKey()) {
|
||||||
log.warn("JWT token signing key is default. Generating a new random key");
|
log.info("JWT token signing key is default. Generating a new random key");
|
||||||
jwtSettings.setTokenSigningKey(Base64.getEncoder().encodeToString(RandomStringUtils.randomAlphanumeric(64).getBytes(StandardCharsets.UTF_8)));
|
jwtSettings.setTokenSigningKey(Base64.getEncoder().encodeToString(RandomStringUtils.randomAlphanumeric(64).getBytes(StandardCharsets.UTF_8)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -84,12 +86,17 @@ public class JwtSettingsService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isJwtAdminSettingsExists() {
|
public boolean isJwtAdminSettingsNotExists() {
|
||||||
return findJwtAdminSettings() == null;
|
return findJwtAdminSettings() == null;
|
||||||
}
|
}
|
||||||
|
|
||||||
AdminSettings findJwtAdminSettings() {
|
AdminSettings findJwtAdminSettings() {
|
||||||
|
try {
|
||||||
return adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, ADMIN_SETTINGS_JWT_KEY);
|
return adminSettingsService.findAdminSettingsByKey(TenantId.SYS_TENANT_ID, ADMIN_SETTINGS_JWT_KEY);
|
||||||
|
} catch (InvalidDataAccessResourceUsageException ignored) {
|
||||||
|
log.debug("findAdminSettingsByKey is returning InvalidDataAccessResourceUsageException. This is an installation case when the database is not initialized yet");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -101,8 +108,7 @@ public class JwtSettingsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void validateJwtTokenSigningKey() {
|
public void validateJwtTokenSigningKey() {
|
||||||
if (!isJwtAdminSettingsExists()) {
|
if (isJwtAdminSettingsNotExists() && hasDefaultTokenSigningKey()) {
|
||||||
if (hasDefaultTokenSigningKey()) {
|
|
||||||
if (isAllowedDefaultJwtSigningKey()) {
|
if (isAllowedDefaultJwtSigningKey()) {
|
||||||
log.warn("Default JWT signing key is allowed. This is a security issue. Please, consider to set a strong key in admin settings");
|
log.warn("Default JWT signing key is allowed. This is a security issue. Please, consider to set a strong key in admin settings");
|
||||||
} else {
|
} else {
|
||||||
@ -112,6 +118,5 @@ public class JwtSettingsService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -19,7 +19,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.context.annotation.Profile;
|
import org.springframework.context.annotation.Profile;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.thingsboard.server.config.JwtSettingsService;
|
import org.thingsboard.server.config.jwt.JwtSettingsService;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@Profile("install")
|
@Profile("install")
|
||||||
@ -31,7 +31,7 @@ public class ConditionValidatorUpgradeServiceImpl implements ConditionValidatorU
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validateConditionsBeforeUpgrade(String fromVersion) throws Exception {
|
public void validateConditionsBeforeUpgrade(String fromVersion) throws Exception {
|
||||||
log.info("Validating conditions before upgrade..");
|
log.info("Validating conditions before upgrade...");
|
||||||
jwtSettingsService.validateJwtTokenSigningKey();
|
jwtSettingsService.validateJwtTokenSigningKey();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -82,7 +82,7 @@ import org.thingsboard.server.common.data.tenant.profile.DefaultTenantProfileCon
|
|||||||
import org.thingsboard.server.common.data.tenant.profile.TenantProfileData;
|
import org.thingsboard.server.common.data.tenant.profile.TenantProfileData;
|
||||||
import org.thingsboard.server.common.data.tenant.profile.TenantProfileQueueConfiguration;
|
import org.thingsboard.server.common.data.tenant.profile.TenantProfileQueueConfiguration;
|
||||||
import org.thingsboard.server.common.data.widget.WidgetsBundle;
|
import org.thingsboard.server.common.data.widget.WidgetsBundle;
|
||||||
import org.thingsboard.server.config.JwtSettingsService;
|
import org.thingsboard.server.config.jwt.JwtSettingsService;
|
||||||
import org.thingsboard.server.dao.attributes.AttributesService;
|
import org.thingsboard.server.dao.attributes.AttributesService;
|
||||||
import org.thingsboard.server.dao.customer.CustomerService;
|
import org.thingsboard.server.dao.customer.CustomerService;
|
||||||
import org.thingsboard.server.dao.device.DeviceCredentialsService;
|
import org.thingsboard.server.dao.device.DeviceCredentialsService;
|
||||||
|
|||||||
@ -25,7 +25,7 @@ import org.thingsboard.server.common.data.CacheConstants;
|
|||||||
import org.thingsboard.server.common.data.id.UserId;
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
import org.thingsboard.server.common.data.security.event.UserAuthDataChangedEvent;
|
import org.thingsboard.server.common.data.security.event.UserAuthDataChangedEvent;
|
||||||
import org.thingsboard.server.common.data.security.model.JwtToken;
|
import org.thingsboard.server.common.data.security.model.JwtToken;
|
||||||
import org.thingsboard.server.config.JwtSettingsService;
|
import org.thingsboard.server.config.jwt.JwtSettingsService;
|
||||||
import org.thingsboard.server.service.security.model.token.JwtTokenFactory;
|
import org.thingsboard.server.service.security.model.token.JwtTokenFactory;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
|
|||||||
@ -35,7 +35,7 @@ import org.thingsboard.server.common.data.id.TenantId;
|
|||||||
import org.thingsboard.server.common.data.id.UserId;
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
import org.thingsboard.server.common.data.security.Authority;
|
import org.thingsboard.server.common.data.security.Authority;
|
||||||
import org.thingsboard.server.common.data.security.model.JwtToken;
|
import org.thingsboard.server.common.data.security.model.JwtToken;
|
||||||
import org.thingsboard.server.config.JwtSettingsService;
|
import org.thingsboard.server.config.jwt.JwtSettingsService;
|
||||||
import org.thingsboard.server.service.security.exception.JwtExpiredTokenException;
|
import org.thingsboard.server.service.security.exception.JwtExpiredTokenException;
|
||||||
import org.thingsboard.server.service.security.model.JwtTokenPair;
|
import org.thingsboard.server.service.security.model.JwtTokenPair;
|
||||||
import org.thingsboard.server.service.security.model.SecurityUser;
|
import org.thingsboard.server.service.security.model.SecurityUser;
|
||||||
|
|||||||
@ -23,8 +23,8 @@ import org.thingsboard.server.common.data.id.TenantId;
|
|||||||
import org.thingsboard.server.common.data.id.UserId;
|
import org.thingsboard.server.common.data.id.UserId;
|
||||||
import org.thingsboard.server.common.data.security.Authority;
|
import org.thingsboard.server.common.data.security.Authority;
|
||||||
import org.thingsboard.server.common.data.security.model.JwtToken;
|
import org.thingsboard.server.common.data.security.model.JwtToken;
|
||||||
import org.thingsboard.server.config.JwtSettings;
|
import org.thingsboard.server.config.jwt.JwtSettings;
|
||||||
import org.thingsboard.server.config.JwtSettingsService;
|
import org.thingsboard.server.config.jwt.JwtSettingsService;
|
||||||
import org.thingsboard.server.service.security.model.SecurityUser;
|
import org.thingsboard.server.service.security.model.SecurityUser;
|
||||||
import org.thingsboard.server.service.security.model.UserPrincipal;
|
import org.thingsboard.server.service.security.model.UserPrincipal;
|
||||||
import org.thingsboard.server.service.security.model.token.AccessJwtToken;
|
import org.thingsboard.server.service.security.model.token.AccessJwtToken;
|
||||||
|
|||||||
@ -26,8 +26,8 @@ import org.thingsboard.server.common.data.security.Authority;
|
|||||||
import org.thingsboard.server.common.data.security.UserCredentials;
|
import org.thingsboard.server.common.data.security.UserCredentials;
|
||||||
import org.thingsboard.server.common.data.security.event.UserAuthDataChangedEvent;
|
import org.thingsboard.server.common.data.security.event.UserAuthDataChangedEvent;
|
||||||
import org.thingsboard.server.common.data.security.model.JwtToken;
|
import org.thingsboard.server.common.data.security.model.JwtToken;
|
||||||
import org.thingsboard.server.config.JwtSettings;
|
import org.thingsboard.server.config.jwt.JwtSettings;
|
||||||
import org.thingsboard.server.config.JwtSettingsService;
|
import org.thingsboard.server.config.jwt.JwtSettingsService;
|
||||||
import org.thingsboard.server.dao.customer.CustomerService;
|
import org.thingsboard.server.dao.customer.CustomerService;
|
||||||
import org.thingsboard.server.dao.user.UserService;
|
import org.thingsboard.server.dao.user.UserService;
|
||||||
import org.thingsboard.server.service.security.auth.jwt.JwtAuthenticationProvider;
|
import org.thingsboard.server.service.security.auth.jwt.JwtAuthenticationProvider;
|
||||||
|
|||||||
@ -56,6 +56,10 @@
|
|||||||
<appender-ref ref="STDOUT" />
|
<appender-ref ref="STDOUT" />
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
|
<logger name="org.thingsboard.server.config.jwt" level="INFO">
|
||||||
|
<appender-ref ref="STDOUT" />
|
||||||
|
</logger>
|
||||||
|
|
||||||
<logger name="org.thingsboard.server" level="INFO" />
|
<logger name="org.thingsboard.server" level="INFO" />
|
||||||
|
|
||||||
<root level="INFO">
|
<root level="INFO">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user