diff --git a/src/cache.rs b/src/cache.rs
index f1d0f1426d69a12fb4da2e0345934056c353f7b9..fa9cb0e124a62bc9fcb063e1e4feff196babeca5 100644
--- a/src/cache.rs
+++ b/src/cache.rs
@@ -13,6 +13,8 @@
  * limitations under the License.
  */
 
+use crate::BASE_NAME;
+
 use lazy_static::lazy_static;
 use std::collections::HashMap;
 use std::convert::From;
@@ -24,9 +26,13 @@ use std::ffi::CString;
 use oauth2::basic::BasicTokenResponse;
 
 use std::env;
+use std::fs::remove_file;
+use std::io;
+use std::path::PathBuf;
 use xdg::{BaseDirectories,BaseDirectoriesError};
 
 const TOKEN_DEFAULT_EXPIRES: u64 = 24 * 60 * 60;
+const USER_TOKEN_FILENAME: &str = "user_token.json";
 
 struct UserToken {
     access_token: String,
@@ -61,7 +67,7 @@ impl From<BasicTokenResponse> for UserToken {
 
 struct Cache {
     user_tokens: HashMap<String, UserToken>,
-    original_euid: uid_t
+    original_euid: uid_t,
 }
 
 impl Cache {
@@ -103,7 +109,7 @@ impl Cache {
         let user_home = CString::from_raw((*getpwnam(nam.as_ptr())).pw_dir).to_str().unwrap();
         env::set_var("HOME", user_home);
 
-        let base_dirs = BaseDirectories::new()?;
+        let base_dirs = BaseDirectories::with_prefix(BASE_NAME)?;
 
         if saved_home != None {
             env::set_var("HOME", saved_home.unwrap());
@@ -114,6 +120,13 @@ impl Cache {
         return Ok(base_dirs);
     }
 
+    fn place_user_cache_file(&self, username: String, filename: &str) -> Result<PathBuf, io::Error> {
+        match self.get_user_xdg_base_directories(username) {
+            Ok(b) => b.place_cache_file(filename),
+            Err(e) => Err(io::Error::new(io::ErrorKind::NotFound, e))
+        }
+    }
+
     pub fn load_user_token(&self, owner: String) -> Option<&UserToken> {
         return self.user_tokens.get(&owner);
     }
@@ -127,7 +140,10 @@ impl Cache {
 
         // Try to remove user's token cache file
         self.drop_privileges(owner).ok();
-        // FIXME Add delete code here
+        match self.place_user_cache_file(owner, USER_TOKEN_FILENAME) {
+            Ok(path) => remove_file(path),
+            Err(e) => Err(e)
+        };
         self.restore_privileges();
     }
 
diff --git a/src/lib.rs b/src/lib.rs
index c4eae875fe536ff99eaf41e5b8143fc9838233ea..9f87bf0c87ec5905105291ae470cd3aca74ddc70 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,3 +1,5 @@
+const BASE_NAME: &str  = "nss_pam_oidc";
+
 // Modules and macro imports for our own code
 #[macro_use] extern crate log;
 mod cache;