diff --git a/src/pam.rs b/src/pam.rs
index c455f03a864874b151be65f5ff5e0a4f7615ee11..31d5b35f8811683ba5cbab82e92df32980c9f992 100644
--- a/src/pam.rs
+++ b/src/pam.rs
@@ -24,6 +24,8 @@ use crate::oauth::get_access_token_password;
 
 use crate::logging::setup_log;
 
+use crate::cache::CACHE;
+
 use pamsm::{PamServiceModule, Pam, PamFlag, PamError, PamLibExt};
 
 fn pam_sm_prepare(argv: &Vec<String>) -> Config {
@@ -86,8 +88,9 @@ impl PamServiceModule for PamOidc {
             debug!("Successfully got password");
 
             match get_access_token_password(conf, "pam", username.to_string(), password.to_string(), PamError::SERVICE_ERR, PamError::AUTH_ERR) {
-                Ok(_) => {
+                Ok(t) => {
                     info!("Authenticated {} using Resource Owner Password Grant", username);
+                    CACHE.save_user_token(username.to_string(), t.into());
                     return PamError::SUCCESS;
                 },
                 Err(e) => {