Aws::Auth::STSProfileCredentialsProvider does not read from ~/.aws/credentials
- Langage dominant
- C++
- Étoiles
- 2.2k
- Forks
- 1.2k
- Merge moyen
- 4 j 11 h
- PR mergées (30 j)
- 13
Description
### Describe the bug
`Aws::Auth::STSProfileCredentialsProvider` only looks at `~/.aws/config` when trying to look up a profile, but the `aws_access_key_id ` and `aws_secret_access_key` are conventionally stored in `~/.aws/credentials`. This causes applications using this provider to fail to acquire credentials, while applications built using other SDKs and the AWS CLI correctly find credentials.
### Expected Behavior
`Aws::Auth::STSProfileCredentialsProvider` should read keys from `~/.aws/credentials` when looking for a named profile.
### Current Behavior
`Aws::Auth::STSProfileCredentialsProvider` will only read keys from `~/.aws/config` when evaluating a profile.
### Reproduction Steps
The below code tells `STSProfileCredentialsProvider` to load credentials from the profile in `argv[1]`, and then print the count of buckets in an `s3:ListBuckets` call:
```c++
#include "config.h"
#include
#include
#include
#include
#include
#include
#include
int main(int argc, const char *argv[]) {
if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " PROFILENAME" << std::endl;
return 1;
}
Aws::SDKOptions options;
options.loggingOptions.logLevel = Aws::Utils::Logging::LogLevel::Debug;
Aws::InitAPI(options);
Aws::S3::S3Client client(
std::make_shared(argv[1])
);
auto outcome = client.ListBuckets();
if (outcome.IsSuccess()) {
std::cout << outcome.GetResult().GetBuckets().size() << " buckets" << std::endl;
} else {
std::cout << "Error: " << outcome.GetError() << std::endl;
}
Aws::ShutdownAPI(options);
return 0;
}
```
With `aws_access_key_id` and `aws_secret_access_key` in `~/.aws/credentials`, this code will print `0 buckets`. It will list the correct number of buckets if the key fields are instead set in `~/.aws/config`.
### Possible Solution
`STSProfileCredentialsProvider` should read the `~/.aws/credentials` file when trying to load a profile.
### Additional Information/Context
_No response_
### AWS CPP SDK version used
1.9.238
### Compiler and Version used
gcc 11.3.0
### Operating System and version
Linux 5.15.43 on x86_64
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par Aws::Auth::STSProfileCredentialsProvider et suivez la manière dont il charge un profil nommé. Reproduisez le problème avec le programme C++ fourni et les identifiants stockés dans ~/.aws/credentials. Le travail est terminé lorsque le fournisseur obtient les identifiants depuis ce fichier et que la requête S3 réussit, tout en préservant le comportement existant basé sur la configuration.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- aws, cpp
- Domaine
- authentication
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 48/100