[//]: # (title: Persisting Sensitive Data) The Credentials Store API allows you to store sensitive user data securely, like passwords, server URLs, etc. ## How to Use Use [`PasswordSafe`](upsource:///platform/platform-api/src/com/intellij/ide/passwordSafe/PasswordSafe.kt) to work with credentials. ### Retrieve Stored Credentials ```java String key = null; // e.g. serverURL, accountID CredentialAttributes credentialAttributes = createCredentialAttributes(key); Credentials credentials = PasswordSafe.getInstance().get(credentialAttributes); if (credentials != null) { String password = credentials.getPasswordAsString(); } // or get password only String password = PasswordSafe.getInstance().getPassword(credentialAttributes); private CredentialAttributes createCredentialAttributes(String key) { return new CredentialAttributes(CredentialAttributesKt.generateServiceName("MySystem", key)); } ``` ### Store Credentials ```java CredentialAttributes credentialAttributes = createCredentialAttributes(serverId); // see previous sample Credentials credentials = new Credentials(username, password); PasswordSafe.getInstance().set(credentialAttributes, credentials); ``` To remove stored credentials, pass `null` for the `credentials` parameter. ## Storage The default storage format depends on the OS. | OS | Storage | | ------- | ----------------------------------------------------- | | Windows | File in [KeePass][Windows] format | | macOS | Keychain using [Security Framework][macOS] | | Linux | [Secret Service API][linux] using [libsecret][linux2] | [Windows]: https://keepass.info [macOS]: https://developer.apple.com/documentation/security/keychain_services [linux]: https://specifications.freedesktop.org/secret-service/latest/ [linux]: https://wiki.gnome.org/Projects/Libsecret Users can override the default behavior in Preferences \| Appearance & Behavior \| System Settings \| Passwords.