Hide OIDCC4UI providers' client secrets for non-admin users
diff --git a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java
index a698785..90526eb 100644
--- a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java
+++ b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/OIDCC4UIProviderLogic.java
@@ -33,6 +33,7 @@
 import org.apache.syncope.core.persistence.api.dao.OIDCC4UIProviderDAO;
 import org.apache.syncope.core.persistence.api.entity.OIDCC4UIProvider;
 import org.apache.syncope.core.provisioning.api.data.OIDCC4UIProviderDataBinder;
+import org.apache.syncope.core.spring.security.AuthContextUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -89,7 +90,16 @@
     @PreAuthorize("isAuthenticated()")
     @Transactional(readOnly = true)
     public List<OIDCC4UIProviderTO> list() {
-        return opDAO.findAll().stream().map(binder::getOIDCProviderTO).toList();
+        boolean isAdmin = AuthContextUtils.getAuthorizations().containsKey(OIDCC4UIEntitlement.OP_READ);
+        return opDAO.findAll().stream().
+                map(op -> {
+                    OIDCC4UIProviderTO opTO = binder.getOIDCProviderTO(op);
+                    if (!isAdmin) {
+                        opTO.setClientSecret(null);
+                    }
+                    return opTO;
+                }).
+                toList();
     }
 
     @PreAuthorize("hasRole('" + OIDCC4UIEntitlement.OP_READ + "')")