diff --git a/src/cache.rs b/src/cache.rs
new file mode 100644
index 0000000000000000000000000000000000000000..cda759b5429409a324a07cad11c0bb7f8218bae1
--- /dev/null
+++ b/src/cache.rs
@@ -0,0 +1,32 @@
+/* Copyright 2021 Dominik George <dominik.george@teckids.org>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+use std::collections::HashMap;
+
+struct UserToken {
+    access_token: String,
+    expires_in: u32,
+    refresh_token: String,
+    scope: String,
+    token_type: String,
+}
+
+static mut USER_TOKENS: Option<HashMap<String, UserToken>> = None;
+
+fn setup_cache() {
+    unsafe {
+        USER_TOKENS = Some(HashMap::new());
+    }
+}
diff --git a/src/lib.rs b/src/lib.rs
index f81a45d016993d9fee09377c91bbe0ff9a7ec13d..49329667235ecb3fe67180df5960eeaa39c5dab6 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,6 +1,7 @@
 #[macro_use] extern crate pamsm;
 #[macro_use] extern crate log;
 
+mod cache;
 mod logging;
 mod config;
 mod pam;