diff --git a/doorman.module b/doorman.module
index a6a60b7..3f20c3f 100644
--- a/doorman.module
+++ b/doorman.module
@@ -14,7 +14,18 @@ define('DOORMAN_DEFAULT_LOGIN_PAGE', 'user/login');
 function doorman_boot() {
   global $user;
 
-  if (!drupal_is_cli() && empty($user->uid) && !doorman_path_is_allowed()) {
+  // Do not force login for XMLRPC, Cron, or Drush.
+  if (stristr($_SERVER['SCRIPT_FILENAME'], 'xmlrpc.php')) {
+    return;
+  }
+  else if (stristr($_SERVER['SCRIPT_FILENAME'], 'cron.php')) {
+    return;
+  }
+  else if (drupal_is_cli()) {
+    return;
+  }
+  // Force login under defined conditions
+  else if (empty($user->uid) && !doorman_path_is_allowed()) {
     $login_url = variable_get('doorman_login_page', DOORMAN_DEFAULT_LOGIN_PAGE);
     drupal_goto($login_url, array('query' => drupal_get_destination()));
   }
