From 820bdbaef7c69ad478b780ae4241e19563d771ca Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 15 Feb 2022 06:46:08 +0100 Subject: [PATCH] Introduce forced password for tests --- .../org/argeo/osgi/useradmin/AbstractUserDirectory.java | 8 ++++++++ org.argeo.util/src/org/argeo/osgi/useradmin/LdifUser.java | 4 ++++ .../src/org/argeo/osgi/useradmin/UserAdminConf.java | 5 ++++- 3 files changed, 16 insertions(+), 1 deletion(-) 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"; -- 2.30.2