diff --git a/logo.png b/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..31041bcd3b39a81c9a194d2d81c4ecf6c2136c23
Binary files /dev/null and b/logo.png differ
diff --git a/rest_api_authentication.info.yml b/rest_api_authentication.info.yml
index a55f840837b3f3734f018f2ae76c7c63103976d6..7d1efee5cc2a7250abef89d59216d26df5408caa 100644
--- a/rest_api_authentication.info.yml
+++ b/rest_api_authentication.info.yml
@@ -1,5 +1,5 @@
 name: 'REST & JSON API Authentication'
 type: module
-core_version_requirement: ^9.3 || ^10
+core_version_requirement: ^9.3 || ^10 || ^11
 description: 'Drupal API Authentication module secures unauthorized access to your Drupal site APIs using different API authentication methods.'
 configure: rest_api_authentication.auth_settings
diff --git a/src/AdvancedSettingsForm.php b/src/AdvancedSettingsForm.php
index 3c5211a238119b0d69396dc96561040827bc2f9c..c8c2522c9f2fbf529d6ac3a227b95651e9493ef9 100644
--- a/src/AdvancedSettingsForm.php
+++ b/src/AdvancedSettingsForm.php
@@ -21,7 +21,7 @@ class AdvancedSettingsForm {
    *   The modified form array with the advanced settings elements added.
    */
   public static function insertForm(array &$form, FormStateInterface $form_state) {
-    global $base_url;
+    $base_url = \Drupal::request()->getSchemeAndHttpHost().\Drupal::request()->getBasePath();
     $disabled = TRUE;
     $form['advancedsettings'] = [
       '#type' => 'details',
diff --git a/src/ApiAuthenticationApiToken.php b/src/ApiAuthenticationApiToken.php
index d37f427c743a1094397f053bdbcdbb27422ecc9c..4243c92106f490fc5ec6d963403882aa0363f7aa 100644
--- a/src/ApiAuthenticationApiToken.php
+++ b/src/ApiAuthenticationApiToken.php
@@ -59,9 +59,8 @@ class ApiAuthenticationApiToken {
           $user = user_load_by_name($name);
         }
         $api_key = $creds[1];
-
         if (empty($user)) {
-          $api_error = [
+          return [
             'status' => 'error',
             'http_code' => '404',
             "error" => "USER_DOES_NOT_EXIST",
diff --git a/src/Form/MiniOrangeAPIAuth.php b/src/Form/MiniOrangeAPIAuth.php
index fb0adc98844c941a7412651bd9c2b47362b7b461..6007d41102b4004e1e66041973cdf24b1728e6a3 100644
--- a/src/Form/MiniOrangeAPIAuth.php
+++ b/src/Form/MiniOrangeAPIAuth.php
@@ -10,6 +10,7 @@ use Drupal\Core\Messenger\MessengerInterface;
 use Drupal\rest_api_authentication\AdvancedSettingsForm;
 use Drupal\rest_api_authentication\CustomerSetupForm;
 use Drupal\rest_api_authentication\MiniorangeRestAPICustomer;
+use Drupal\rest_api_authentication\MoHeadlessIntegration;
 use Drupal\rest_api_authentication\RequestForDemoForm;
 use Drupal\rest_api_authentication\SetupAuthenticationForm;
 use Drupal\rest_api_authentication\UpgradePlansForm;
@@ -116,14 +117,15 @@ class MiniOrangeAPIAuth extends FormBase {
     // Builds and inserts the Advanced Settings form.
     AdvancedSettingsForm::insertForm($form, $form_state);
 
+    // Builds and inserts the headless SSO form.
+    MoHeadlessIntegration::insertForm($form, $form_state);
+
     // Builds and inserts the Request For Demo form.
     RequestForDemoForm::insertForm($form, $form_state);
 
     // Builds and inserts the Upgrade Plans form.
     UpgradePlansForm::insertForm($form, $form_state);
 
-    // Builds and inserts the Register/Login form.
-    CustomerSetupForm::insertForm($form, $form_state);
     $form['rest_api_authentication_background_end'] = [
       '#markup' => '</div>',
     ];
@@ -142,7 +144,7 @@ class MiniOrangeAPIAuth extends FormBase {
    *   return nothing.
    */
   public function restApiAuthenticationSaveBasicConfig(array &$form, FormStateInterface $form_state): void {
-    global $base_url;
+    $base_url = \Drupal::request()->getSchemeAndHttpHost().\Drupal::request()->getBasePath();
     $form_input = $form_state->getValues();
     $enable_authentication = $form_input['enable_authentication'];
 
@@ -164,7 +166,7 @@ class MiniOrangeAPIAuth extends FormBase {
    *   return nothing.
    */
   public function restApiAuthenticationGenerateApiToken(array &$form, FormStateInterface $form_state) {
-    global $base_url;
+    $base_url = \Drupal::request()->getSchemeAndHttpHost().\Drupal::request()->getBasePath();
     $api_key = Utilities::generateRandom(64);
     $this->configFactory->getEditable('rest_api_authentication.settings')
       ->set('api_token', $api_key)
@@ -178,7 +180,7 @@ class MiniOrangeAPIAuth extends FormBase {
    * {@inheritDoc}
    */
   public function submitForm(array &$form, FormStateInterface $form_state) {
-    global $base_url;
+    $base_url = \Drupal::request()->getSchemeAndHttpHost().\Drupal::request()->getBasePath();
     $list_of_apis = $form['advancedsettings']['support_container_outline']['list_apis']['api_textarea']['#value'];
     $api_access = $form['advancedsettings']['support_container_outline']['list_apis']['settings']['#value'];
     $this->configFactory->getEditable('rest_api_authentication.settings')
@@ -193,7 +195,7 @@ class MiniOrangeAPIAuth extends FormBase {
    * Save the basic authentication method.
    */
   public function restApiAuthenticationSaveBasicAuthConf(array &$form, FormStateInterface $form_state) {
-    global $base_url;
+    $base_url = \Drupal::request()->getSchemeAndHttpHost().\Drupal::request()->getBasePath();
     $this->configFactory->getEditable('rest_api_authentication.settings')->set('authentication_method', 0)->save();
     $this->messenger->addMessage($this->t('Configurations saved successfully.'));
     $response = new RedirectResponse($base_url . "/admin/config/people/rest_api_authentication/auth_settings?tab=edit-api-auth");
@@ -204,7 +206,7 @@ class MiniOrangeAPIAuth extends FormBase {
    * Send a request for Demo.
    */
   public function savedDemoRequest(array &$form, FormStateInterface $form_state) {
-    global $base_url;
+    $base_url = \Drupal::request()->getSchemeAndHttpHost().\Drupal::request()->getBasePath();
     $email = trim($form['demo']['container_outline']['rest_api_authentication_email_address']['#value']);
     $phone = $form['demo']['container_outline']['rest_api_authentication_phone_number']['#value'];
     $query = trim($form['demo']['container_outline']['rest_api_authentication_demo_query']['#value']);
@@ -212,61 +214,4 @@ class MiniOrangeAPIAuth extends FormBase {
     $response = new RedirectResponse($base_url . "/admin/config/people/rest_api_authentication/auth_settings?tab=edit-demo");
     $response->send();
   }
-
-  /**
-   * Activating the module.
-   */
-  public function activateModuleRequest(array &$form, FormStateInterface $form_state) {
-    global $base_url;
-    $username = $form['customersetup']['customer_setup_container_outline']['rest_api_authentication_user_email']['#value'];
-    $password = $form['customersetup']['customer_setup_container_outline']['rest_api_authentication_user_password']['#value'];
-    if (empty($username)||empty($password)) {
-      $this->messenger->addMessage($this->t('The <b><u>Email Address</u></b> and the <b><u>Password</u></b> fields are mandatory.'), 'error');
-      return;
-    }
-    if (!$this->emailValidator->isValid($username)) {
-      $this->messenger->addMessage($this->t('The email address <i> %username </i> does not seems to be valid.', ['%username' => $username]), 'error');
-      return;
-    }
-    $customer_config = new MiniorangeRestAPICustomer($username, $password);
-    $check_customer_response = json_decode($customer_config->checkCustomer());
-
-    if (isset($check_customer_response->status) && $check_customer_response->status == 'CUSTOMER_NOT_FOUND') {
-      $this->messenger->addMessage($this->t('Invalid credentials'), 'error');
-      $response = new RedirectResponse($base_url . "/admin/config/people/rest_api_authentication/auth_settings?tab=edit-customersetup");
-      $response->send();
-      return;
-    }
-    elseif (isset($check_customer_response->status) && $check_customer_response->status == 'CURL_ERROR') {
-      $this->messenger->addMessage($this->t('cURL is not enabled. Please enable cURL'), 'error');
-    }
-    else {
-
-      $customer_keys_response = json_decode($customer_config->getCustomerKeys());
-      // $customer_keys_response = json_decode($customer_config->getCustomerKeys()->getBody()->getContents());
-      if (json_last_error() == JSON_ERROR_NONE) {
-        $this->configFactory->getEditable('rest_api_authentication.settings')
-          ->set('rest_api_authentication_customer_id', $customer_keys_response->id)
-          ->set('rest_api_authentication_customer_admin_token', $customer_keys_response->token)
-          ->set('rest_api_authentication_customer_admin_email', $username)
-          ->set('rest_api_authentication_customer_api_key', $customer_keys_response->apiKey)
-          ->set('rest_api_authentication_customer_password', $password)->save();
-        $current_status = 'PLUGIN_CONFIGURATION';
-        $this->configFactory->getEditable('rest_api_authentication.settings')->set('rest_api_authentication_status', $current_status)->save();
-        $this->messenger->addMessage($this->t('Successfully retrieved your account.'));
-        $response = new RedirectResponse($base_url . "/admin/config/people/rest_api_authentication/auth_settings?tab=edit-customersetup");
-        $response->send();
-        return;
-      }
-      else {
-        $this->messenger->addMessage($this->t('Invalid credentials'), 'error');
-        $response = new RedirectResponse($base_url . "/admin/config/people/rest_api_authentication/auth_settings?tab=edit-customersetup");
-        $response->send();
-        return;
-      }
-    }
-    $response = new RedirectResponse($base_url . "/admin/config/people/rest_api_authentication/auth_settings?tab=edit-customersetup");
-    $response->send();
-  }
-
 }
diff --git a/src/Form/MiniornageAPIAuthnRequestSupport.php b/src/Form/MiniornageAPIAuthnRequestSupport.php
index 98d27663bcabc403aaf4fd8e94421bd9c5d8cfd2..b9e568dccb661687d5d77220b8264bea634e8ee8 100644
--- a/src/Form/MiniornageAPIAuthnRequestSupport.php
+++ b/src/Form/MiniornageAPIAuthnRequestSupport.php
@@ -113,7 +113,7 @@ class MiniornageAPIAuthnRequestSupport extends FormBase {
       $email = $form_values['rest_api_authentication_support_email_address'];
       $phone = $form_values['rest_api_authentication_support_phone_number'];
       $query = $form_values['rest_api_authentication_support_query'];
-      $query_type = 'Support';
+      $query_type = 'demo';
 
       $support = new MiniorangeApiAuthSupport($email, $phone, $query, $query_type);
       $support_response = $support->sendSupportQuery();
diff --git a/src/Form/MiniornageAPIAuthnRequestTrial.php b/src/Form/MiniornageAPIAuthnRequestTrial.php
index cb03896950dcdfaf1c2fba82f8b7fe8527c8927a..fe54ff801e0d60f17384b225fd288c4de8847e53 100644
--- a/src/Form/MiniornageAPIAuthnRequestTrial.php
+++ b/src/Form/MiniornageAPIAuthnRequestTrial.php
@@ -8,7 +8,10 @@ use Drupal\Core\Ajax\ReplaceCommand;
 use Drupal\Core\Form\FormBase;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\Core\Messenger\MessengerInterface;
+use Drupal\Core\Routing\TrustedRedirectResponse;
+use Drupal\Core\Url;
 use Drupal\rest_api_authentication\MiniorangeApiAuthSupport;
+use Drupal\user\Entity\User;
 use Symfony\Component\DependencyInjection\ContainerInterface;
 
 /**
@@ -57,39 +60,96 @@ class MiniornageAPIAuthnRequestTrial extends FormBase {
       '#weight' => -10,
     ];
 
+    $form['radio_option'] = [
+      '#type' => 'radios',
+      '#title' => $this->t('Which type of trial would you prefer?'),
+      '#options' => [
+        'option1' => $this->t('Sandbox'),
+        'option2' => $this->t('On-Premise'),
+      ],
+      '#default_value' => ($form_state->getValue('radio_option')) ? $form_state->getValue('radio_option') : 'option1',
+      '#attributes' => array('class' => array('container-inline'),),
+      '#ajax' => [
+        'callback' => '::updateFormElements',
+        'wrapper' => 'additional-fields-wrapper',
+      ],
+    ];
+
+    $form['additional_fields_wrapper'] = [
+      '#type' => 'container',
+      '#attributes' => ['id' => 'additional-fields-wrapper'],
+    ];
+
     $form['rest_api_authentication_trial_email_address'] = [
       '#type' => 'email',
       '#title' => $this->t('Email'),
-      '#required' => TRUE,
       '#attributes' => [
         'placeholder' => $this->t('Enter your email'),
         'style' => 'width:99%;margin-bottom:1%;',
       ],
+      '#states' => [
+        'visible' => [
+          ':input[name="radio_option"]' => ['value' => 'option2'],
+        ],
+        'required' => array(
+          ':input[name="radio_option"]' => ['value' => 'option2'],),
+      ],
+
     ];
 
     $form['rest_api_authentication_trial_description'] = [
       '#type' => 'textarea',
       '#rows' => 4,
-      '#required' => TRUE,
       '#title' => $this->t('Description'),
       '#attributes' => [
         'placeholder' => $this->t('Describe your use case here!'),
         'style' => 'width:99%;',
       ],
+      '#states' => [
+        'visible' => [
+          ':input[name="radio_option"]' => ['value' => 'option2'],
+        ],
+        'required' => array(
+          ':input[name="radio_option"]' => ['value' => 'option2'],),
+      ],
     ];
 
     $form['rest_api_authentication_trial_note'] = [
       '#markup' => $this->t('<div>If you have any questions or in case you need any sort of assistance in configuring our module according to your requirements, you can get in touch with us on <a href="mailto:drupalsupport@xecurify.com">drupalsupport@xecurify.com</a> and we will assist you further.</div>'),
+      '#states' => [
+        'visible' => [
+          ':input[name="radio_option"]' => ['value' => 'option2'],
+        ],
+      ],
+    ];
+
+    $form['submit_button_option1'] = [
+      '#type' => 'submit',
+      '#value' => $this->t('Go to Sandbox'),
+      '#attributes' => [
+        'class' => ['option1-submit','use-ajax', 'button--primary'],
+        'formtarget' => '_blank'
+      ],
+      '#prefix' => '<div class="option1-submit-wrapper">',
+      '#suffix' => '</div>',
+      '#states' => [
+        'visible' => [
+          ':input[name="radio_option"]' => ['value' => 'option1'],],
+      ],
+      '#submit' => ['::goToSandbox',],
     ];
 
-    $form['actions'] = ['#type' => 'actions'];
-    $form['actions']['send'] = [
+    $form['submit_button_other_options'] = [
       '#type' => 'submit',
       '#value' => $this->t('Submit'),
       '#attributes' => [
-        'class' => [
-          'use-ajax',
-          'button--primary',
+        'class' => ['other-options-submit', 'use-ajax', 'button--primary'],
+      ],
+      '#prefix' => '<div class="other-options-submit-wrapper">',
+      '#suffix' => '</div>',
+      '#states' => [
+        'visible' => [
+          ':input[name="radio_option"]' => ['value' => 'option2'],
         ],
       ],
       '#ajax' => [
@@ -102,6 +162,35 @@ class MiniornageAPIAuthnRequestTrial extends FormBase {
     return $form;
   }
 
+  public static function getEmail(){
+    $user  = \Drupal::currentUser()->getEmail();
+    $email = \Drupal::config('rest_api_authentication.settings')->get('rest_api_authentication_customer_admin_email');
+    $email = !empty($email) ? $email : $user;
+    $email = preg_match('/^(?!.*(?:noreply|no-reply)).*$/i', $email) ? $email : '';
+    return $email;
+  }
+  public function goToSandbox(array $form, FormStateInterface $form_state) {
+    $url = Url::fromUri('https://playground.miniorange.com/drupal.php',[
+      'query' => [
+        'email' => self::getEmail(),
+        'mo_module' => 'rest_api_authentication',
+        'drupal_version' => '10',
+      ],
+    ])->toString();
+    $response = new TrustedRedirectResponse($url);
+    $form_state->setResponse($response);
+  }
+  public function updateFormElements(array &$form, FormStateInterface $form_state) {
+    $selected_value = $form_state->getValue('radio_option');
+    if ($selected_value === 'option1') {
+      $form['actions']['send']['submit']['#value'] = t('Confirm Option 1');
+    }
+    elseif ($selected_value === 'option2') {
+      $form['actions']['send']['#value'] = t('Confirm Option 2');
+    }
+    return $form['additional_fields_wrapper'];
+  }
+
   /**
    * Process the 'modal_example_form' Form.
    *
@@ -120,12 +209,10 @@ class MiniornageAPIAuthnRequestTrial extends FormBase {
     // If there are any form errors, AJAX replace the form.
     if ($form_state->hasAnyErrors()) {
       $response->addCommand(new ReplaceCommand('#modal_example_form', $form));
-    }
-    elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
+    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
       $this->messenger->addMessage($this->t('The email address <b><em>%email</em></b> is not valid.', ['%email' => $email]), 'error');
       $response->addCommand(new ReplaceCommand('#modal_example_form', $form));
-    }
-    else {
+    } else {
       $query = $form_values['rest_api_authentication_trial_description'];
       $query_type = 'trial';
 
@@ -137,19 +224,19 @@ class MiniornageAPIAuthnRequestTrial extends FormBase {
           '#markup' => $this->t('Your request for a trial module was sent successfully. Please allow us some time and we will send you the trial module as soon as possible.'),
         ];
         $ajax_form = new OpenModalDialogCommand('Thank you!', $message, ['width' => '50%']);
-      }
-      else {
+      } else {
         $error = [
           '#type' => 'item',
           '#markup' => $this->t('Error submitting the support query. Please send us your query at
-				<a href="mailto:drupalsupport@xecurify.com">
-				drupalsupport@xecurify.com</a>.'),
+      <a href="mailto:drupalsupport@xecurify.com">
+      drupalsupport@xecurify.com</a>.'),
         ];
         $ajax_form = new OpenModalDialogCommand('Error!', $error, ['width' => '50%']);
       }
 
       $response->addCommand($ajax_form);
     }
+
     return $response;
   }
 
diff --git a/src/MiniorangeApiAuthSupport.php b/src/MiniorangeApiAuthSupport.php
index 4f574cd6981b0c8b0abfa749f4bd939f2908d45a..de5001499d4da353cc57328f95ff0729edc00da6 100644
--- a/src/MiniorangeApiAuthSupport.php
+++ b/src/MiniorangeApiAuthSupport.php
@@ -64,7 +64,7 @@ class MiniorangeApiAuthSupport {
   public function sendSupportQuery() {
     $modules_info = \Drupal::service('extension.list.module')->getExtensionInfo('rest_api_authentication');
     $modules_version = $modules_info['version'];
-    global $base_url;
+    $base_url = \Drupal::request()->getSchemeAndHttpHost().\Drupal::request()->getBasePath();
     if ($this->plan == 'demo') {
       $url = MiniorangeApiAuthConstants::BASE_URL . '/moas/api/notify/send';
 
@@ -173,7 +173,7 @@ class MiniorangeApiAuthSupport {
     catch (\Exception $exception) {
       $error = [
         '%method' => 'sendSupportQuery',
-        '%file' => 'miniorange_oauth_client_support.php',
+        '%file' => 'MiniorangeApiAuthSupport.php',
         '%error' => $exception->getMessage(),
       ];
       \Drupal::logger('rest_api_authentication')->notice('%error', $error);
@@ -182,7 +182,7 @@ class MiniorangeApiAuthSupport {
     catch (GuzzleException $e) {
       $error = [
         '%method' => 'sendSupportQuery',
-        '%file' => 'miniorange_oauth_client_support.php',
+        '%file' => 'MiniorangeApiAuthSupport.php',
         '%error' => $e->getMessage(),
       ];
       \Drupal::logger('rest_api_authentication')->notice('%error', $error);
diff --git a/src/MoHeadlessIntegration.php b/src/MoHeadlessIntegration.php
new file mode 100644
index 0000000000000000000000000000000000000000..dc07e9b4ac06350c7f6ae9a90d89c35ec1b9edda
--- /dev/null
+++ b/src/MoHeadlessIntegration.php
@@ -0,0 +1,122 @@
+<?php
+
+namespace Drupal\rest_api_authentication;
+
+use Drupal\Core\Form\FormBase;
+use Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\Render\Markup;
+use Drupal\rest_api_authentication\Utilities;
+
+class MoHeadlessIntegration {
+
+  public static function insertForm(array &$form, FormStateInterface $form_state) {
+
+    $form['markup_library_1'] = [
+      '#attached' => [
+        'library' => [
+          "rest_api_authentication/rest_api_authentication.style_settings",
+        ],
+      ],
+    ];
+
+    $form['headless_sso_details'] = [
+      '#type' => 'details',
+      '#title' => t('Headless SSO'),
+      '#open' => TRUE,
+      '#group' => 'verticaltabs',
+    ];
+
+
+    self::headlessSSOFieldset($form,$form_state);
+
+    return $form;
+  }
+
+  private static function headlessSSOFieldset(array &$form, FormStateInterface $form_state) {
+    $base_url = \Drupal::request()->getSchemeAndHttpHost().\Drupal::request()->getBasePath();
+
+    $form['headless_sso_details']['headless_sso'] = [
+      '#markup' => t('<b>Headless SSO (Single Sign On) </b><a href = ":upgradePlan" style="font-size: small" >PREMIUM</a><a style="float: right;" href=":guideUrl" target="_blank" class="button button--small" >setup guide</a>',
+        [
+          ':guideUrl' => 'https://www.drupal.org/docs/contributed-modules/api-authentication',
+          ':upgradePlan' => $base_url . '/admin/config/people/rest_api_authentication/auth_settings?tab=edit-upgrade-plans',
+        ]),
+    ];
+
+    $form ['headless_sso_details']['headless_sso']['sso_protocol'] = [
+      '#prefix' => t('<p  style="font-size: small"> This section help you to setup the headless sso with the help of the <a href=":oauthClient" target="_blank">Drupal OAuth Client</a> or <a href=":saml" target="_blank">miniOrange SAML module</a>.</p> <hr>',
+        [
+          ':oauthClient' => 'https://www.drupal.org/project/miniorange_oauth_client',
+          ':saml' => 'https://www.drupal.org/project/miniorange_saml',
+        ] ),
+    ];
+
+    $form['headless_sso_details']['headless_sso']['headless_sso_table'] = [
+      '#type' => 'table',
+      '#responsive' => TRUE ,
+      '#attributes' => ['style' => 'border-collapse: separate;',],
+    ];
+
+    $configurations  = Utilities::getHeadlessTableAttr();
+
+    foreach ($configurations as $key => $value) {
+      $row = self::generateHeadlessSooTableRow($key, $value);
+      $form['headless_sso_details']['headless_sso']['headless_sso_table'][$key] = $row;
+    }
+
+    $form['headless_sso_details']['headless_sso']['save_button'] = [
+      '#type' => 'submit',
+      '#button_type' => 'primary',
+      '#value' => 'Save Settings',
+      '#disabled' => true,
+
+    ];
+
+  }
+  private static function generateHeadlessSooTableRow(string $key, string $value) {
+    $config = \Drupal::config('rest_api_authentication');
+    $row[$key.$value] = [
+      '#markup' => '<div class="container-inline" ><strong>'.$value.'</strong>',
+    ];
+    $base_url = \Drupal::request()->getSchemeAndHttpHost().\Drupal::request()->getBasePath();
+    if($key == 'module'){
+      $row[$key] = [
+        '#type' => 'radios',
+        '#title' => '',
+        '#options' => [0 => t('OAuth Client module'), 1 => t('SAML SP module')],
+        '#attributes' => [
+          'class' => ['container-inline'],
+        ],
+        '#disabled' => true,
+      ];
+    }else if($key == 'frontend_url'){
+      $row[$key] = [
+        '#type' => 'textfield',
+        '#description' => t('Enter the frontend URL where the user will be redirected after SSO.'),
+        '#attributes' => ['style' => 'width:50%'],
+        '#disabled' => true,
+
+      ];
+    }else if( $key == 'get_token_url'){
+      $row[$key] = [
+        '#markup' => Markup::create('<span id = "'.$key.'">' . $base_url . '/get-token</span>&nbsp;
+                '),
+      ];
+    }else {
+      $row[$key] = [
+        '#type' => 'radios',
+        '#title' => '',
+        '#states' => ['visible' => [':input[name = "module"]' => ['value' => 0 ], ],],
+        '#options' => [
+          0 => t('Send JWT created by the module'),
+          1 => t('send JWT received from the OAuth Server'),
+        ],
+        '#attributes' => [
+          'class' => ['container-inline'],
+        ],
+        '#disabled' => true,
+      ];
+    }
+    return $row;
+  }
+}
diff --git a/src/SetupAuthenticationForm.php b/src/SetupAuthenticationForm.php
index 6bb157bb6c2ab4b3b55ef93845d8632f41857b09..08bca0fdaa34c621810300b092d1433a2da9b6c9 100644
--- a/src/SetupAuthenticationForm.php
+++ b/src/SetupAuthenticationForm.php
@@ -21,7 +21,7 @@ class SetupAuthenticationForm {
    *   The populated form array.
    */
   public static function insertForm(array &$form, FormStateInterface $form_state) {
-    global $base_url;
+    $base_url = \Drupal::request()->getSchemeAndHttpHost().\Drupal::request()->getBasePath();
     $form['markup_library_3'] = [
       '#attached' => [
         'library' => [
diff --git a/src/Utilities.php b/src/Utilities.php
index 18bc77535cc08b693b357662745a0233478a9617..4a114cdcd3653d1a9fe2f24132586716dbdd3228 100644
--- a/src/Utilities.php
+++ b/src/Utilities.php
@@ -104,5 +104,9 @@ class Utilities {
     }
     return empty($content) ? $currentTimeInMillis : $content;
   }
+  public static function getHeadlessTableAttr() {
+    return ['module' => 'Select Module', 'frontend_url' => 'Frontend redirect URL', 'get_token_url' => 'ID Token Endpoint ', 'send_jwt' => 'Select JWT type' ];
+
+  }
 
 }