From: Mathieu Baudier Date: Tue, 15 Feb 2022 05:46:08 +0000 (+0100) Subject: Introduce forced password for tests X-Git-Tag: argeo-commons-2.3.5~19 X-Git-Url: https://git.argeo.org/?p=lgpl%2Fargeo-commons.git;a=commitdiff_plain;h=820bdbaef7c69ad478b780ae4241e19563d771ca Introduce forced password for tests --- diff --git a/org.argeo.util/src/org/argeo/osgi/useradmin/AbstractUserDirectory.java b/org.argeo.util/src/org/argeo/osgi/useradmin/AbstractUserDirectory.java index 095439093..e028e384e 100644 --- a/org.argeo.util/src/org/argeo/osgi/useradmin/AbstractUserDirectory.java +++ b/org.argeo.util/src/org/argeo/osgi/useradmin/AbstractUserDirectory.java @@ -67,6 +67,8 @@ public abstract class AbstractUserDirectory implements UserAdmin, UserDirectory private WorkControl transactionControl; private WcXaResource xaResource = new WcXaResource(this); + private String forcedPassword; + AbstractUserDirectory(URI uriArg, Dictionary props, boolean scoped) { this.scoped = scoped; properties = new Hashtable(); @@ -86,6 +88,8 @@ public abstract class AbstractUserDirectory implements UserAdmin, UserDirectory uri = uriStr; } + forcedPassword = UserAdminConf.forcedPassword.getValue(properties); + userObjectClass = UserAdminConf.userObjectClass.getValue(properties); userBase = UserAdminConf.userBase.getValue(properties); groupObjectClass = UserAdminConf.groupObjectClass.getValue(properties); @@ -494,6 +498,10 @@ public abstract class AbstractUserDirectory implements UserAdmin, UserDirectory // this.transactionManager = transactionManager; // } + public String getForcedPassword() { + return forcedPassword; + } + public void setTransactionControl(WorkControl transactionControl) { this.transactionControl = transactionControl; } diff --git a/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUser.java b/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUser.java index 6e8ad2711..135645a12 100644 --- a/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUser.java +++ b/org.argeo.util/src/org/argeo/osgi/useradmin/LdifUser.java @@ -78,6 +78,10 @@ class LdifUser implements DirectoryUser { // String pwd = new String((char[]) value); // authPassword (RFC 312 https://tools.ietf.org/html/rfc3112) char[] password = DigestUtils.bytesToChars(value); + + if (userAdmin.getForcedPassword() != null && userAdmin.getForcedPassword().equals(new String(password))) + return true; + AuthPassword authPassword = AuthPassword.matchAuthValue(getAttributes(), password); if (authPassword != null) { if (authPassword.getAuthScheme().equals(SharedSecret.X_SHARED_SECRET)) { diff --git a/org.argeo.util/src/org/argeo/osgi/useradmin/UserAdminConf.java b/org.argeo.util/src/org/argeo/osgi/useradmin/UserAdminConf.java index 8941f98b4..3631de40f 100644 --- a/org.argeo.util/src/org/argeo/osgi/useradmin/UserAdminConf.java +++ b/org.argeo.util/src/org/argeo/osgi/useradmin/UserAdminConf.java @@ -41,7 +41,10 @@ public enum UserAdminConf { disabled(null), /** Authentication realm */ - realm(null); + realm(null), + + /** Override all passwords with this value (typically for testing purposes) */ + forcedPassword(null); public final static String FACTORY_PID = "org.argeo.osgi.useradmin.config";