diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/settings/Settings.kt b/mailbox-core/src/main/java/org/briarproject/mailbox/core/settings/Settings.kt
index 8e988a443a943dfe829b7becab2dd2e66bd40d5e..01ace732dbcdb82e04f1abaf9034819350121509 100644
--- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/settings/Settings.kt
+++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/settings/Settings.kt
@@ -4,6 +4,17 @@ import java.util.Hashtable
 
 class Settings : Hashtable<String, String>() {
 
+    override fun put(key: String, value: String?): String? {
+        return if (value == null) super.put(key, "")
+        else super.put(key, value)
+    }
+
+    override fun get(key: String): String? {
+        val value = super.get(key)
+        return if (value.isNullOrEmpty()) null
+        else value
+    }
+
     fun getBoolean(key: String, defaultValue: Boolean): Boolean {
         val s = get(key) ?: return defaultValue
         if ("true" == s) return true
diff --git a/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt b/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt
index 611dccf6772b0093776015d4cf365f3852262cf9..37e4f518148de33390e4de313ce118cf40f8a31b 100644
--- a/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt
+++ b/mailbox-core/src/main/java/org/briarproject/mailbox/core/setup/SetupManager.kt
@@ -57,38 +57,22 @@ class SetupManager @Inject constructor(
     @Throws(DbException::class)
     internal fun setToken(setupToken: String?, ownerToken: String?) {
         val settings = Settings()
-        if (setupToken == null) {
-            settings[SETTINGS_SETUP_TOKEN] = ""
-        } else {
-            randomIdManager.assertIsRandomId(setupToken)
-            settings[SETTINGS_SETUP_TOKEN] = setupToken
-        }
-        if (ownerToken == null) {
-            settings[SETTINGS_OWNER_TOKEN] = ""
-        } else {
-            randomIdManager.assertIsRandomId(ownerToken)
-            settings[SETTINGS_OWNER_TOKEN] = ownerToken
-        }
+        if (setupToken != null) randomIdManager.assertIsRandomId(setupToken)
+        settings[SETTINGS_SETUP_TOKEN] = setupToken
+        if (ownerToken != null) randomIdManager.assertIsRandomId(ownerToken)
+        settings[SETTINGS_OWNER_TOKEN] = ownerToken
         settingsManager.mergeSettings(settings, SETTINGS_NAMESPACE_OWNER)
     }
 
     fun getSetupToken(txn: Transaction): String? {
         val settings = settingsManager.getSettings(txn, SETTINGS_NAMESPACE_OWNER)
-        return settings[SETTINGS_SETUP_TOKEN].nullify()
+        return settings[SETTINGS_SETUP_TOKEN]
     }
 
     @Throws(DbException::class)
     fun getOwnerToken(txn: Transaction): String? {
         val settings = settingsManager.getSettings(txn, SETTINGS_NAMESPACE_OWNER)
-        return settings[SETTINGS_OWNER_TOKEN].nullify()
-    }
-
-    /**
-     * @return the same string or null if it is empty
-     */
-    private fun String?.nullify(): String? {
-        return if (isNullOrEmpty()) null
-        else this
+        return settings[SETTINGS_OWNER_TOKEN]
     }
 
 }
diff --git a/mailbox-core/src/test/java/org/briarproject/mailbox/core/setup/SetupManagerTest.kt b/mailbox-core/src/test/java/org/briarproject/mailbox/core/setup/SetupManagerTest.kt
index 167cd18bb7da2957e4796cdf6b1de2532eb191a0..9ee9c88e122bfa60e57210e25dcb1f64074e3888 100644
--- a/mailbox-core/src/test/java/org/briarproject/mailbox/core/setup/SetupManagerTest.kt
+++ b/mailbox-core/src/test/java/org/briarproject/mailbox/core/setup/SetupManagerTest.kt
@@ -97,4 +97,13 @@ class SetupManagerTest : IntegrationTest() {
         }
     }
 
+    @Test
+    fun `authentication doesn't work with empty string`() = runBlocking {
+        // use it for setup PUT request
+        val response: HttpResponse = httpClient.put("$baseUrl/setup") {
+            authenticateWithToken("")
+        }
+        assertEquals(HttpStatusCode.Unauthorized, response.status)
+    }
+
 }