

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Anbieterkette für Standardanmeldedaten in der AWS SDK for Java 2.x
<a name="credentials-chain"></a>

Die standardmäßige Anbieterkette für AWS Anmeldeinformationen in der sucht AWS SDK for Java 2.x automatisch an einer vordefinierten Reihenfolge von Speicherorten nach Anmeldeinformationen, sodass sich Anwendungen authentifizieren können, AWS-Services ohne dass die Quellen für Anmeldeinformationen explizit angegeben werden müssen.

Die standardmäßige Anbieterkette für Anmeldeinformationen wird von der [DefaultCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/DefaultCredentialsProvider.html)Klasse implementiert. Sie delegiert sequentiell an andere Implementierungen von Anbietern für Anmeldeinformationen, die an verschiedenen Stellen nach der Konfiguration suchen. Der erste Anbieter für Anmeldeinformationen, der alle erforderlichen Konfigurationselemente finden kann, bewirkt das Ende der Kette.

Um die standardmäßige Anbieterkette für Anmeldeinformationen zur Bereitstellung temporärer Anmeldeinformationen zu verwenden, erstellen Sie einen Service Client Builder, geben aber keinen Anbieter für Anmeldeinformationen an. Der folgende Codeausschnitt erstellt einen`DynamoDbClient`, der die standardmäßige Anbieterkette für Anmeldeinformationen verwendet, um Konfigurationseinstellungen zu finden und abzurufen.

```
// Any external Region configuration is overridden.
// The SDK uses the default credentials provider chain because no specific credentials provider is specified.
Region region = Region.US_WEST_2;
DynamoDbClient ddb = 
    DynamoDbClient.builder()
                  .region(region)
                  .build();
```

## Reihenfolge beim Abrufen der Anmeldeinformationseinstellungen
<a name="credentials-default"></a>

Die Anbieterkette für Standardanmeldedaten des SDK for Java 2.x sucht anhand einer vordefinierten Reihenfolge nach Konfigurationen in Ihrer Umgebung.

1. Java-Systemeigenschaften
   + Das SDK verwendet die [SystemPropertyCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/SystemPropertyCredentialsProvider.html)Klasse, um temporäre Anmeldeinformationen aus den `aws.accessKeyId` `aws.sessionToken` Java-Systemeigenschaften zu laden. `aws.secretAccessKey`
**Anmerkung**  
Informationen zum Einstellen von Java-Systemeigenschaften finden Sie im Tutorial [Systemeigenschaften](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html) auf der offiziellen Website der *Java-Tutorials*.

1. Umgebungsvariablen
   + Das SDK verwendet die [EnvironmentVariableCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/EnvironmentVariableCredentialsProvider.html)Klasse, um temporäre Anmeldeinformationen aus den `AWS_SESSION_TOKEN` Umgebungsvariablen `AWS_ACCESS_KEY_ID``AWS_SECRET_ACCESS_KEY`, und zu laden.

1. Web-Identitätstoken und IAM-Rollen-ARN
   + Das SDK verwendet die [WebIdentityTokenFileCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/WebIdentityTokenFileCredentialsProvider.html)Klasse, um Anmeldeinformationen zu laden, indem es mithilfe eines Web-Identitätstoken eine Rolle annimmt.
   + Der Anbieter für Anmeldeinformationen sucht nach den folgenden Umgebungsvariablen oder JVM-Systemeigenschaften:
     + `AWS_WEB_IDENTITY_TOKEN_FILE or aws.webIdentityTokenFile`
     + `AWS_ROLE_ARN` oder `aws.roleArn`
     + `AWS_ROLE_SESSION_NAME`oder `aws.roleSessionName` (optional)
   + Nachdem das SDK die Werte erfasst hat, ruft es AWS -Security-Token-Service (STS) auf und verwendet die temporären Anmeldeinformationen, die es zurückgibt, um Anfragen zu signieren.
   + Laufzeitumgebungen wie Amazon Elastic Kubernetes Service (EKS) stellen Web-Identitätstoken automatisch zur Verfügung AWS SDKs, sodass Anwendungen temporäre AWS Anmeldeinformationen abrufen können.

1. Die geteilten `credentials` Dateien und Dateien `config`
   + Das SDK verwendet die [ProfileCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/ProfileCredentialsProvider.html), um IAM Identity Center Single Sign-On-Einstellungen oder temporäre Anmeldeinformationen aus dem `[default]` Profil in den gemeinsam genutzten `credentials` Dateien zu laden. `config` 

     Das AWS SDKs Referenzhandbuch zu Tools enthält [detaillierte Informationen](https://docs.aws.amazon.com/sdkref/latest/guide/understanding-sso.html#idccredres) darüber, wie das SDK for Java mit dem IAM Identity Center Single Sign-On-Token zusammenarbeitet, um temporäre Anmeldeinformationen abzurufen, die das SDK zum Aufrufen verwendet. AWS-Services
**Anmerkung**  
Die `config` Dateien `credentials` und werden von verschiedenen AWS SDKs Tools gemeinsam genutzt. Weitere Informationen finden Sie unter [The. aws/credentials and .aws/config](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)Dateien im Referenzhandbuch AWS SDKs und im Tools-Referenzhandbuch.
   + Da ein Profil in den geteilten `config` Dateien `credentials` und Dateien viele verschiedene Einstellungen enthalten kann, werden die Benutzer an eine Reihe anderer Anbieter `ProfileCredentialsProvider` delegiert, um unter dem `[default]` Profil nach Einstellungen zu suchen:
     + **Anmeldeinformationen für Web-Identitätstoken** (Klasse`WebIdentityTokenCredentialsProvider`): Wenn das Profil `role_arn` und enthält`web_identity_token_file`.
     + **SSO-Anmeldeinformationen** (Klasse`SsoCredentialsProvider`): Wenn das Profil SSO-bezogene Eigenschaften wie`sso_role_name`, enthält. `sso_account_id`
     + **Rollenbasierte Anmeldeinformationen mit Quellprofil** (Klasse`StsAssumeRoleCredentialsProvider`): Wenn das Profil und enthält. `role_arn` `source_profile`
     + **Rollenbasierte Anmeldeinformationen mit Anmeldeinformationsquelle** (Klasse`StsAssumeRoleWithSourceCredentialsProvider`): Wenn das Profil und enthält. `role_arn` `credential_source` 
       + Wann`credential_source = Environment`: Es verwendet eine Kette von und `SystemPropertyCredentialsProvider` `EnvironmentVariableCredentialsProvider`
       + Wann`credential_source = Ec2InstanceMetadata`: Es verwendet `InstanceProfileCredentialsProvider`
       + Wann`credential_source = EcsContainer`: Es verwendet `ContainerCredentialsProvider`
     + **Anmeldeinformationen für die Konsole** (Klasse`LoginCredentialsProvider`): Wenn das Profil Folgendes enthält `login_session` 
     + **Prozessanmeldedaten** (Klasse`ProcessCredentialsProvider`): Wenn das Profil enthält`credential_process`.
     + **Sitzungsanmeldedaten** (Klasse`StaticSessionCredentialsProvider`): Wenn das Profil `aws_access_key_id``aws_secret_access_key`, und enthält`aws_session_token`.
     + **Grundlegende Anmeldeinformationen** (Klasse`StaticCredentialsProvider`): Wenn das Profil `aws_access_key_id` und enthält`aws_secret_access_key`.

1.  Amazon ECS Anmeldeinformationen für Container
   + Das SDK verwendet die [ContainerCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/ContainerCredentialsProvider.html)Klasse, um temporäre Anmeldeinformationen mithilfe der folgenden Umgebungsvariablen zu laden:

     1. `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` oder `AWS_CONTAINER_CREDENTIALS_FULL_URI`

     1. `AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE` oder `AWS_CONTAINER_AUTHORIZATION_TOKEN`

   Der ECS-Container-Agent legt automatisch die `AWS_CONTAINER_CREDENTIALS_RELATIVE_URI` Umgebungsvariable fest, die auf den Endpunkt der ECS-Anmeldeinformationen verweist. Die anderen Umgebungsvariablen werden normalerweise in bestimmten Szenarien festgelegt, in denen der standardmäßige Endpunkt für ECS-Anmeldeinformationen nicht verwendet wird.

1.  Amazon EC2 Von der IAM-Rolle bereitgestellte Anmeldeinformationen der Instanz
   + Das SDK verwendet die [InstanceProfileCredentialsProvider](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/auth/credentials/InstanceProfileCredentialsProvider.html)Klasse, um temporäre Anmeldeinformationen aus dem Metadatendienst zu laden. Amazon EC2 

1. Wenn das SDK die erforderlichen Konfigurationseinstellungen anhand der oben aufgeführten Schritte nicht finden kann, löst es eine Ausnahme mit einer Ausgabe ähnlich der folgenden aus:

   ```
   software.amazon.awssdk.core.exception.SdkClientException: Unable to load credentials from any of the providers 
   in the chain AwsCredentialsProviderChain(credentialsProviders=[SystemPropertyCredentialsProvider(), 
   EnvironmentVariableCredentialsProvider(), WebIdentityTokenCredentialsProvider(), ProfileCredentialsProvider(), 
   ContainerCredentialsProvider(), InstanceProfileCredentialsProvider()])
   ```

## Verwenden Sie den `DefaultCredentialsProvider` Code
<a name="default-credentials-provider-in-code"></a>

Sie können die standardmäßige Anbieterkette für Anmeldeinformationen explizit in Ihrem Code verwenden. Dies entspricht funktionell der Tatsache, dass Sie überhaupt keinen Anbieter für Anmeldeinformationen angeben, da das SDK `DefaultCredentialsProvider` standardmäßig verwendet. Wenn Sie ihn jedoch explizit verwenden, kann Ihr Code lesbarer und selbstdokumentierender werden. Es zeigt deutlich, dass Sie beabsichtigen, die standardmäßige Anmeldeinformationskette zu verwenden.

```
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;

public class ExplicitDefaultCredentialsExample {
    public static void main(String[] args) {
        // Explicitly create the DefaultCredentialsProvider.
        DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider
                                                                    .builder().build();

        // Use it with any service client.
        S3Client s3Client = S3Client.builder()
            .region(Region.US_WEST_2)
            .credentialsProvider(defaultCredentialsProvider)
            .build();

        // Now you can use the client with the default credentials chain.
        s3Client.listBuckets();
    }
}
```

Wenn Sie den Standardanmeldeanmeldeanbieter erstellen, können Sie weitere Konfigurationen bereitstellen:

```
DefaultCredentialsProvider customizedProvider = DefaultCredentialsProvider.builder()
    .profileName("custom-profile")  // Use a specific profile if the chain gets to the `ProfileCredentialsProvider` stage.
    .asyncCredentialUpdateEnabled(true)  // Enable async credential updates.
    .build();
```

Dieser Ansatz gibt Ihnen mehr Kontrolle und bietet gleichzeitig den Komfort der standardmäßigen Anmeldeinformationskette.