You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by pr...@apache.org on 2026/08/11 10:29:30 UTC
(ranger) branch RANGER-5421_api1 created (now 412e91063)
This is an automated email from the ASF dual-hosted git repository.
pradeepagrawal8184 pushed a change to branch RANGER-5421_api1
in repository https://gitbox.apache.org/repos/asf/ranger.git
at 412e91063 RANGER-5421: Align authorization and service detail handling for repository search APIs
This branch includes the following new commits:
new 412e91063 RANGER-5421: Align authorization and service detail handling for repository search APIs
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(ranger) 01/01: RANGER-5421: Align authorization and service detail handling for repository search APIs
Posted by pr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
pradeepagrawal8184 pushed a commit to branch RANGER-5421_api1
in repository https://gitbox.apache.org/repos/asf/ranger.git
commit 412e910638a38f76e48d8a46711b5875644c90b5
Author: Pradeep Agrawal <pr...@apache.org>
AuthorDate: Tue Aug 11 15:55:11 2026 +0530
RANGER-5421: Align authorization and service detail handling for repository search APIs
---
.../java/org/apache/ranger/rest/PublicAPIs.java | 21 ++++++++++++++++++---
.../java/org/apache/ranger/rest/ServiceREST.java | 13 +++++++++++++
.../java/org/apache/ranger/rest/TestPublicAPIs.java | 16 ++++++++--------
3 files changed, 39 insertions(+), 11 deletions(-)
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java b/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java
index 5d11e97a4..7d06babe0 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/PublicAPIs.java
@@ -32,6 +32,7 @@
import org.apache.ranger.plugin.model.RangerPolicy;
import org.apache.ranger.plugin.model.RangerService;
import org.apache.ranger.plugin.util.SearchFilter;
+import org.apache.ranger.security.context.RangerAPIList;
import org.apache.ranger.service.RangerPolicyService;
import org.apache.ranger.service.XAssetService;
import org.apache.ranger.view.VXAsset;
@@ -62,6 +63,7 @@
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
+import java.util.ArrayList;
import java.util.List;
@Path("public")
@@ -175,18 +177,31 @@ public void deleteRepository(@PathParam("id") Long id, @Context HttpServletReque
@GET
@Path("/api/repository/")
@Produces("application/json")
+ @PreAuthorize("@rangerPreAuthSecurityHandler.isAPIAccessible(\"" + RangerAPIList.SEARCH_X_ASSETS + "\")")
public VXRepositoryList searchRepositories(@Context HttpServletRequest request) {
logger.debug("==> PublicAPIs.searchRepositories()");
+ VXRepositoryList ret = new VXRepositoryList();
+
SearchFilter filter = searchUtil.getSearchFilterFromLegacyRequestForRepositorySearch(request, xAssetService.sortFields);
List<RangerService> serviceList = serviceREST.getServices(filter);
- VXRepositoryList ret = null;
if (serviceList != null) {
- ret = serviceUtil.rangerServiceListToPublicObjectList(serviceList);
+ List<VXRepository> repositories = new ArrayList<>();
+ for (RangerService service : serviceList) {
+ VXRepository repository = serviceUtil.toVXRepository(service);
+
+ if (repository != null) {
+ repositories.add(repository);
+ }
+ }
+
+ ret.setVXRepositories(repositories);
+ ret.setTotalCount(repositories.size());
+ ret.setResultSize(repositories.size());
}
- logger.debug("<== PublicAPIs.searchRepositories(): count={}", (ret == null ? 0 : ret.getListSize()));
+ logger.debug("<== PublicAPIs.searchRepositories(): count={}", ret.getListSize());
return ret;
}
diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index 94efefa3d..371dfa0ee 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -992,6 +992,19 @@ public List<RangerService> getServices(SearchFilter filter) {
}
ret = svcStore.getServices(filter);
+
+ if (ret != null) {
+ UserSessionBase userSession = ContextUtil.getCurrentUserSession();
+ if (userSession != null && userSession.isSingleRoleUserSession()) {
+ List<RangerService> updateServiceList = new ArrayList<>();
+ for (RangerService rangerService : ret) {
+ if (rangerService != null) {
+ updateServiceList.add(hideCriticalServiceDetailsForRoleUser(rangerService));
+ }
+ }
+ ret = updateServiceList;
+ }
+ }
} catch (WebApplicationException excp) {
throw excp;
} catch (Throwable excp) {
diff --git a/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java b/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java
index d79e38dfb..6e0c20ba5 100644
--- a/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java
+++ b/security-admin/src/test/java/org/apache/ranger/rest/TestPublicAPIs.java
@@ -180,21 +180,21 @@ public void test4deleteRepository() {
@Test
public void test5searchRepositories() {
HttpServletRequest request = Mockito.mock(HttpServletRequest.class);
- List<RangerService> ret = new ArrayList<>();
+ List<RangerService> services = new ArrayList<>();
RangerService rangerService = rangerService();
VXRepository vXRepository = vXRepository(rangerService);
- List<VXRepository> repoList = new ArrayList<>();
- repoList.add(vXRepository);
- VXRepositoryList vXRepositoryList = new VXRepositoryList(repoList);
- SearchFilter filter = new SearchFilter();
+ services.add(rangerService);
+ SearchFilter filter = new SearchFilter();
filter.setParam(SearchFilter.POLICY_NAME, "policyName");
filter.setParam(SearchFilter.SERVICE_NAME, "serviceName");
Mockito.when(searchUtil.getSearchFilterFromLegacyRequestForRepositorySearch(request, xAssetService.sortFields)).thenReturn(filter);
- Mockito.when(serviceREST.getServices(filter)).thenReturn(ret);
- Mockito.when(serviceUtil.rangerServiceListToPublicObjectList(ret)).thenReturn(vXRepositoryList);
+ Mockito.when(serviceREST.getServices(filter)).thenReturn(services);
+ Mockito.when(serviceUtil.toVXRepository(rangerService)).thenReturn(vXRepository);
VXRepositoryList dbVXRepositoryList = publicAPIs.searchRepositories(request);
Assertions.assertNotNull(dbVXRepositoryList);
- Assertions.assertEquals(dbVXRepositoryList.getResultSize(), vXRepositoryList.getResultSize());
+ Assertions.assertEquals(1, dbVXRepositoryList.getResultSize());
+ Assertions.assertEquals(vXRepository, dbVXRepositoryList.getVXRepositories().get(0));
+ Mockito.verify(serviceUtil).toVXRepository(rangerService);
}
@Test