diff --git a/openid_connect.install b/openid_connect.install
index 826961e..66ccb02 100644
--- a/openid_connect.install
+++ b/openid_connect.install
@@ -98,8 +98,8 @@ function openid_connect_update_8102() {
  * Update the active config with the registration override value.
  */
 function openid_connect_update_8103() {
- $config_factory = \Drupal::configFactory();
- $config = $config_factory->getEditable('openid_connect.settings');
- $config->set('override_registration_settings', FALSE);
- $config->save(TRUE);
- }
+  $config_factory = \Drupal::configFactory();
+  $config = $config_factory->getEditable('openid_connect.settings');
+  $config->set('override_registration_settings', FALSE);
+  $config->save(TRUE);
+}
diff --git a/openid_connect.module b/openid_connect.module
index 417c112..54e8e72 100644
--- a/openid_connect.module
+++ b/openid_connect.module
@@ -467,32 +467,33 @@ function openid_connect_complete_authorization($client, array $tokens, &$destina
       return FALSE;
     }
 
-    // Check if we are allowing to create users overriding
-    // the drupal user register settings:
-    $register_override = \Drupal::config('openid_connect.settings')->get('override_registration_settings');
-
-    if ($register_override) {
-      $account = openid_connect_create_user($sub, $userinfo, $client->getPluginId(), 1);
+    // Check Drupal user register settings before saving.
+    $register = \Drupal::config('user.settings')
+      ->get('register');
+    // Respect possible override from OpenID-Connect settings.
+    $register_override = \Drupal::config('openid_connect.settings')
+      ->get('override_registration_settings');
+    if ($register === USER_REGISTER_ADMINISTRATORS_ONLY && $register_override) {
+      $register = USER_REGISTER_VISITORS;
     }
-    else {
-      // Check Drupal user register settings before saving.
-      $register = \Drupal::config('user.settings')->get('register');
-      switch ($register) {
-        case USER_REGISTER_ADMINISTRATORS_ONLY:
-          drupal_set_message(t('Only administrators can register new accounts.'), 'error');
-          return FALSE;
-
-        case USER_REGISTER_VISITORS:
-          // Create a new account.
-          $account = openid_connect_create_user($sub, $userinfo, $client->getPluginId(), 1);
-          break;
-
-        case USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL:
-          // Create a new account.
-          $account = openid_connect_create_user($sub, $userinfo, $client->getPluginId(), 0);
-          drupal_set_message(t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.'));
-          break;
-      }
+
+    switch ($register) {
+      case USER_REGISTER_ADMINISTRATORS_ONLY:
+        // Deny user registration.
+        drupal_set_message(t('Only administrators can register new accounts.'), 'error');
+        return FALSE;
+
+      case USER_REGISTER_VISITORS:
+        // Create a new account if register settings is set to visitors or
+        // override is active.
+        $account = openid_connect_create_user($sub, $userinfo, $client->getPluginId(), 1);
+        break;
+
+      case USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL:
+        // Create a new account and inform the user of the pending approval.
+        $account = openid_connect_create_user($sub, $userinfo, $client->getPluginId(), 0);
+        drupal_set_message(t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.'));
+        break;
     }
 
     // Store the newly created account.
diff --git a/src/Form/SettingsForm.php b/src/Form/SettingsForm.php
index df11a6f..fdbc435 100644
--- a/src/Form/SettingsForm.php
+++ b/src/Form/SettingsForm.php
@@ -146,6 +146,13 @@ class SettingsForm extends ConfigFormBase implements ContainerInjectionInterface
       $form['clients'][$client_plugin['id']]['settings'] += $client->buildConfigurationForm([], $form_state);
     }
 
+    $form['override_registration_settings'] = [
+      '#type' => 'checkbox',
+      '#title' => $this->t('Override registration settings'),
+      '#description' => $this->t('If enabled, a user will be registered even if registration is set to "Administrators only".'),
+      '#default_value' => $settings->get('override_registration_settings'),
+    ];
+
     $form['always_save_userinfo'] = [
       '#type' => 'checkbox',
       '#title' => $this->t('Save user claims on every login'),
diff --git a/src/Tests/SettingsFormTest.php b/src/Tests/SettingsFormTest.php
index 1954cd1..04cc4f0 100644
--- a/src/Tests/SettingsFormTest.php
+++ b/src/Tests/SettingsFormTest.php
@@ -55,10 +55,12 @@ class SettingsFormTest extends WebTestBase {
     $config_factory = $this->container->get('config.factory');
     /* @var \Drupal\Core\Config\Config $config */
     $config = $config_factory->get('openid_connect.settings');
+
     $user_info = $config->get('always_save_userinfo');
     $this->assertFalse($user_info);
+
     $override_registration_settings = $config->get('override_registration_settings');
-    $this->assertTrue($override_registration_settings)
+    $this->assertTrue($override_registration_settings);
   }
 
 }
