cache credentials with keychain