I fixed it in my private branch to not require plugins naming conventions in getAllowedBackends() and getBkId() to be a precise match... allowing the old and new format/s to match as "close enough"... it a bit verbose with a few extra intermediate variables than it had before, so that debugging is easier. :-) Feel free to use this, or take inspiration from it.... or to improve the plugin migration code to upgrade plugin names . applying this diff "worked for me".
diff --git a/include/class.auth.php b/include/class.auth.php
index 6039b24..1ff487a 100644
--- a/include/class.auth.php
+++ b/include/class.auth.php
@@ -327,10 +327,19 @@ abstract class AuthenticationBackend extends ServiceRegistry {
return false;
$backends = static::getAllowedBackends($username);
- foreach (static::allRegistered() as $bk) {
+ $x = static::allRegistered();
+ foreach ($x as $bk) {
+
+ $y = $bk->supportsInteractiveAuthentication();
+ $ii = $bk->getBkId(); //might not be formatted the same as the $backends array, with or without the .pXXiYY extension.
+ $z = in_array($ii, $backends); //check if the backend is in the list of allowed backends for this user - exact check first.
+ foreach ($backends as $idx => $val ) { // fuzzy check by prefix, allowing either of the strings to be a prefix of the other.
+ if ( stripos($val, $ii) === 0 ) { $z = true; break;}
+ if ( stripos($ii, $val) === 0 ) { $z = true; break;}
+ }
if ($backends //Allowed backends
- && $bk->supportsInteractiveAuthentication()
- && !in_array($bk->getBkId(), $backends))
+ && $y
+ && !$z)
// User cannot be authenticated against this backend
continue;