mirror of
https://github.com/apache/rocketmq.git
synced 2026-09-24 16:04:00 +08:00
#3175 check acl config before update. otherwise broker may fail to start
This commit is contained in:
@@ -130,6 +130,7 @@ public class PlainPermissionManager {
|
||||
log.error("Parameter value plainAccessConfig is null,Please check your parameter");
|
||||
throw new AclException("Parameter value plainAccessConfig is null, Please check your parameter");
|
||||
}
|
||||
checkPlainAccessConfig(plainAccessConfig);
|
||||
|
||||
Permission.checkResourcePerms(plainAccessConfig.getTopicPerms());
|
||||
Permission.checkResourcePerms(plainAccessConfig.getGroupPerms());
|
||||
@@ -357,15 +358,19 @@ public class PlainPermissionManager {
|
||||
this.globalWhiteRemoteAddressStrategy.clear();
|
||||
}
|
||||
|
||||
public PlainAccessResource buildPlainAccessResource(PlainAccessConfig plainAccessConfig) throws AclException {
|
||||
public void checkPlainAccessConfig(PlainAccessConfig plainAccessConfig) throws AclException {
|
||||
if (plainAccessConfig.getAccessKey() == null
|
||||
|| plainAccessConfig.getSecretKey() == null
|
||||
|| plainAccessConfig.getAccessKey().length() <= AclConstants.ACCESS_KEY_MIN_LENGTH
|
||||
|| plainAccessConfig.getSecretKey().length() <= AclConstants.SECRET_KEY_MIN_LENGTH) {
|
||||
|| plainAccessConfig.getSecretKey() == null
|
||||
|| plainAccessConfig.getAccessKey().length() <= AclConstants.ACCESS_KEY_MIN_LENGTH
|
||||
|| plainAccessConfig.getSecretKey().length() <= AclConstants.SECRET_KEY_MIN_LENGTH) {
|
||||
throw new AclException(String.format(
|
||||
"The accessKey=%s and secretKey=%s cannot be null and length should longer than 6",
|
||||
plainAccessConfig.getAccessKey(), plainAccessConfig.getSecretKey()));
|
||||
"The accessKey=%s and secretKey=%s cannot be null and length should longer than 6",
|
||||
plainAccessConfig.getAccessKey(), plainAccessConfig.getSecretKey()));
|
||||
}
|
||||
}
|
||||
|
||||
public PlainAccessResource buildPlainAccessResource(PlainAccessConfig plainAccessConfig) throws AclException {
|
||||
checkPlainAccessConfig(plainAccessConfig);
|
||||
PlainAccessResource plainAccessResource = new PlainAccessResource();
|
||||
plainAccessResource.setAccessKey(plainAccessConfig.getAccessKey());
|
||||
plainAccessResource.setSecretKey(plainAccessConfig.getSecretKey());
|
||||
|
||||
@@ -566,6 +566,16 @@ public class PlainAccessValidatorTest {
|
||||
plainAccessValidator.updateAccessConfig(plainAccessConfig);
|
||||
}
|
||||
|
||||
@Test(expected = AclException.class)
|
||||
public void createAndUpdateAccessAclNullSkExceptionTest() {
|
||||
PlainAccessConfig plainAccessConfig = new PlainAccessConfig();
|
||||
plainAccessConfig.setAccessKey("RocketMQ33");
|
||||
// secret key is null
|
||||
|
||||
PlainAccessValidator plainAccessValidator = new PlainAccessValidator();
|
||||
plainAccessValidator.updateAccessConfig(plainAccessConfig);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void updateGlobalWhiteAddrsNormalTest() {
|
||||
System.setProperty("rocketmq.home.dir", "src/test/resources");
|
||||
|
||||
Reference in New Issue
Block a user