Quando un singolo utente (non ancora registrato in CRX) tenta di effettuare il login, CRX si autentica contro LDAP e se l'autenticazione ha successo, l'utente viene sincronizzato con CRX. Quindi, come forzare la sincronizzazione degli utenti LDAP con CRX in modo che i diritti possano essere assegnati prima che l'utente provi ad effettuare il login?
Dall'aggiornamento del service pack CQ 5.5 [1] in poi il CRX che fornisce la funzionalità ldap è un servizio OSGi. L'LDAP è registrato nel registro di servizio OSGi come servizio MBean. Questa MBean è disponibile nella console JMX che espone gli attributi e le operazioni di ldap. Le operazioni che possono essere eseguite sono elencate in [0]. Alcuni dei modi per ottenere la sincronizzazione dell'utente sono
Sincronizzazione manuale degli utenti che utilizzano la console felix
Utilizzo di CURL
Creare un client JMX che utilizza LDAP MBean
Di seguito è riportato un esempio di codice client jmx che stampa l'elenco degli utenti isolati
import javax.management.DynamicMBean;
import java.util.Hashtable;
import javax.management.MBeanServerConnection;
import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.management.remote.JMXConnectorFactory;
import javax.management.remote.JMXServiceURL;
public class LDAPSampleClient {
public static void main(String[] args) throws Exception{
String userid = "admin";
String password = "admin";
String serverUrl = "service:jmx:rmi:///jndi/rmi://localhost:9000/jmxrmi";
String OBJECT_NAME = "com.adobe.granite.ldap:host=localhost,port=389,type=Tools";
String[] buffer = new String[] { userid, password };
Hashtable<String, String[]> attributes = new Hashtable<String, String[]>();
attributes.put("jmx.remote.credentials", (String[]) buffer);
MBeanServerConnection server = (MBeanServerConnection) JMXConnectorFactory.connect(new JMXServiceURL(serverUrl), attributes).getMBeanServerConnection();
ObjectName name = new ObjectName(OBJECT_NAME);
LDAPUserMBean ldap = (LDAPUserMBean) MBeanServerInvocationHandler.newProxyInstance(server, name, LDAPUserMBean.class,false);
for(String user : ldap.listOrphanedUsers()) {
System.out.println(user);
}
}
public static interface LDAPUserMBean extends DynamicMBean {
public String[] listOrphanedUsers();
public String[] syncUsers(String[] users);
public void syncAllUsers();
public void syncUser(String user);
public void syncOrphanedUsers();
public void purgeOrphanedUsers();
}
}
[0]
[1] http://dev.day.com/packageshare/packages/public/day/cq550/update/cq-update-pkg.html
Nota:- Se hai eliminato LDAP config OPPURE LDAP non è configurato, allora Mbean non sarà visibile nella console JMX.
CRX 2.3
Accedi al tuo account