Skip to content

Commit e6ec760

Browse files
authored
[ISSUE #9758] Fix resource filter does not take effect in the listAcl (#9759)
1 parent 4859db9 commit e6ec760

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

auth/src/main/java/org/apache/rocketmq/auth/authorization/provider/LocalAuthorizationMetadataProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ public CompletableFuture<List<Acl>> listAcl(String subjectFilter, String resourc
148148
if (CollectionUtils.isEmpty(entries)) {
149149
continue;
150150
}
151-
if (StringUtils.isNotBlank(resourceFilter) && !subjectKey.contains(resourceFilter)) {
151+
if (StringUtils.isNotBlank(resourceFilter)) {
152152
entries.removeIf(entry -> !entry.toResourceStr().contains(resourceFilter));
153153
}
154154
if (CollectionUtils.isEmpty(entries)) {

auth/src/test/java/org/apache/rocketmq/auth/authorization/manager/AuthorizationMetadataManagerTest.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import org.apache.rocketmq.auth.authorization.factory.AuthorizationFactory;
2929
import org.apache.rocketmq.auth.authorization.model.Acl;
3030
import org.apache.rocketmq.auth.authorization.model.Policy;
31+
import org.apache.rocketmq.auth.authorization.model.PolicyEntry;
3132
import org.apache.rocketmq.auth.authorization.model.Resource;
3233
import org.apache.rocketmq.auth.config.AuthConfig;
3334
import org.apache.rocketmq.auth.helper.AuthTestHelper;
@@ -220,6 +221,10 @@ public void listAcl() {
220221
"192.168.0.0/24,10.10.0.0/24", Decision.ALLOW);
221222
this.authorizationMetadataManager.createAcl(acl2).join();
222223

224+
Acl acl3 = AuthTestHelper.buildAcl("User:test-2", "Topic:acl-2,Group:acl-2", "PUB,SUB",
225+
"192.168.0.0/24,10.10.0.0/24", Decision.ALLOW);
226+
this.authorizationMetadataManager.createAcl(acl3).join();
227+
223228
List<Acl> acls1 = this.authorizationMetadataManager.listAcl(null, null).join();
224229
Assert.assertEquals(acls1.size(), 2);
225230

@@ -235,13 +240,21 @@ public void listAcl() {
235240

236241
List<Acl> acls5 = this.authorizationMetadataManager.listAcl(null, "test-1").join();
237242
Assert.assertEquals(acls5.size(), 1);
238-
Assert.assertEquals(acls4.get(0).getPolicy(PolicyType.CUSTOM).getEntries().size(), 1);
243+
Assert.assertEquals(acls5.get(0).getPolicy(PolicyType.CUSTOM).getEntries().size(), 2);
239244

240245
List<Acl> acls6 = this.authorizationMetadataManager.listAcl("User:abc", null).join();
241246
Assert.assertTrue(CollectionUtils.isEmpty(acls6));
242247

243248
List<Acl> acls7 = this.authorizationMetadataManager.listAcl(null, "Topic:abc").join();
244249
Assert.assertTrue(CollectionUtils.isEmpty(acls7));
250+
251+
List<Acl> acls8 = this.authorizationMetadataManager.listAcl("test-2", "test-2").join();
252+
Assert.assertEquals(acls8.size(), 1);
253+
List<PolicyEntry> policyEntries = acls8.get(0).getPolicy(PolicyType.CUSTOM).getEntries();
254+
Assert.assertEquals(policyEntries.size(), 2);
255+
for (PolicyEntry policyEntry : policyEntries) {
256+
Assert.assertTrue(policyEntry.toResourceStr().contains("test-2"));
257+
}
245258
}
246259

247260
private void clearAllUsers() {

0 commit comments

Comments
 (0)