You need to sign in or sign up before continuing.
提交 66eeaed9 编写于 作者: Y yuz10

#3175 check acl config before update. otherwise broker may fail to start

上级 36e6687d
...@@ -130,6 +130,7 @@ public class PlainPermissionManager { ...@@ -130,6 +130,7 @@ public class PlainPermissionManager {
log.error("Parameter value plainAccessConfig is null,Please check your parameter"); log.error("Parameter value plainAccessConfig is null,Please check your parameter");
throw new AclException("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.getTopicPerms());
Permission.checkResourcePerms(plainAccessConfig.getGroupPerms()); Permission.checkResourcePerms(plainAccessConfig.getGroupPerms());
...@@ -357,15 +358,19 @@ public class PlainPermissionManager { ...@@ -357,15 +358,19 @@ public class PlainPermissionManager {
this.globalWhiteRemoteAddressStrategy.clear(); this.globalWhiteRemoteAddressStrategy.clear();
} }
public PlainAccessResource buildPlainAccessResource(PlainAccessConfig plainAccessConfig) throws AclException { public void checkPlainAccessConfig(PlainAccessConfig plainAccessConfig) throws AclException {
if (plainAccessConfig.getAccessKey() == null if (plainAccessConfig.getAccessKey() == null
|| plainAccessConfig.getSecretKey() == null || plainAccessConfig.getSecretKey() == null
|| plainAccessConfig.getAccessKey().length() <= AclConstants.ACCESS_KEY_MIN_LENGTH || plainAccessConfig.getAccessKey().length() <= AclConstants.ACCESS_KEY_MIN_LENGTH
|| plainAccessConfig.getSecretKey().length() <= AclConstants.SECRET_KEY_MIN_LENGTH) { || plainAccessConfig.getSecretKey().length() <= AclConstants.SECRET_KEY_MIN_LENGTH) {
throw new AclException(String.format( throw new AclException(String.format(
"The accessKey=%s and secretKey=%s cannot be null and length should longer than 6", "The accessKey=%s and secretKey=%s cannot be null and length should longer than 6",
plainAccessConfig.getAccessKey(), plainAccessConfig.getSecretKey())); plainAccessConfig.getAccessKey(), plainAccessConfig.getSecretKey()));
} }
}
public PlainAccessResource buildPlainAccessResource(PlainAccessConfig plainAccessConfig) throws AclException {
checkPlainAccessConfig(plainAccessConfig);
PlainAccessResource plainAccessResource = new PlainAccessResource(); PlainAccessResource plainAccessResource = new PlainAccessResource();
plainAccessResource.setAccessKey(plainAccessConfig.getAccessKey()); plainAccessResource.setAccessKey(plainAccessConfig.getAccessKey());
plainAccessResource.setSecretKey(plainAccessConfig.getSecretKey()); plainAccessResource.setSecretKey(plainAccessConfig.getSecretKey());
......
...@@ -566,6 +566,16 @@ public class PlainAccessValidatorTest { ...@@ -566,6 +566,16 @@ public class PlainAccessValidatorTest {
plainAccessValidator.updateAccessConfig(plainAccessConfig); 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 @Test
public void updateGlobalWhiteAddrsNormalTest() { public void updateGlobalWhiteAddrsNormalTest() {
System.setProperty("rocketmq.home.dir", "src/test/resources"); System.setProperty("rocketmq.home.dir", "src/test/resources");
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册