Fix credential method selection for chained vs non-chained MFA #86
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduction
After my changes, I notice that I broke some features when I was trying to pass the session duration to my
PROFILENAME
.In this example, you can notice that we are dealing it as a
(chained MFA)
, that is not the truth.Fixed
This problem occurs because the:
aws-vault/vault/vault.go
Lines 344 to 346 in 7500108
Notice that previously I was handling both methods as chained credentials, so to use this feature
--duration
, we must use the right method at the right timeI could get it working in both cases by using
NewSessionTokenProvider
in the SOURCE profile when we haveconfig.ChainedFromProfile != nil
Cached Credentials
aws-vault/vault/sessionkeyring.go
Lines 103 to 114 in 7500108
After debugging, I found it:
Notice that we only reuse if we use the same sts get credential method,
I tried to bypass it but got a 403 Forbidden. So I'll leave it unchanged, because i cannot find a way to do it better
Conclusion
aws-vault after a login without role chaining
aws-vault after a login with role chaining
aws-vault after both
So, we must provide
Enter MFA code for arn:aws:iam::***:mfa/***:
for each method.