Are private contribution pages a thing?
A short bit of custom code could take care of this (using the hook_civicrm_preProcess hook I think).  It would need to check if the current page is your "sign-up" contribution page, and if it is, make sure that the user is currently logged in.  If not, it would redirect to wherever you need.

Not positive this code is perfect, but it should get you pretty darn close...

function hook_civicrm_preProcess($formName, &amp;$form) {

  $form_id = 7;   // set this to the specific form_id you wish to limit access to
  $redirect_path = 'home';  // set this to the url to redirect to if not logged in

  if ($formName == "CRM_Contribute_Form_Contribution_Main" &amp;&amp; $form-&gt;_id == $form_id) {
    if (!user_is_logged_in()) {
      drupal_goto($redirect_path);
    }
  }

}