diff --git a/lib/classes/auth_plugins/StudipAuthAbstract.php b/lib/classes/auth_plugins/StudipAuthAbstract.php
index c394952d6903d308c778565a28cdd585ecde8e50..65da54bc7be43f39c7672ec9bc9a2673942ed6c0 100644
--- a/lib/classes/auth_plugins/StudipAuthAbstract.php
+++ b/lib/classes/auth_plugins/StudipAuthAbstract.php
@@ -125,7 +125,7 @@ class StudipAuthAbstract
                 self::$plugin_instances[strtoupper($plugin)] = new $plugin_class($config);
             }
         }
-        return ($plugin_name) ? self::$plugin_instances[strtoupper($plugin_name)]??null : self::$plugin_instances;
+        return $plugin_name ? self::$plugin_instances[strtoupper($plugin_name)] ?? null : self::$plugin_instances;
     }
 
     /**
diff --git a/lib/classes/auth_plugins/StudipAuthCAS.php b/lib/classes/auth_plugins/StudipAuthCAS.php
index 129cbd5aa81f730d4b7e274961c442e8d7d5396c..69a4e344b9c830b6ca4890f6c8a9ed69e1fd81ac 100644
--- a/lib/classes/auth_plugins/StudipAuthCAS.php
+++ b/lib/classes/auth_plugins/StudipAuthCAS.php
@@ -18,41 +18,53 @@ class StudipAuthCAS extends StudipAuthSSO
 
     public $userdata;
 
+    private $initialized = false;
+
     /**
      * Constructor
      */
     public function __construct($config = [])
     {
         parent::__construct($config);
+
         if (!isset($this->plugin_fullname)) {
             $this->plugin_fullname = _('CAS');
         }
         if (!isset($this->login_description)) {
             $this->login_description = _('für Single Sign On mit CAS');
         }
-        if (Request::get('sso') === $this->plugin_name) {
-            if ($this->proxy) {
-                URLHelper::setBaseUrl($GLOBALS['ABSOLUTE_URI_STUDIP']);
-                phpCAS::proxy(CAS_VERSION_2_0, $this->host, $this->port, $this->uri, false);
-                phpCAS::setPGTStorage(new CAS_PGTStorage_Cache(phpCAS::getCasClient()));
-                phpCAS::setFixedCallbackURL(URLHelper::getURL('dispatch.php/cas/proxy'));
-            } else {
-                phpCAS::client(CAS_VERSION_2_0, $this->host, $this->port, $this->uri, false);
-            }
-
-            if (isset($this->cacert)) {
-                phpCAS::setCasServerCACert($this->cacert);
-            } else {
-                phpCAS::setNoCasServerValidation();
-            }
+    }
+
+    private function initializeClient(): void
+    {
+        if ($this->initialized) {
+            return;
+        }
+
+        if ($this->proxy) {
+            URLHelper::setBaseUrl($GLOBALS['ABSOLUTE_URI_STUDIP']);
+            phpCAS::proxy(CAS_VERSION_2_0, $this->host, $this->port, $this->uri, false);
+            phpCAS::setPGTStorage(new CAS_PGTStorage_Cache(phpCAS::getCasClient()));
+            phpCAS::setFixedCallbackURL(URLHelper::getURL('dispatch.php/cas/proxy'));
+        } else {
+            phpCAS::client(CAS_VERSION_2_0, $this->host, $this->port, $this->uri, false);
+        }
+
+        if (isset($this->cacert)) {
+            phpCAS::setCasServerCACert($this->cacert);
+        } else {
+            phpCAS::setNoCasServerValidation();
         }
+
+        $this->initialized = true;
     }
 
     /**
      * Return the current username.
      */
-    function getUser()
+    public function getUser()
     {
+        $this->initializeClient();
         return phpCAS::getUser();
     }
 
@@ -60,19 +72,23 @@ class StudipAuthCAS extends StudipAuthSSO
      * Validate the username passed to the auth plugin.
      * Note: This triggers authentication if needed.
      */
-    function verifyUsername($username)
+    public function verifyUsername($username)
     {
+        $this->initializeClient();
         phpCAS::forceAuthentication();
         return $this->getUser();
     }
 
-    function getUserData($key)
+    public function getUserData($key)
     {
         $userdataclassname = $this->user_data_mapping_class;
         if (!class_exists($userdataclassname)) {
             Log::error($this->plugin_name . ': no userdataclassname specified or found.');
             return;
         }
+
+        $this->initializeClient();
+
         // get the userdata
         if (empty($this->userdata)) {
             $this->userdata = new $userdataclassname();
@@ -82,6 +98,8 @@ class StudipAuthCAS extends StudipAuthSSO
 
     public function logout(): void
     {
+        $this->initializeClient();
+
         // do a global cas logout
         phpCAS::client(CAS_VERSION_2_0, $this->host, $this->port, $this->uri, false);
         phpCAS::logout();
diff --git a/lib/classes/auth_plugins/StudipAuthOAuth2.php b/lib/classes/auth_plugins/StudipAuthOAuth2.php
index 98ee90bed6d9d9b15c283447149c7ad8b84dd021..2ed2a0f58bad48db8f315d9fad0d2fa574401c61 100644
--- a/lib/classes/auth_plugins/StudipAuthOAuth2.php
+++ b/lib/classes/auth_plugins/StudipAuthOAuth2.php
@@ -20,7 +20,7 @@ final class StudipAuthOAuth2 extends StudipAuthSSO
 
     protected ?string $logout_url = null;
 
-    private GenericProvider $oauth2_provider;
+    private ?GenericProvider $client = null;
 
     private ?array $user_data = null;
 
@@ -31,8 +31,11 @@ final class StudipAuthOAuth2 extends StudipAuthSSO
         if (!isset($this->plugin_fullname)) {
             $this->plugin_fullname = _('OAuth2');
         }
+    }
 
-        if (Request::option('sso') === $this->plugin_name) {
+    private function getProvider(): GenericProvider
+    {
+        if ($this->client === null) {
             $options = [
                 'clientId' => $this->client_id,
                 'clientSecret' => $this->client_secret,
@@ -47,8 +50,10 @@ final class StudipAuthOAuth2 extends StudipAuthSSO
                 $options['verify'] = false;
             }
 
-            $this->oauth2_provider = new GenericProvider($options);
+            $this->client = new GenericProvider($options);
         }
+
+        return $this->client;
     }
 
     public function getUser()
@@ -63,10 +68,10 @@ final class StudipAuthOAuth2 extends StudipAuthSSO
         }
 
         if (!Request::get('code')) {
-            $authorizationUrl = $this->oauth2_provider->getAuthorizationUrl(['scope' => 'profile email']);
+            $authorizationUrl = $this->getProvider()->getAuthorizationUrl(['scope' => 'profile email']);
 
             $_SESSION[self::class] = [
-                'state' => $this->oauth2_provider->getState(),
+                'state' => $this->getProvider()->getState(),
                 'redirect' => Request::url(),
             ];
 
@@ -82,11 +87,11 @@ final class StudipAuthOAuth2 extends StudipAuthSSO
                 unset($_SESSION[self::class]);
             }
         } else {
-            $accessToken = $this->oauth2_provider->getAccessToken('authorization_code', [
+            $accessToken = $this->getProvider()->getAccessToken('authorization_code', [
                 'code' => Request::get('code'),
             ]);
 
-            $resourceOwner = $this->oauth2_provider->getResourceOwner($accessToken);
+            $resourceOwner = $this->getProvider()->getResourceOwner($accessToken);
 
             $this->user_data = $resourceOwner->toArray();
 
diff --git a/lib/classes/auth_plugins/StudipAuthOIDC.php b/lib/classes/auth_plugins/StudipAuthOIDC.php
index 1c77cb4791fabec28359b7548c26d0a540e44b98..0487c6cc97be9da747b2d90624b3c15c397a7bcd 100644
--- a/lib/classes/auth_plugins/StudipAuthOIDC.php
+++ b/lib/classes/auth_plugins/StudipAuthOIDC.php
@@ -17,7 +17,7 @@ class StudipAuthOIDC extends StudipAuthSSO
     /**
      * @var OpenIDConnectClient
      */
-    private $oidc;
+    private $oidc = null;
 
     /**
      * @var string
@@ -32,14 +32,9 @@ class StudipAuthOIDC extends StudipAuthSSO
      */
     public $client_secret;
 
-
-    /**
-     * @param array $config
-     */
-    public function __construct($config = [])
+    private function getClient(): OpenIDConnectClient
     {
-        parent::__construct($config);
-        if (Request::get('sso') === $this->plugin_name) {
+        if ($this->oidc === null) {
             $this->oidc = new OpenIDConnectClient($this->provider_url, $this->client_id, $this->client_secret);
             if (isset($this->ssl_options)) {
                 foreach ($this->ssl_options as $option_key => $option_value) {
@@ -47,14 +42,18 @@ class StudipAuthOIDC extends StudipAuthSSO
                         $this->oidc->{'set' . $option_key}($option_value);
                     }
                 }
-                if (Config::get()->HTTP_PROXY) {
-                    $this->oidc->setHttpProxy(Config::get()->HTTP_PROXY);
-                }
-                $return_url = URLHelper::getScriptURL($GLOBALS['ABSOLUTE_URI_STUDIP'] . 'index.php', ['sso' => $this->plugin_name, 'again' => 'yes']);
-                $this->oidc->setRedirectURL($return_url);
-                $this->oidc->addScope(['openid', 'email', 'profile']);
             }
+
+            if (Config::get()->HTTP_PROXY) {
+                $this->oidc->setHttpProxy(Config::get()->HTTP_PROXY);
+            }
+
+            $return_url = URLHelper::getScriptURL($GLOBALS['ABSOLUTE_URI_STUDIP'] . 'index.php', ['sso' => $this->plugin_name, 'again' => 'yes']);
+            $this->oidc->setRedirectURL($return_url);
+            $this->oidc->addScope(['openid', 'email', 'profile']);
         }
+
+        return $this->oidc;
     }
 
     /**
@@ -68,8 +67,8 @@ class StudipAuthOIDC extends StudipAuthSSO
      */
     public function verifyUsername($username)
     {
-        $this->oidc->authenticate();
-        $this->userdata = (array)$this->oidc->requestUserInfo();
+        $this->getClient()->authenticate();
+        $this->userdata = (array) $this->getClient()->requestUserInfo();
         if (isset($this->userdata['sub'])) {
             return $this->userdata['username'] = $this->userdata['sub'] . '@' . $this->domain;
         } else {
@@ -82,7 +81,7 @@ class StudipAuthOIDC extends StudipAuthSSO
      */
     public function getUser()
     {
-        return $this->userdata['username'];
+        return $this->getUserData('username');
     }
 
     /**
@@ -100,8 +99,7 @@ class StudipAuthOIDC extends StudipAuthSSO
      *
      * @see https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims
      *
-     * @param string  key
-     *
+     * @param string  $key
      * @return  string  parameter value (null if not set)
      */
     public function getUserData($key)
@@ -111,6 +109,9 @@ class StudipAuthOIDC extends StudipAuthSSO
 
     public function logout(): void
     {
-        $this->oidc->signOut($this->oidc->getIdToken(), null);
+        $this->getClient()->signOut(
+            $this->getClient()->getIdToken(),
+            null
+        );
     }
 }