import javax.security.auth.kerberos.KerberosPrincipal;
import javax.security.auth.login.LoginContext;
import javax.security.auth.login.LoginException;
-import javax.transaction.TransactionManager;
import org.apache.commons.httpclient.auth.AuthPolicy;
import org.apache.commons.httpclient.auth.CredentialsProvider;
import org.argeo.cms.internal.http.client.HttpCredentialProvider;
import org.argeo.cms.internal.http.client.SpnegoAuthScheme;
import org.argeo.naming.DnsBrowser;
+import org.argeo.osgi.transaction.WorkControl;
import org.argeo.osgi.useradmin.AbstractUserDirectory;
import org.argeo.osgi.useradmin.AggregatingUserAdmin;
import org.argeo.osgi.useradmin.LdapUserAdmin;
// private ServiceRegistration<UserAdmin> userAdminReg;
// JTA
- private final ServiceTracker<TransactionManager, TransactionManager> tmTracker;
+ private final ServiceTracker<WorkControl, WorkControl> tmTracker;
// private final String cacheName = UserDirectory.class.getName();
// GSS API
super(systemRolesBaseDn, tokensBaseDn);
BundleContext bc = Activator.getBundleContext();
if (bc != null) {
- tmTracker = new ServiceTracker<>(bc, TransactionManager.class, null);
+ tmTracker = new ServiceTracker<>(bc, WorkControl.class, null);
tmTracker.open();
} else {
tmTracker = null;
@Override
public void updated(String pid, Dictionary<String, ?> properties) throws ConfigurationException {
String uri = (String) properties.get(UserAdminConf.uri.name());
+ Object realm = properties.get(UserAdminConf.realm.name());
URI u;
try {
if (uri == null) {
String baseDn = (String) properties.get(UserAdminConf.baseDn.name());
u = KernelUtils.getOsgiInstanceUri(KernelConstants.DIR_NODE + '/' + baseDn + ".ldif");
- } else
+ } else if (realm != null) {
+ u = null;
+ } else {
u = new URI(uri);
+ }
} catch (URISyntaxException e) {
throw new IllegalArgumentException("Badly formatted URI " + uri, e);
}
// Create
AbstractUserDirectory userDirectory;
- if (UserAdminConf.SCHEME_LDAP.equals(u.getScheme())) {
+ if (realm != null || UserAdminConf.SCHEME_LDAP.equals(u.getScheme())
+ || UserAdminConf.SCHEME_LDAPS.equals(u.getScheme())) {
userDirectory = new LdapUserAdmin(properties);
} else if (UserAdminConf.SCHEME_FILE.equals(u.getScheme())) {
userDirectory = new LdifUserAdmin(u, properties);
} else {
throw new IllegalArgumentException("Unsupported scheme " + u.getScheme());
}
- Object realm = userDirectory.getProperties().get(UserAdminConf.realm.name());
addUserDirectory(userDirectory);
// OSGi
pidToBaseDn.put(pid, baseDn);
// pidToServiceRegs.put(pid, reg);
- if (log.isDebugEnabled())
- log.debug("User directory " + userDirectory.getBaseDn() + " [" + u.getScheme() + "] enabled."
- + (realm != null ? " " + realm + " realm." : ""));
+ if (log.isDebugEnabled()) {
+ log.debug("User directory " + userDirectory.getBaseDn() + (u != null ? " [" + u.getScheme() + "]" : "")
+ + " enabled." + (realm != null ? " " + realm + " realm." : ""));
+ }
if (isSystemRolesBaseDn(baseDn)) {
// publishes only when system roles are available
protected void postAdd(AbstractUserDirectory userDirectory) {
// JTA
- TransactionManager tm = tmTracker != null ? tmTracker.getService() : null;
+ WorkControl tm = tmTracker != null ? tmTracker.getService() : null;
if (tm == null)
throw new IllegalStateException("A JTA transaction manager must be available.");
- userDirectory.setTransactionManager(tm);
+ userDirectory.setTransactionControl(tm);
// if (tmTracker.getService() instanceof BitronixTransactionManager)
// EhCacheXAResourceProducer.registerXAResource(cacheName, userDirectory.getXaResource());