diff --git a/src/addressbook/e-book-backend-ews.c b/src/addressbook/e-book-backend-ews.c
index 41c2347..fc409f1 100644
--- a/src/addressbook/e-book-backend-ews.c
+++ b/src/addressbook/e-book-backend-ews.c
@@ -3723,6 +3723,18 @@ e_book_backend_ews_dispose (GObject *object)
 	G_OBJECT_CLASS (e_book_backend_ews_parent_class)->dispose (object);
 }
 
+static gboolean
+book_backend_ews_get_without_password (ESourceAuthenticator *authenticator)
+{
+	EBookBackendEws *ews_backend;
+	CamelEwsSettings *ews_settings;
+
+	ews_backend = E_BOOK_BACKEND_EWS (authenticator);
+	ews_settings = book_backend_ews_get_collection_settings (ews_backend);
+
+	return e_ews_connection_util_get_authentication_without_password (ews_settings);
+}
+
 static ESourceAuthenticationResult
 book_backend_ews_try_password_sync (ESourceAuthenticator *authenticator,
                                     const GString *password,
@@ -3805,6 +3817,7 @@ e_book_backend_ews_class_init (EBookBackendEwsClass *klass)
 static void
 e_book_backend_ews_authenticator_init (ESourceAuthenticatorInterface *interface)
 {
+	interface->get_without_password = book_backend_ews_get_without_password;
 	interface->try_password_sync = book_backend_ews_try_password_sync;
 }
 
diff --git a/src/calendar/e-cal-backend-ews.c b/src/calendar/e-cal-backend-ews.c
index 0430ab2..ec542c6 100644
--- a/src/calendar/e-cal-backend-ews.c
+++ b/src/calendar/e-cal-backend-ews.c
@@ -4385,6 +4385,18 @@ e_cal_backend_ews_finalize (GObject *object)
 	G_OBJECT_CLASS (e_cal_backend_ews_parent_class)->finalize (object);
 }
 
+static gboolean
+cal_backend_ews_get_without_password (ESourceAuthenticator *authenticator)
+{
+	ECalBackendEws *ews_backend;
+	CamelEwsSettings *ews_settings;
+
+	ews_backend = E_CAL_BACKEND_EWS (authenticator);
+	ews_settings = cal_backend_ews_get_collection_settings (ews_backend);
+
+	return e_ews_connection_util_get_authentication_without_password (ews_settings);
+}
+
 static ESourceAuthenticationResult
 cal_backend_ews_try_password_sync (ESourceAuthenticator *authenticator,
                                    const GString *password,
@@ -4534,6 +4546,7 @@ e_cal_backend_ews_class_init (ECalBackendEwsClass *class)
 static void
 e_cal_backend_ews_authenticator_init (ESourceAuthenticatorInterface *interface)
 {
+	interface->get_without_password = cal_backend_ews_get_without_password;
 	interface->try_password_sync = cal_backend_ews_try_password_sync;
 }
 
diff --git a/src/configuration/e-ews-config-utils.c b/src/configuration/e-ews-config-utils.c
index 5f18f38..d288994 100644
--- a/src/configuration/e-ews-config-utils.c
+++ b/src/configuration/e-ews-config-utils.c
@@ -262,6 +262,14 @@ struct _EEwsConfigUtilsAuthenticatorClass {
 	GObjectClass parent_class;
 };
 
+static gboolean
+ews_config_utils_authenticator_get_without_password (ESourceAuthenticator *authenticator)
+{
+	EEwsConfigUtilsAuthenticator *ews_authenticator = (EEwsConfigUtilsAuthenticator *) authenticator;
+
+	return e_ews_connection_util_get_authentication_without_password (ews_authenticator->ews_settings);
+}
+
 static ESourceAuthenticationResult
 ews_config_utils_authenticator_try_password_sync (ESourceAuthenticator *auth,
                                                   const GString *password,
@@ -365,6 +373,7 @@ e_ews_config_utils_authenticator_class_init (EEwsConfigUtilsAuthenticatorClass *
 static void
 e_ews_config_utils_authenticator_authenticator_init (ESourceAuthenticatorInterface *interface)
 {
+	interface->get_without_password = ews_config_utils_authenticator_get_without_password;
 	interface->try_password_sync = ews_config_utils_authenticator_try_password_sync;
 }
 
diff --git a/src/configuration/e-mail-config-ews-autodiscover.c b/src/configuration/e-mail-config-ews-autodiscover.c
index 3c6987f..cf5b0ab 100644
--- a/src/configuration/e-mail-config-ews-autodiscover.c
+++ b/src/configuration/e-mail-config-ews-autodiscover.c
@@ -246,6 +246,20 @@ mail_config_ews_autodiscover_clicked (GtkButton *button)
 	mail_config_ews_autodiscover_run (autodiscover);
 }
 
+static gboolean
+mail_config_ews_autodiscover_get_without_password (ESourceAuthenticator *authenticator)
+{
+	EMailConfigEwsAutodiscover *autodiscover;
+	EMailConfigServiceBackend *backend;
+	CamelSettings *settings;
+
+	autodiscover = E_MAIL_CONFIG_EWS_AUTODISCOVER (authenticator);
+	backend = e_mail_config_ews_autodiscover_get_backend (autodiscover);
+	settings = e_mail_config_service_backend_get_settings (backend);
+
+	return e_ews_connection_util_get_authentication_without_password (CAMEL_EWS_SETTINGS (settings));
+}
+
 static ESourceAuthenticationResult
 mail_config_ews_autodiscover_try_password_sync (ESourceAuthenticator *auth,
                                                 const GString *password,
@@ -321,8 +335,8 @@ e_mail_config_ews_autodiscover_class_init (EMailConfigEwsAutodiscoverClass *clas
 static void
 e_mail_config_ews_autodiscover_authenticator_init (ESourceAuthenticatorInterface *interface)
 {
-	interface->try_password_sync =
-		mail_config_ews_autodiscover_try_password_sync;
+	interface->get_without_password = mail_config_ews_autodiscover_get_without_password;
+	interface->try_password_sync = mail_config_ews_autodiscover_try_password_sync;
 }
 
 static void
diff --git a/src/configuration/e-mail-config-ews-delegates-page.c b/src/configuration/e-mail-config-ews-delegates-page.c
index f6c6adb..e32a67c 100644
--- a/src/configuration/e-mail-config-ews-delegates-page.c
+++ b/src/configuration/e-mail-config-ews-delegates-page.c
@@ -1510,6 +1510,18 @@ sort_by_display_name_cb (gconstpointer a,
 	return g_utf8_collate (aname, bname);
 }
 
+static gboolean
+mail_config_ews_delegates_page_get_without_password (ESourceAuthenticator *authenticator)
+{
+	EMailConfigEwsDelegatesPage *page;
+	CamelSettings *settings;
+
+	page = E_MAIL_CONFIG_EWS_DELEGATES_PAGE (authenticator);
+	settings = mail_config_ews_delegates_page_get_settings (page);
+
+	return e_ews_connection_util_get_authentication_without_password (CAMEL_EWS_SETTINGS (settings));
+}
+
 static ESourceAuthenticationResult
 mail_config_ews_delegates_page_try_password_sync (ESourceAuthenticator *auth,
                                                   const GString *password,
@@ -1644,6 +1656,7 @@ e_mail_config_ews_delegates_page_interface_init (EMailConfigPageInterface *inter
 static void
 e_mail_config_ews_delegates_page_authenticator_init (ESourceAuthenticatorInterface *interface)
 {
+	interface->get_without_password = mail_config_ews_delegates_page_get_without_password;
 	interface->try_password_sync = mail_config_ews_delegates_page_try_password_sync;
 }
 
diff --git a/src/configuration/e-mail-config-ews-oal-combo-box.c b/src/configuration/e-mail-config-ews-oal-combo-box.c
index 7a03275..a6c3142 100644
--- a/src/configuration/e-mail-config-ews-oal-combo-box.c
+++ b/src/configuration/e-mail-config-ews-oal-combo-box.c
@@ -135,6 +135,20 @@ mail_config_ews_oal_combo_box_finalize (GObject *object)
 		finalize (object);
 }
 
+static gboolean
+mail_config_ews_oal_combo_box_get_without_password (ESourceAuthenticator *authenticator)
+{
+	EMailConfigEwsOalComboBox *combo_box;
+	EMailConfigServiceBackend *backend;
+	CamelSettings *settings;
+
+	combo_box = E_MAIL_CONFIG_EWS_OAL_COMBO_BOX (authenticator);
+	backend = e_mail_config_ews_oal_combo_box_get_backend (combo_box);
+	settings = e_mail_config_service_backend_get_settings (backend);
+
+	return e_ews_connection_util_get_authentication_without_password (CAMEL_EWS_SETTINGS (settings));
+}
+
 static ESourceAuthenticationResult
 mail_config_ews_oal_combo_box_try_password_sync (ESourceAuthenticator *auth,
                                                  const GString *password,
@@ -219,8 +233,8 @@ e_mail_config_ews_oal_combo_box_class_init (EMailConfigEwsOalComboBoxClass *clas
 static void
 e_mail_config_ews_oal_combo_box_authenticator_init (ESourceAuthenticatorInterface *interface)
 {
-	interface->try_password_sync =
-		mail_config_ews_oal_combo_box_try_password_sync;
+	interface->get_without_password = mail_config_ews_oal_combo_box_get_without_password;
+	interface->try_password_sync = mail_config_ews_oal_combo_box_try_password_sync;
 }
 
 static void
diff --git a/src/configuration/e-mail-config-ews-ooo-page.c b/src/configuration/e-mail-config-ews-ooo-page.c
index acc958d..a88b51c 100644
--- a/src/configuration/e-mail-config-ews-ooo-page.c
+++ b/src/configuration/e-mail-config-ews-ooo-page.c
@@ -800,6 +800,18 @@ mail_config_ews_ooo_page_submit_finish (EMailConfigPage *page,
 	return !g_simple_async_result_propagate_error (simple, error);
 }
 
+static gboolean
+mail_config_ews_ooo_page_get_without_password (ESourceAuthenticator *authenticator)
+{
+	EMailConfigEwsOooPage *page;
+	CamelSettings *settings;
+
+	page = E_MAIL_CONFIG_EWS_OOO_PAGE (authenticator);
+	settings = mail_config_ews_ooo_page_get_settings (page);
+
+	return e_ews_connection_util_get_authentication_without_password (CAMEL_EWS_SETTINGS (settings));
+}
+
 static ESourceAuthenticationResult
 mail_config_ews_ooo_page_try_password_sync (ESourceAuthenticator *auth,
                                             const GString *password,
@@ -929,8 +941,8 @@ e_mail_config_ews_ooo_page_interface_init (EMailConfigPageInterface *interface)
 static void
 e_mail_config_ews_ooo_page_authenticator_init (ESourceAuthenticatorInterface *interface)
 {
-	interface->try_password_sync =
-		mail_config_ews_ooo_page_try_password_sync;
+	interface->get_without_password = mail_config_ews_ooo_page_get_without_password;
+	interface->try_password_sync = mail_config_ews_ooo_page_try_password_sync;
 }
 
 static void
diff --git a/src/server/e-ews-connection.c b/src/server/e-ews-connection.c
index 1c591ad..82092ac 100644
--- a/src/server/e-ews-connection.c
+++ b/src/server/e-ews-connection.c
@@ -1403,6 +1403,41 @@ ews_connection_finalize (GObject *object)
 	G_OBJECT_CLASS (e_ews_connection_parent_class)->finalize (object);
 }
 
+gboolean
+e_ews_connection_util_get_authentication_without_password (CamelEwsSettings *ews_settings)
+{
+	gboolean auth_without_password;
+	gchar *auth_mechanism;
+
+	g_return_val_if_fail (CAMEL_IS_EWS_SETTINGS (ews_settings), FALSE);
+
+	auth_mechanism = camel_network_settings_dup_auth_mechanism (
+		CAMEL_NETWORK_SETTINGS (ews_settings));
+
+	/* the other one is currently NTLM */
+	auth_without_password = g_strcmp0 (auth_mechanism, "PLAIN") != 0;
+
+	g_free (auth_mechanism);
+
+	return auth_without_password;
+}
+
+static gboolean
+ews_connection_get_without_password (ESourceAuthenticator *authenticator)
+{
+	CamelEwsSettings *ews_settings;
+	gboolean auth_without_password;
+
+	ews_settings = e_ews_connection_ref_settings (E_EWS_CONNECTION (authenticator));
+	g_return_val_if_fail (ews_settings != NULL, FALSE);
+
+	auth_without_password = e_ews_connection_util_get_authentication_without_password (ews_settings);
+
+	g_clear_object (&ews_settings);
+
+	return auth_without_password;
+}
+
 static ESourceAuthenticationResult
 ews_connection_try_password_sync (ESourceAuthenticator *authenticator,
                                   const GString *password,
@@ -1449,6 +1484,7 @@ ews_connection_try_password_sync (ESourceAuthenticator *authenticator,
 		}
 
 		e_ews_connection_set_password (connection, NULL);
+		ews_connection_schedule_abort (connection);
 	}
 
 	return result;
@@ -1494,6 +1530,7 @@ e_ews_connection_class_init (EEwsConnectionClass *class)
 static void
 e_ews_connection_authenticator_init (ESourceAuthenticatorInterface *interface)
 {
+	interface->get_without_password = ews_connection_get_without_password;
 	interface->try_password_sync = ews_connection_try_password_sync;
 }
 
@@ -1956,7 +1993,7 @@ e_ews_connection_set_password (EEwsConnection *cnc,
 		memset (cnc->priv->password, 0, strlen (cnc->priv->password));
 
 	g_free (cnc->priv->password);
-	cnc->priv->password = g_strdup (password);
+	cnc->priv->password = g_strdup ((password && *password) ? password : NULL);
 
 	g_mutex_unlock (&cnc->priv->password_lock);
 
diff --git a/src/server/e-ews-connection.h b/src/server/e-ews-connection.h
index 2e13dc7..44f4f92 100644
--- a/src/server/e-ews-connection.h
+++ b/src/server/e-ews-connection.h
@@ -208,6 +208,9 @@ typedef struct {
 void		ews_oal_free			(EwsOAL *oal);
 void		ews_oal_details_free		(EwsOALDetails *details);
 
+gboolean	e_ews_connection_util_get_authentication_without_password
+						(CamelEwsSettings *ews_settings);
+
 GType		e_ews_connection_get_type	(void);
 EEwsConnection *e_ews_connection_new		(const gchar *uri,
 						 CamelEwsSettings *settings);
