aws / aws/aws-sdk-cpp

Aws::Auth::STSProfileCredentialsProvider does not read from ~/.aws/credentials

Ouverte
#1,963 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub
bug p2
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.