All notable changes to this project will be documented in this file. This change log follows the conventions of keepachangelog.com.
...
2.3.594 - 2026-07-17
- Updated CI configuration and fixed CodeCov integration.
- Merge per-request headers with client headers, fixing overrides from
PATCHrequests. #110
2.3.591 - 2026-03-02
- Implemented the Azure auth method in a new namespace,
vault.auth.azure. #109
2.3.588 - 2025-03-28
- The
infomap passed into control flow handler methods now includes the client's Vault address as:vault.client/address.
2.2.586 - 2023-10-13
- The client authentication state and lease store are now wrapped in an opaque data type to prevent accidental exposure in logs and other printed output. #105
2.1.583 - 2023-09-25
This release contains a number of potentially breaking changes, though they should only require minor updates.
- The default logic in the HTTP client no longer automatically retries 5xx responses; this needs to be handled by the control flow to avoid blocking http-kit's callback thread. #101
- The way the client handles "meta info" has changed to become more comprehensive, to reduce repetition and ensure the info is available to the flow controller. #102 #104
- The transit engine automatically base64-encodes inputs where necessary, accepting both strings and bytes. Similarly, it will decode the decryption results from base64 back into strings or bytes. #103
- Batch-mode encryption and decryption in the transit engine is simpler to do and based off the type of the input data argument. #103
vault.client/config-wrapped-clienthas been changed slightly and is nowvault.client/authenticate-wrapped!, which acts on an existing client instead of constructing one.
- Several response shapes from the transit engine methods are correctly coerced now.
- HTTP clients no longer reveal sensitive internal state when printed or stringified.
- The
kv.v1andkv.v2secret engines attach metadata to:not-foundvalues if they support metadata, similar to normal responses. vault.client/config-clientaccepts options for configuring the Vault client, as innew-client.
- Removed the unused
vault.util/sha-256function.
2.0.560 - 2023-09-08
This is a major release which completely rewrites the library code. New
releases will be under the com.amperity/vault-clj coordinate. See the
Upgrading from 1.x document for details on the changes.
1.1.3 - 2022-05-31
- Updated dependency versions.
1.1.2 - 2022-02-01
- Correctly interpret the
:wrap-infopayload when creating tokens with a wrapper.
1.1.1 - 2022-01-31
- All write commands are sent with the correct JSON body encoding, instead of accidentally encoding them as a form-params string. #62
1.1.0 - 2022-01-28
- Updated dependency versions.
- Added
create-orphan-token!method to support the/auth/token/create-orphanendpoint. #61
1.0.6 - 2021-08-25
- Added github authentication implementation. #58
- Minor fix for broken authenticate request handling
1.0.5 - 2021-08-19
- Added integration tests to avoid stale mock test details, cover end-to-end. #57
- Fixed broken functionality in 1.0.4 mainly around json parsing. #55
1.0.4 - 2021-07-19
1.0.3 - 2021-04-26
- Fix authenticate logging for syntax replacement #51
1.0.2 - 2021-03-31
- Add aws-iam authentication support #50
1.0.1 - 2021-01-04
- Updated various dependencies. #48
- Migrate to
cljstyleandclj-kondofor style and linting.
1.0.0 - 2019-12-13
THIS RELEASE CONTAINS SOME BREAKING CHANGES!
- Large internal refactor that may result in unexpected behavior #35
- Bugfix for mocking delete #35
0.7.1 - 2019-11-20
- Added support for auth mount points to support authentication methods under a custom mount point #27
- Bugfix in mock client so that it acts more similarly to http client when creating tokens (create-token!) #36
0.7.0 - 2019-06-20
- Upgrade Clojure to 1.10.0.
- Upgrade
clj-httpto 3.7.0. - Drop dependency on
digestlibrary. - Other minor dependency updates.
0.6.6 - 2019-06-14
- Open authentication (type) dispatch to multimethod #28
0.6.5 - 2018-11-5
- Fix client token lease renewal a034b3
0.6.4 - 2018-10-29
- Fix client token lease renewal even when no secret leases ca731d
0.6.3 - 2018-10-16
- Support Wrap Token authentication. #25
- Fix client token renewal code path to update internal state. #26
- Use
digestinstead of transitive apache lib for hashing. 362f1ab
0.6.2 - 2018-08-09
- Wrap-token authentication mechanism.
- Environment configuration for wrapped tokens via
VAULT_WRAP_TOKEN. - AppRole client configuration via
VAULT_ROLE_IDandVAULT_SECRET_ID.
- Upgrade Clojure to 1.9
- Hash role-id when logging app-role authentication status.
0.6.0 - 2018-04-23
- Support AppRole authentication method. #21
- Support Kubernetes JWT authentication method. #24
- The
read-secretmethod supports a:force-readflag which will ignore valid leases and always re-read the path. #22
- Upgrade to CircleCI 2.0. #23
- The
read-secretmethod now returns the response body on200status codes to plumb through important information.204writes still returntrue. #17 #18
0.5.1 - 2017-09-26
0.5.0 - 2017-07-07
- API errors thrown by the HTTP client have
:type :vault.client.http/api-errorin theirex-data. - The HTTP client supports an additional
:http-optsproperty which will be merged into theclj-httprequests to the Vault server. This provides a way to set custom timeouts, TLS settings, and more. #10 - The
read-secretmethod supports a:not-foundoption which will be returned if set and a secret path is not present. Otherwise, clients consistently throw exceptions. #7
0.4.1 - 2017-05-10
- The HTTP Vault client component accepts a
:revoke-on-stop?option to control the outstanding lease revocation.
- Outstanding leases are no longer revoked on client stop by default.
- The default lease check period and renewal window changed to one and five minutes, respectively. This allows for better lease utilization, as the previous twenty minute window was too large for short-lived leases.
0.4.0 - 2017-01-06
THIS RELEASE CONTAINS BREAKING CHANGES!
Most of the code in the library has been refactored and rewritten with the goal of providing a more fully-featured client for the Vault API. The HTTP client is now a proper system component which manages a background thread to track, renew, and rotate leased secrets. This enables the usage of dynamic secret backends like AWS, PostgreSQL, and more!
Additionally, the mock client implementation has been enhanced to implement most of the API methods and provides a URL-based constructor to load mock secret data in at runtime. This makes testing code without a Vault instance much simpler.
- Added
amperity/envoyto define the environment variables used by the environment-based client constructor. - The
HTTPClientrecord implements theLifecycleprotocol from thecomponentlibrary to manage an internal lease maintenance thread. - Added the
vault.core/new-clientmultimethod which constructs a client based on the given URI scheme. This makes environment-driven construction simpler. - Added the
vault.env/config-clientconstructor which builds a client based on theVAULT_ADDRconfig and authenticates it based on the available credentials. Currently supportsVAULT_TOKENandVAULT_APP_ID/VAULT_USER_ID. - The vault client revokes outstanding leases when stopped.
vault.cachenamespace renamed tovault.lease, significant functionality added for dealing with lease information.vault.clientnamespace renamed tovault.core, with the singleClientprotocol split into a number of more focused protocols.- Client implementations moved into dedicated namespaces
vault.client.mockandvault.client.http. - Downgraded
clj-httpto the stable 2.3.0 version to simplify dependency management. - Deprecated the
vault.env/init-app-clientconstructor.
0.3.4 - 2016-11-16
- Add
create-token!API support in the Client protocol. Tokens can be returned as wrapped responses. - Add
unwrap!API support in the Client protocol.
0.3.3 - 2016-11-04
vault.env/init-app-clientusesVAULT_ADDRas the primary configuration variable, falling back toVAULT_URLfor compatibility.
- HTTP
307redirects from clustered Vault instances will be followed up to two times in order to connect to the correct master node.
0.3.2 - 2016-10-26
- Add
delete-secret!API support in the Client protocol. memory-clientreturns a mock in-memory client implementation for testing.- Numerous unit tests to cover environment and caching logic.
0.3.1 - 2016-10-25
- The normal HTTP client supports internal lease caching directly via the
vault.cachenamespace.
- Tokens used for direct authentication are trimmed as a precation to prevent odd header-based HTTP errors.
0.3.0 - 2016-10-18
With this version, the project has been forked to the Amperity organization.
authenticate!now supports the userpass auth backend.- Add write support in the client via the
write-secret!protocol method. - Environment configuration resolution via the
vault.env/load!function. This takes a map of env vars with some potential secret values as Vault paths. Listed variables of the formvault:<path>are resolved as secret values.
0.2.0 - 2016-03-25
authenticate!takes anauth-typekeyword and a map ofcredentialsnow instead of only supporting the:app-idauth type.
- Added direct token authentication with type
:tokenand credentials of the token string. - Added support for listing secrets with the client protocol.
0.1.0 - 2015-10-27
- Initial library implementation.