diff --git a/module/VuFind/src/VuFind/Auth/ChoiceAuth.php b/module/VuFind/src/VuFind/Auth/ChoiceAuth.php
index 9882c9961b351b88679e0106d028f0bb6eb2c819..c184bcda38063c856d1861c36555130523ceacba 100644
--- a/module/VuFind/src/VuFind/Auth/ChoiceAuth.php
+++ b/module/VuFind/src/VuFind/Auth/ChoiceAuth.php
@@ -202,6 +202,17 @@ class ChoiceAuth extends AbstractBase
         return $this->strategies;
     }
 
+    /**
+     * If an authentication strategy has been selected, return the active option.
+     * If not, return false.
+     *
+     * @return bool|string
+     */
+    public function getSelectedAuthOption()
+    {
+        return $this->strategy;
+    }
+
     /**
      * Perform cleanup at logout time.
      *
@@ -237,6 +248,30 @@ class ChoiceAuth extends AbstractBase
         return $this->proxyAuthMethod('getSessionInitiator', func_get_args());
     }
 
+    /**
+     * Does this authentication method support password changing
+     *
+     * @return bool
+     */
+    public function supportsPasswordChange()
+    {
+        return $this->proxyAuthMethod('supportsPasswordChange', func_get_args());
+    }
+
+    /**
+     * Update a user's password from the request.
+     *
+     * @param \Zend\Http\PhpEnvironment\Request $request Request object containing
+     * new account details.
+     *
+     * @throws AuthException
+     * @return \VuFind\Db\Row\User New user row.
+     */
+    public function updatePassword($request)
+    {
+        return $this->proxyAuthMethod('updatePassword', func_get_args());
+    }
+
     /**
      * Proxy auth method; a helper function to be called like:
      *   return $this->proxyAuthMethod(METHOD, func_get_args());
diff --git a/module/VuFind/src/VuFind/Auth/Manager.php b/module/VuFind/src/VuFind/Auth/Manager.php
index 573bd6fa7558a6023be755209289f2e24237cdfe..6c328692261c4037173923410dcea6dab0344505 100644
--- a/module/VuFind/src/VuFind/Auth/Manager.php
+++ b/module/VuFind/src/VuFind/Auth/Manager.php
@@ -209,13 +209,23 @@ class Manager
     }
 
     /**
-     * Get the name of the current authentication class.
+     * In VuFind, views are tied to the name of the active authentication class.
+     * This method returns that name so that an appropriate template can be
+     * selected. It supports authentication methods that proxy other authentication
+     * methods (see ChoiceAuth for an example).
      *
      * @return string
      */
-    public function getAuthClass()
+    public function getAuthClassForTemplateRendering()
     {
-        return get_class($this->getAuth());
+        $auth = $this->getAuth();
+        if (is_callable(array($auth, 'getSelectedAuthOption'))) {
+            $selected = $auth->getSelectedAuthOption();
+            if ($selected) {
+                $auth = $this->getAuth($selected);
+            }
+        }
+        return get_class($auth);
     }
 
     /**
diff --git a/module/VuFind/src/VuFind/View/Helper/Root/Auth.php b/module/VuFind/src/VuFind/View/Helper/Root/Auth.php
index 92c96f6c57db9527ea4e93f524cb82f2fe34fe6c..588740ff58233c7d76c9cfc5ac31ce299f8ef2b3 100644
--- a/module/VuFind/src/VuFind/View/Helper/Root/Auth.php
+++ b/module/VuFind/src/VuFind/View/Helper/Root/Auth.php
@@ -73,7 +73,7 @@ class Auth extends \Zend\View\Helper\AbstractHelper
         // Get the current auth module's class name, then start a loop
         // in case we need to use a parent class' name to find the appropriate
         // template.
-        $className = $this->getManager()->getAuthClass();
+        $className = $this->getManager()->getAuthClassForTemplateRendering();
         $topClassName = $className; // for error message
         while (true) {
             // Guess the template name for the current class: