|
24 | 24 | import org.apache.rocketmq.auth.authentication.manager.AuthenticationMetadataManager; |
25 | 25 | import org.apache.rocketmq.auth.authentication.model.Subject; |
26 | 26 | import org.apache.rocketmq.auth.authentication.model.User; |
| 27 | +import org.apache.rocketmq.auth.authorization.chain.AclAuthorizationHandler; |
27 | 28 | import org.apache.rocketmq.auth.authorization.context.AuthorizationContext; |
28 | 29 | import org.apache.rocketmq.auth.authorization.context.DefaultAuthorizationContext; |
29 | 30 | import org.apache.rocketmq.auth.authorization.enums.Decision; |
@@ -345,6 +346,46 @@ public void evaluate8() { |
345 | 346 | } |
346 | 347 | } |
347 | 348 |
|
| 349 | + @Test |
| 350 | + public void evaluate9() { |
| 351 | + if (MixAll.isMac()) { |
| 352 | + return; |
| 353 | + } |
| 354 | + User user = User.of("test", "test"); |
| 355 | + this.authenticationMetadataManager.createUser(user).join(); |
| 356 | + |
| 357 | + Acl acl0 = AuthTestHelper.buildAcl("User:test", "*", "Pub", "192.168.0.0/24", Decision.ALLOW); |
| 358 | + this.authorizationMetadataManager.createAcl(acl0).join(); |
| 359 | + Acl acl1 = AuthTestHelper.buildAcl("User:test", "Topic:*", "Pub", "192.168.0.0/24", Decision.ALLOW); |
| 360 | + this.authorizationMetadataManager.createAcl(acl1).join(); |
| 361 | + Acl acl2 = AuthTestHelper.buildAcl("User:test", "Topic:test*", "Pub", "192.168.0.0/24", Decision.ALLOW); |
| 362 | + this.authorizationMetadataManager.createAcl(acl2).join(); |
| 363 | + Acl acl3 = AuthTestHelper.buildAcl("User:test", "Topic:test_*", "Pub", "192.168.0.0/24", Decision.DENY); |
| 364 | + this.authorizationMetadataManager.createAcl(acl3).join(); |
| 365 | + Acl acl4 = AuthTestHelper.buildAcl("User:test", "Topic:test_001", "Pub", "192.168.0.0/24", Decision.DENY); |
| 366 | + this.authorizationMetadataManager.createAcl(acl4).join(); |
| 367 | + |
| 368 | + Assert.assertThrows(AuthorizationException.class, () -> { |
| 369 | + Subject subject = Subject.of("User:test"); |
| 370 | + Resource resource = Resource.ofTopic("test_001"); |
| 371 | + Action action = Action.PUB; |
| 372 | + String sourceIp = "192.168.0.1"; |
| 373 | + DefaultAuthorizationContext context = DefaultAuthorizationContext.of(subject, resource, action, sourceIp); |
| 374 | + context.setRpcCode("10"); |
| 375 | + this.evaluator.evaluate(Collections.singletonList(context)); |
| 376 | + }); |
| 377 | + |
| 378 | + Assert.assertThrows(AuthorizationException.class, () -> { |
| 379 | + Subject subject = Subject.of("User:test"); |
| 380 | + Resource resource = Resource.ofTopic("test_002"); |
| 381 | + Action action = Action.PUB; |
| 382 | + String sourceIp = "192.168.0.1"; |
| 383 | + DefaultAuthorizationContext context = DefaultAuthorizationContext.of(subject, resource, action, sourceIp); |
| 384 | + context.setRpcCode("10"); |
| 385 | + this.evaluator.evaluate(Collections.singletonList(context)); |
| 386 | + }); |
| 387 | + } |
| 388 | + |
348 | 389 | private void clearAllUsers() { |
349 | 390 | List<User> users = this.authenticationMetadataManager.listUser(null).join(); |
350 | 391 | if (CollectionUtils.isEmpty(users)) { |
|
0 commit comments