diff --git a/lib/classes/StudipRedisCache.class.php b/lib/classes/StudipRedisCache.class.php
index c485b787b52ff135c7476e37d9f37b07c4ede57d..7b9570bdd0c76605dbb000f59f2298648440be89 100644
--- a/lib/classes/StudipRedisCache.class.php
+++ b/lib/classes/StudipRedisCache.class.php
@@ -27,8 +27,9 @@ class StudipRedisCache implements StudipCache
      *
      * @param string $hostname Hostname of redis server
      * @param int    $port     Port of redis server
+     * @param string $auth     Optional auth token/password
      */
-    public function __construct($hostname, $port)
+    public function __construct($hostname, $port, string $auth = '')
     {
         if (!extension_loaded('redis')) {
             throw new Exception('Redis extension missing.');
@@ -40,6 +41,10 @@ class StudipRedisCache implements StudipCache
         if (!$status) {
             throw new Exception('Could not add cache.');
         }
+
+        if ($auth !== '') {
+            $this->redis->auth($auth);
+        }
     }
 
     /**
@@ -83,7 +88,10 @@ class StudipRedisCache implements StudipCache
     public function read($arg)
     {
         $key = $this->getCacheKey($arg);
-        return $this->redis->get($key);
+
+        $result = $this->redis->get($key);
+
+        return ($result === null) ? null : unserialize($result);
     }
 
     /**
@@ -97,7 +105,7 @@ class StudipRedisCache implements StudipCache
     public function write($name, $content, $expire = self::DEFAULT_EXPIRATION)
     {
         $key = $this->getCacheKey($name);
-        return $this->redis->setEx($key, $expire, $content);
+        return $this->redis->setEx($key, $expire, serialize($content));
     }
 
     /**
diff --git a/resources/vue/components/RedisCacheConfig.vue b/resources/vue/components/RedisCacheConfig.vue
index ae254b9e7eca76e9e58928e64704ea591c7222eb..ad035b37f0393df8cf145f10c9f0787969af2491 100644
--- a/resources/vue/components/RedisCacheConfig.vue
+++ b/resources/vue/components/RedisCacheConfig.vue
@@ -2,16 +2,20 @@
     <div>
         <label class="col-4">
             <span class="required">
-                <translate>Hostname</translate>
+                {{ $gettext('Hostname') }}
             </span>
             <input required type="text" name="hostname" placeholder="localhost" v-model="theHostname">
         </label>
         <label class="col-2">
             <span class="required">
-                <translate>Port</translate>
+                {{ $gettext('Port') }}
             </span>
             <input required type="text" name="port" placeholder="6379" v-model="thePort">
         </label>
+        <label>
+            {{ $gettext('Passwort/Token zur Authentifizierung') }}
+            <input type="text" name="auth" v-model="theAuth">
+        </label>
     </div>
 </template>
 
@@ -26,12 +30,17 @@ export default {
         port: {
             type: Number,
             default: 6379
+        },
+        auth: {
+            type: String,
+            default: ''
         }
     },
     data () {
         return {
             theHostname: this.hostname,
             thePort: this.port,
+            theAuth: this.auth
         }
     },
     methods: {