Commit graph

949 commits

Author SHA1 Message Date
Luis (LT) Carbonell
7c1a83422b
Improve Error Handling for Missing Credentials in AppRole and UserPass (#28441)
* Return invalid credentials for missing login parameters (400 vs 500)

* Add changelog

* Update test
2024-09-23 10:55:20 -04:00
Scott Miller
cda20e39b1
Ferry ocsp_ca_certificates over the OCSP ValidationConf (#28309)
* Ferry ocsp_ca_certificates over the OCSP ValidationConf

* changelog

* First check issuer, then check extraCAS

* Use the correct cert when the signature validation from issuer succeeds

* Validate via extraCas in the cert missing case as well

* dedupe logic

* remove CA test
2024-09-11 09:57:27 -05:00
vinay-gopalan
ec9b675f70
Add OSS stub functions for Self-Managed Static Roles (#28199) 2024-08-29 10:01:01 -07:00
Scott Miller
2d1f692d1e
Increase cert auth role cache max size (#27942) 2024-08-01 13:08:44 -05:00
idnandre
e26c246cbb
chore: fix deprecated ioutil readall (#27823)
Signed-off-by: idnandre <andre@idntimes.com>
2024-07-30 09:18:24 -04:00
Scott Miller
d75aee21b8
Improve trusted cert loading in Certificate Auth (#27902)
* Improve trusted cert loading in Certificate Auth

Currently, cert auth has a cache of certName->trusted certificate data.  This cache is updated lazily on login.  In highly concurrent situations, several logins
of the same cert or more likely, logins not specifying role name may happen simulataneously.  In the status quo, each results in going to storage, fetching the role data
(or all roles!), unmarshalling, and certificate parsing.

This change puts a lock matrix in front of the cache miss scenario, so only one of the logins will load and process the role data.  In addition, we treat
the absent role name specially, caching it separately so that it cannot be flushed by eviction on the role cache.

* changelog

* cleanup
2024-07-29 21:16:08 +00:00
kpcraig
32fdae08d6
pass nil function for auth/aws when no externalID supplied (#27858) 2024-07-26 14:55:04 -04:00
Rémi Lapeyre
f8eb0154d4
Fix case handling in policyutil.EquivalentPolicies() (#16484)
The previous logic would consider not normalize casing before comparing
the policy names which meant that a token associated to a policy with
an uppercase could not be renewed for the following auth methods:

  - AppID
  - Cert
  - GitHub
  - LDAP
  - Okta
  - Radius
  - Userpass

Co-authored-by: Violet Hynes <violet.hynes@hashicorp.com>
2024-05-31 09:58:03 -04:00
Steven Clark
2c3b41c688
Address cert auth error message logic error (#27202)
- Cert auth had a logic error when crafting the error response when
   configured with a leaf certificate to validate against. It would
   generate an error response that used a nil error.
 - Make the cert auth error messages the same when we fail to match
   constraints
2024-05-24 15:31:56 -04:00
Milena Zlaticanin
bdc16c396b
Add WIF support for AWS Auth (#26507)
* Add wif support

* update cli + add stubs

* revert cli changes + add changelog

* update with suggestions
2024-05-09 16:14:09 -07:00
kpcraig
bef178b4a5
Add ExternalID support to AWS Auth STS configuration (#26628)
* add basic external id support to aws auth sts configuration

---------

Co-authored-by: Sarah Chavis <62406755+schavis@users.noreply.github.com>
2024-05-07 11:10:57 -04:00
Isabelle Kraemer
b4a2e40124
adding private DNS name as EC2 metadata (#25418)
add instance dns name as inferred_hostname metadata field

Co-authored-by: kpcraig <3031348+kpcraig@users.noreply.github.com>
2024-05-01 12:45:22 -04:00
thegatsbylofiexperience
5b845c83ff
Add canonicalArn as a entity alias name (#22460)
* Add canonicalArn as a entity alias name
* Add Canonical Arn to iam_alias documentation
2024-04-29 15:56:26 -04:00
John-Michael Faircloth
f2b5290bc1
ldap/auth: add tests for login regressions (#26327)
* ldap/auth: add tests for login regressions

Add tests to cover the regressions reported in
- https://github.com/hashicorp/vault/issues/26171
- https://github.com/hashicorp/vault/issues/26183

* fix tests; update image tag
2024-04-10 17:39:30 +00:00
Steven Clark
2fe676e75b
Validate OCSP response is signed by expected issuer (#26091)
* Validate OCSP response is signed by expected issuer and serial number matches request

 - There was a bug in the OCSP response signature logic, it properly
   verified but kept around the ocspRes object around so we ignored
   the errors found and passed the response object back up the stack.
 - Now extract the verification logic into a dedicated function, if
   it returns an error, blank the ocspRes response as we can't trust it.
 - Address an issue that the OCSP requests from multiple servers were
   clobbering each others responses as the index loop variable was not
   properly captured.
 - Add a missing validation that the response was for the serial number
    we requested

* Add cl
2024-03-22 09:28:02 -04:00
Steven Clark
6fca34eace
Proceed with cert auth login attempts if ocsp_fail_open is true and servers are unreachable (#25982) 2024-03-19 10:39:37 -04:00
Steven Clark
5785191067
Support OCSP responses without NextUpdate field set (#25912)
* Support OCSP responses without a NextUpdate value set

 - Validate that the ThisUpdate value is
   properly prior to our current time and
   if NextUpdate is set that, ThisUpdate is
   before NextUpdate.
 - If we don't have a value for NextUpdate just compare against ThisUpdate.

* Add ocsp_this_update_max_ttl support to cert auth

 - Allow configuring a maximum TTL of the OCSP response based on the
   ThisUpdate time like OpenSSL does
 - Add test to validate that we don't cache OCSP responses with no NextUpdate

* Add cl

* Add missing ` in docs

* Rename ocsp_this_update_max_ttl to ocsp_this_update_max_age

* Missed a few TTL references

* Fix error message
2024-03-18 18:12:37 -04:00
suchsoon
f86e3d4a68
remove repetitive words (#25860)
Signed-off-by: suchsoon <silverjadebeauty@gmail.com>
2024-03-13 18:44:54 +00:00
Peter Wilson
51f9cfe7c7
make fmt (#25903) 2024-03-13 11:59:23 +00:00
Peter Wilson
a311735761
Support pre-hashed passwords with userpass backend (#25862)
* allows use of pre-hashed passwords with userpass backend

* Remove unneeded error

* Single error check after switch

* use param name quoted in error message

* updated test for quoted param in error

* white space fixes for markdown doc

* More whitespace fixes

* added changelog

* Password/pre-hashed password are only required on 'create' operation

* docs indentation

* Update website/content/docs/auth/userpass.mdx

Co-authored-by: Sarah Chavis <62406755+schavis@users.noreply.github.com>

* Updated docs

* Check length of hash too

* Update builtin/credential/userpass/path_user_password_test.go

:)

Co-authored-by: Kuba Wieczorek <kuba.wieczorek@hashicorp.com>

---------

Co-authored-by: Sarah Chavis <62406755+schavis@users.noreply.github.com>
Co-authored-by: Kuba Wieczorek <kuba.wieczorek@hashicorp.com>
2024-03-12 18:16:11 +00:00
Scott Miller
773911494e
Compare public keys on trusted leaf certs, to prevent use of alternate certs with the same/forged serial numbers (#25649)
* Compare public keys on trusted leaf certs, to prevent use of alternate certs with the same/forged serial numbers

* changelog
2024-02-26 22:22:50 +00:00
Anton Averchenkov
8af67e1639
openapi: Fix approle reponse duration types (#25510) 2024-02-21 14:07:00 -05:00
Scott Miller
734afbe09e
Cache trusted cert values, invalidating when anything changes (#25421)
* Cache trusted cert values, invalidating when anything changes

* rename to something more indicative

* defer

* changelog

* Use an LRU cache rather than a static map so we can't use too much memory.  Add docs, unit tests

* Don't add to cache if disabled.  But this races if just a bool, so make the disabled an atomic
2024-02-15 21:48:30 +00:00
Josh Black
fa13dbd381
add gosimport to make fmt and run it (#25383)
* add gosimport to make fmt and run it

* move installation to tools.sh

* correct weird spacing issue

* Update Makefile

Co-authored-by: Nick Cabatoff <ncabatoff@hashicorp.com>

* fix a weird issue

---------

Co-authored-by: Nick Cabatoff <ncabatoff@hashicorp.com>
2024-02-13 14:07:02 -08:00
Kit Haines
fb71d7f3c8
make-fmt (#24940) 2024-01-18 20:00:00 +00:00
Steven Clark
610c8a4d38
Move Vault's customized pkcs7 fork into a shared location (#24658)
- The PKI plugin needs to use the customized pkcs7 fork
   so move it out from the aws credential plugin's package
   into a shared location
2024-01-03 12:11:44 -05:00
kpcraig
9b7d06839f
Add a /config/rotate-root path to the ldap auth backend (#24099) 2023-11-27 15:48:16 -05:00
Christopher Swenson
904c08e1e4
Remove runtime patch for SHA1 support in X.509 certs (#24243)
This code only executes when the Vault version is <1.11,
so is now dead code and can be removed safely.
2023-11-27 09:11:01 -08:00
Nick Cabatoff
ca06412a14
Some not-yet-merged changes to go.mod have resulted in updating the Go version and toolchain, which then breaks a test compilation. The test only applies to Go version older than 1.16, which we don't have in any active branches, so I'm just removing it. (#24028) 2023-11-06 15:48:12 +00:00
Hamid Ghaf
87376a1f5c
Normalize error response messages when invalid credentials are provided (#23786)
* Normalize error response messages when invalid credentials are provided

* CL

* Update changelog/23786.txt

Co-authored-by: Violet Hynes <violet.hynes@hashicorp.com>

---------

Co-authored-by: Peter Wilson <peter.wilson@hashicorp.com>
Co-authored-by: Violet Hynes <violet.hynes@hashicorp.com>
2023-10-23 15:59:26 +00:00
Robert
8202c7db4b
auth/aws: fix panic in IAM-based login when client config doesn't exist (#23555)
Co-authored-by: Austin Gebauer <34121980+austingebauer@users.noreply.github.com>
2023-10-06 14:29:28 -05:00
Robert
999111e5b3
Revert "auth/aws: fix panic in IAM-based login when client config doesn't exist (#23366)" (#23480)
This reverts commit 80e1912adb.
2023-10-03 16:01:40 -05:00
Austin Gebauer
80e1912adb
auth/aws: fix panic in IAM-based login when client config doesn't exist (#23366)
* auth/aws: fix panic in IAM-based login when client config doesn't exist

* add changelog

* adds known issue for 1.15.0

* fixes up known issue with workaround

* fix link

* maintain behavior of client config not needing to exist for IAM login

* update changelog
2023-09-30 11:25:56 +09:00
Violet Hynes
f943c37a83
VAULT-19237 Add mount_type to secret response (#23047)
* VAULT-19237 Add mount_type to secret response

* VAULT-19237 changelog

* VAULT-19237 make MountType generic

* VAULT-19237 clean up comment

* VAULT-19237 update changelog

* VAULT-19237 update test, remove mounttype from wrapped responses

* VAULT-19237 fix a lot of tests

* VAULT-19237 standby test
2023-09-20 09:28:52 -04:00
Raymond Ho
018e5675fe
VAULT 18227/introduce cap ldap library (#22185) 2023-09-14 10:26:29 -07:00
Michael Dempsey
d6b7e5bfa1
Add support for signed GET requests for aws authentication (#10961)
* Support GET requests for aws-iam

This is required to support presigned requests from aws-sdk-go-v2

* Add GET method tests for aws-iam auth login path

* Update Website Documenation

* Validate GET action even if iam-server header is not set

* Combine URL checks

* Add const amzSignedHeaders to aws credential builtin

* Add test for multiple GET request actions

* Add Changelog Entry

---------

Co-authored-by: Max Coulombe <109547106+maxcoulombe@users.noreply.github.com>
2023-08-15 15:40:12 -04:00
hashicorp-copywrite[bot]
0b12cdcfd1
[COMPLIANCE] License changes (#22290)
* Adding explicit MPL license for sub-package.

This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository.

* Adding explicit MPL license for sub-package.

This directory and its subdirectories (packages) contain files licensed with the MPLv2 `LICENSE` file in this directory and are intentionally licensed separately from the BSL `LICENSE` file at the root of this repository.

* Updating the license from MPL to Business Source License.

Going forward, this project will be licensed under the Business Source License v1.1. Please see our blog post for more details at https://hashi.co/bsl-blog, FAQ at www.hashicorp.com/licensing-faq, and details of the license at www.hashicorp.com/bsl.

* add missing license headers

* Update copyright file headers to BUS-1.1

* Fix test that expected exact offset on hcl file

---------

Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com>
Co-authored-by: Sarah Thompson <sthompson@hashicorp.com>
Co-authored-by: Brian Kassouf <bkassouf@hashicorp.com>
2023-08-10 18:14:03 -07:00
Raymond Ho
4f7a8fb494
AWS auth login with multi region STS support (#21960) 2023-07-28 08:42:22 -07:00
Max Bowsher
e057ee0750
OpenAPI: Define default response structure for ListOperations (#21934)
* OpenAPI: Define default response structure for ListOperations

Almost all Vault ListOperation responses have an identical response
schema. Update the OpenAPI generator to know this, and remove a few
instances where that standard response schema had been manually
copy/pasted into place in individual endpoints.

* changelog

* Only render StandardListResponse schema, if an operation uses it

* Teach the response schema validation test helper about the default list schema too

---------

Co-authored-by: Anton Averchenkov <84287187+averche@users.noreply.github.com>
2023-07-25 11:22:33 -04:00
Nick Cabatoff
c14c2cf6bd
Stop passing in loggers to clusters explicitly (#21999) 2023-07-24 10:51:02 -04:00
Max Bowsher
fe013a987a
Add missing Query: true metadata to API definitions (#21949)
* Add missing `Query: true` metadata to API definitions

Also improve the documentation comment for `Query` to guide people better how they should be setting `Query` in the future.

Endpoints affected:
- auth/approle/role/{role_name}/secret-id/destroy
- auth/approle/role/{role_name}/secret-id-accessor/destroy
- auth/token/lookup
- auth/token/lookup-self
- sys/internal/specs/openapi
- sys/wrapping/lookup
- identity/oidc/provider/{name}/authorize

There are also endpoints in the `aws` and `gcp` secrets engines which need the same treatment in their own PRs.

When working on the `auth/token/lookup-self` path, I discovered that it
had a parameter which was completely pointless - it was even documented
as unused. It only existed because the `auth/token/lookup-self` code
path was implemented by bodging the current token into the request data
and passing control to the `auth/token/lookup` handler directly -
instead of just factoring out the common code to a reusable function -
so I fixed that whilst I was there.

Note that two of the affected endpoints currently have one form of their
OpenAPI operation ID set to something mentioning "with-parameters":
- identity/oidc/provider/{name}/authorize
- sys/internal/specs/openapi

These operation IDs should be changed, as they perpetuate
a misunderstanding - both read (GET) and update (POST/PUT) forms of
these APIs are **equally** capable of being used with parameters.

* I failed to spot that the aws plugin is in-repo! Update that too.

* Remove code cleanup changes from this PR

* Wording and wrapping adjustment as requested.
2023-07-21 15:05:29 -04:00
Steven Clark
2ca25af823
make fmt (#21895) 2023-07-17 16:56:28 +00:00
Rachel Culpepper
71841c51be
Vault-17911: add support for hex values in oid extension (#21830)
* add support for hex values in oid extension

* add changelog

* add length check on split and error handling on unmarshal
2023-07-17 10:58:18 -04:00
Max Bowsher
e47dd9df53
OpenAPI: Separate ListOperation from ReadOperation (#21723)
* OpenAPI: Separate ListOperation from ReadOperation

Historically, since Vault's ReadOperation and ListOperation both map to
the HTTP GET method, their representation in the generated OpenAPI has
been a bit confusing.

This was partially mitigated some time ago, by making the `list` query
parameter express whether it was required or optional - but only in
a way useful to human readers - the human had to know, for example, that
the schema of the response body would change depending on whether `list`
was selected.

Now that there is an effort underway to automatically generate API
clients from the OpenAPI spec, we have a need to fix this more
comprehensively. Fortunately, we do have a means to do so - since Vault
has opinionated treatment of trailing slashes, linked to operations
being list or not, we can use an added trailing slash on the URL path to
separate list operations in the OpenAPI spec.

This PR implements that, and then fixes an operation ID which becomes
duplicated, with this change applied.

See also hashicorp/vault-client-go#174, a bug which will be fixed by
this work.

* Set further DisplayAttrs in auth/github plugin

To mask out more duplicate read/list functionality, now being separately
generated to OpenAPI client libraries as a result of this change.

* Apply requested changes to operation IDs

I'm not totally convinced its worth the extra lines of code, but
equally, I don't have strong feelings about it, so I'll just make the
change.

* Adjust logic to prevent any possibility of generating OpenAPI paths with doubled final slashes

Even in the edge case of improper use of regex patterns and operations.

* changelog

* Fix TestSudoPaths to pass again... which snowballed a bit...

Once I looked hard at it, I found it was missing several sudo paths,
which led to additional bug fixing elsewhere.

I might need to pull some parts of this change out into a separate PR
for ease of review...

* Fix other tests

* More test fixing

* Undo scope creep - back away from fixing sudo paths not shown as such in OpenAPI, at least within this PR

Just add TODO comments for now.
2023-07-13 13:36:52 -04:00
Raymond Ho
5b41148bfc
normalize LDAP auth HTTP responses (#21282) 2023-06-21 15:32:00 -07:00
Violet Hynes
3a46ecc389
Replace all remaining time.ParseDurations with parseutil.ParseDurationSeconds (#21357)
* Replace all time.ParseDurations with testutil.ParseDurationSeconds

* Changelog

* Import formatting

* Import formatting

* Import formatting

* Import formatting

* Semgrep rule that runs as part of CI
2023-06-20 14:37:46 -04:00
cui fliter
8b30657ddc
fix function name in comment (#21214)
Signed-off-by: cui fliter <imcusg@gmail.com>
2023-06-16 16:03:07 -04:00
Violet Hynes
9163a237c1
VAULT-14847 Skip cetain tests on ARM (#20990) 2023-06-05 14:02:39 -04:00
Anton Averchenkov
02742a7b9e
openapi: A few fixes for display attributes (#20549) 2023-05-11 17:20:11 -04:00
Nick Cabatoff
2f0929f3ab
Add support for docker testclusters (#20247) 2023-04-24 14:25:50 -04:00