

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.

# Authentifizierung konfigurieren
<a name="configure-auth"></a>

 Der AWS SDK für Go bietet die Möglichkeit, den Dienst für das Authentifizierungsverhalten zu konfigurieren. In den meisten Fällen ist die Standardkonfiguration ausreichend, aber die Konfiguration der benutzerdefinierten Authentifizierung ermöglicht zusätzliche Funktionen, wie z. B. die Verwendung von Servicefunktionen vor der Veröffentlichung. 

## Definitionen
<a name="definitions"></a>

 Dieser Abschnitt enthält eine allgemeine Beschreibung der Authentifizierungskomponenten in der. AWS SDK für Go

### AuthScheme
<a name="authscheme"></a>

 An [AuthScheme](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#AuthScheme)ist die Schnittstelle, die den Workflow definiert, über den das SDK eine Anruferidentität abruft und sie an eine Betriebsanforderung anhängt. 

 Ein Authentifizierungsschema verwendet die folgenden Komponenten, die weiter unten ausführlich beschrieben werden: 
+  Eine eindeutige ID, die das Schema identifiziert 
+  Ein Identity Resolver, der eine beim Signieren verwendete Anruferidentität zurückgibt (z. B. Ihre AWS Anmeldeinformationen) 
+  Ein Unterzeichner, der die Identität des Anrufers tatsächlich in die Transportanfrage des Vorgangs einfügt (z. B. den HTTP-Header) `Authorization` 

 Jede Service-Client-Option enthält ein `AuthSchemes` Feld, das standardmäßig mit der Liste der von diesem Dienst unterstützten Authentifizierungsschemata gefüllt ist. 

### AuthSchemeResolver
<a name="authschemeresolver"></a>

 Jede Service-Client-Option enthält ein `AuthSchemeResolver` Feld. Diese pro Dienst definierte Schnittstelle ist die API, die vom SDK aufgerufen wird, um die möglichen Authentifizierungsoptionen für jeden Vorgang zu ermitteln. 

**Wichtig**  
 Der Auth-Schema-Resolver schreibt NICHT vor, welches Authentifizierungsschema verwendet wird. [Er gibt eine Liste von Schemata zurück, die verwendet werden *können* („Optionen“). Das endgültige Schema wird durch einen festen Algorithmus ausgewählt, der hier beschrieben wird.](#auth-scheme-resolution-workflow) 

### Option
<a name="option"></a>

 Eine [Option](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option), die von einem Aufruf von zurückgegeben wird`ResolverAuthSchemes`, stellt eine mögliche Authentifizierungsoption dar. 

 Eine Option besteht aus drei Informationssätzen: 
+  Eine ID, die das mögliche Schema darstellt 
+  Ein undurchsichtiger Satz von Eigenschaften, der dem Identity Resolver des Schemas zur Verfügung gestellt werden soll 
+  Ein undurchsichtiger Satz von Eigenschaften, der dem Unterzeichner des Schemas zur Verfügung gestellt werden soll 

#### Ein Hinweis zu Eigenschaften
<a name="a-note-on-properties"></a>

 In 99% der Anwendungsfälle müssen sich Anrufer keine Gedanken über die undurchsichtigen Eigenschaften bei der Identitätsauflösung und beim Signieren machen. Das SDK ruft die erforderlichen Eigenschaften für jedes Schema ab und übergibt sie an die stark typisierten Schnittstellen, die im SDK verfügbar sind. [Beispielsweise codiert der standardmäßige Auth Resolver für Dienste die Option Sigv4 so, dass sie über Unterzeichnereigenschaften für den Signaturnamen und die Region verfügt, deren Werte an die vom Client konfigurierte Version v4 übergeben werden. HTTPSigner](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option)Implementierung, wenn SigV4 ausgewählt ist. 

### Identität
<a name="identity"></a>

 Eine [Identität](https://pkg.go.dev/github.com/aws/smithy-go/auth#Identity) ist eine abstrakte Darstellung dessen, wer der SDK-Aufrufer ist. 

 Der im SDK am häufigsten verwendete Identitätstyp ist eine Reihe von`aws.Credentials`. In den meisten Anwendungsfällen muss sich der Aufrufer nicht mit `Identity` einer Abstraktion befassen und kann direkt mit den konkreten Typen arbeiten. 

**Anmerkung**  
 Um die Abwärtskompatibilität zu wahren und API-Verwirrung zu vermeiden, erfüllt der AWS SDK-spezifische Identitätstyp die Schnittstelle `aws.Credentials` nicht direkt. `Identity` Diese Zuordnung wird intern abgewickelt. 

### IdentityResolver
<a name="identityresolver"></a>

 [IdentityResolver](https://pkg.go.dev/github.com/aws/smithy-go/auth#IdentityResolver)ist die Schnittstelle, über die ein abgerufen `Identity` wird. 

 [Konkrete Versionen von `IdentityResolver` existieren im SDK in stark typisierter Form (z. B. aws. CredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#CredentialsProvider)), das SDK verarbeitet diese Zuordnung intern. 

 Ein Aufrufer muss die `IdentityResolver` Schnittstelle nur direkt implementieren, wenn er ein externes Authentifizierungsschema definiert. 

### Signer
<a name="signer"></a>

 Der [Unterzeichner](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#Signer) ist die Schnittstelle, über die eine Anfrage um den abgerufenen Anrufer ergänzt wird. `Identity` 

 [Konkrete Versionen von `Signer` existieren im SDK in stark typisierter Form (z. B. v4). HTTPSigner](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws/signer/v4#HTTPSigner)), das SDK verarbeitet diese Zuordnung intern. 

 Ein Aufrufer muss die `Signer` Schnittstelle nur direkt implementieren, wenn er ein externes Authentifizierungsschema definiert. 

### AuthResolverParameters
<a name="authresolverparameters"></a>

 Jeder Dienst benötigt einen bestimmten Satz von Eingaben, die an seine Auflösungsfunktion übergeben werden, die in jedem Servicepaket als definiert ist. `AuthResolverParameters` 

 Die Basis-Resolverparameter lauten wie folgt: 


|  Name  |  Typ  |  description  | 
| --- | --- | --- | 
|  Operation  |  string  |  Der Name der Operation, die aufgerufen wird.  | 
|  Region  |  string  |  Die AWS Region des Kunden. Nur für Dienste vorhanden, die SigV4 [A] verwenden.  | 

 Wenn Sie Ihren eigenen Resolver implementieren, sollten Sie niemals eine eigene Instanz seiner Parameter erstellen müssen. Das SDK bezieht diese Werte pro Anfrage und leitet sie an Ihre Implementierung weiter. 

## Arbeitsablauf zur Auflösung des Authentifizierungsschemas
<a name="auth-scheme-resolution-workflow"></a>

 Wenn Sie einen AWS Dienstvorgang über das SDK aufrufen, erfolgt die folgende Abfolge von Aktionen, nachdem die Anforderung serialisiert wurde: 

1.  Das SDK ruft die `AuthSchemeResolver.ResolveAuthSchemes()` API des Clients auf und bezieht die Eingabeparameter nach Bedarf, um eine Liste möglicher [Optionen](https://pkg.go.dev/github.com/aws/smithy-go/auth#Option) für den Vorgang zu erhalten. 

1.  Das SDK durchläuft diese Liste und wählt das erste Schema aus, das die folgenden Bedingungen erfüllt. 
   +  Ein Schema mit übereinstimmender ID ist in der eigenen Liste des Kunden vorhanden `AuthSchemes` 
   +  Der Identity Resolver des Schemas existiert in den Optionen des Clients (ist nicht vorhanden`nil`) (wird über die `GetIdentityResolver` Methode des Schemas überprüft, die Zuordnung zu den oben beschriebenen konkreten Identity-Resolver-Typen erfolgt intern) (1) 

1.  Unter der Annahme, dass ein praktikables Schema ausgewählt wurde, ruft das SDK seine `GetIdentityResolver()` API auf, um die Identität des Aufrufers abzurufen. Beispielsweise wird das integrierte SigV4-Authentifizierungsschema intern dem Anbieter des Kunden zugeordnet. `Credentials` 

1.  Das SDK ruft den Identity Resolver auf `GetIdentity()` (z. B. `aws.CredentialProvider.Retrieve()` für Sigv4). 

1.  Das SDK ruft die Endpunkt-Resolver `ResolveEndpoint()` auf, um den Endpunkt für die Anfrage zu finden. Der Endpunkt kann zusätzliche Metadaten enthalten, die den Signaturprozess beeinflussen (z. B. einen eindeutigen Signaturnamen für S3 Object Lambda). 

1.  Das SDK ruft die `Signer()` API des Authentifizierungsschemas auf, um den Unterzeichner abzurufen, und verwendet seine `SignRequest()` API, um die Anfrage mit der zuvor abgerufenen Anruferidentität zu signieren. 

 (1) Wenn das SDK auf die anonyme Option (ID`smithy.api#noAuth`) in der Liste stößt, wird sie automatisch ausgewählt, da es keinen entsprechenden Identity Resolver gibt. 

## Wird nativ unterstützt `AuthScheme`
<a name="natively-supported-authschemes"></a>

 Die folgenden Authentifizierungsschemata werden nativ unterstützt von. AWS SDK für Go


|  Name  |  Schema-ID  |  Identitätsauflöser  |  Signer  |  Hinweise  | 
| --- | --- | --- | --- | --- | 
|  [SigV4](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html)  |  aws.auth\$1sigv4  |  [aws. CredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws#Credentials)  |  [v4. HTTPSigner](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/aws/signer/v4#Signer)  |  Die aktuelle Standardeinstellung für die meisten AWS Serviceoperationen.  | 
|  SigV4a  |  aws.auth\$1sigv4a  |  war. CredentialsProvider  |  –  |  Die Verwendung von SigV4a ist derzeit begrenzt, die Signer-Implementierung ist intern. In dieser [Ankündigung](https://github.com/aws/aws-sdk-go-v2/discussions/2812) finden Sie ein neues Opt-In-Modul aws-http-auth, das allgemeine Verwendungszwecke APIs für das Signieren von HTTP-Anfragen aufzeigt.  | 
|  SIGV4Express  |  com.amazonaws.s3\$1sigv4express  |  [s3. ExpressCredentialsProvider](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/s3#ExpressCredentialsProvider)  |  v4. HTTPSigner  |  Wird für [Express One Zone](https://aws.amazon.com/s3/storage-classes/express-one-zone/) verwendet.  | 
|  HTTP-Träger  |  smithy.api\$1httpBearerAuth  |  [Schmiedeträger. TokenProvider](https://pkg.go.dev/github.com/aws/smithy-go/auth/bearer#TokenProvider)  |  [Smithy Bearer.Signer](https://pkg.go.dev/github.com/aws/smithy-go/auth/bearer#Signer)  |  [Wird von Codecatalyst verwendet.](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/codecatalyst)  | 
|  Anonym  |  smithy.api\$1noAuth  |  –  |  –  |  Keine Authentifizierung — Es ist keine Identität erforderlich, und die Anfrage ist nicht signiert oder authentifiziert.  | 

### Konfiguration der Identität
<a name="identity-configuration"></a>

 AWS SDK für Go In werden die Identitätskomponenten eines Authentifizierungsschemas im SDK-Client `Options` konfiguriert. Das SDK nimmt die Werte für diese Komponenten automatisch auf und verwendet sie für das Schema, das es auswählt, wenn eine Operation aufgerufen wird. 

**Anmerkung**  
 Aus Gründen der Abwärtskompatibilität erlaubt das SDK implizit die Verwendung des anonymen Authentifizierungsschemas, wenn keine Identitätsauflösungen konfiguriert sind. Dies kann manuell erreicht werden, indem alle Identitätsauflösungen auf dem Computer eines Clients eingerichtet werden `nil` (der Sigv4-Identitätsauflöser kann auch auf eingestellt werden). `Options` `aws.AnonymousCredentials{}` 

### Konfiguration des Unterzeichners
<a name="signer-configuration"></a>

 In AWS SDK für Go werden die Unterzeichnerkomponenten eines Authentifizierungsschemas im SDK-Client konfiguriert. `Options` Das SDK nimmt die Werte für diese Komponenten automatisch auf und verwendet sie für das Schema, das es auswählt, wenn eine Operation aufgerufen wird. Es ist keine zusätzliche Konfiguration erforderlich. 

#### Benutzerdefiniertes Authentifizierungsschema
<a name="custom-auth-scheme"></a>

 Um ein benutzerdefiniertes Authentifizierungsschema zu definieren und es für die Verwendung zu konfigurieren, muss der Aufrufer Folgendes tun: 

1.  Definieren Sie eine Implementierung [AuthScheme](https://pkg.go.dev/github.com/aws/smithy-go/transport/http#AuthScheme) 

1.  Registrieren Sie das Schema in der `AuthSchemes` Liste des SDK-Clients 

1.  Instrumentieren Sie die SDK-Clients`AuthSchemeResolver`, um gegebenenfalls eine Authentifizierung `Option` mit der ID des Schemas zurückzugeben 

**Warnung**  
 Die folgenden Dienste haben ein einzigartiges oder benutzerdefiniertes Authentifizierungsverhalten. Wir empfehlen Ihnen, an die Standardimplementierung zu delegieren und einen entsprechenden Wrapping vorzunehmen, falls Sie ein benutzerdefiniertes Authentifizierungsverhalten benötigen:   


|  Service  |  Hinweise  | 
| --- | --- | 
|  S3  |  Bedingte Verwendung von SigV4a und SigV4Express, abhängig von der Operationseingabe.  | 
|  EventBridge  |  Bedingte Verwendung von SigV4a, abhängig von der Betriebseingabe.  | 
|  Cognito  |  Bestimmte Operationen sind nur anonym.  | 
|  SSO  |  Bestimmte Operationen sind nur anonym.  | 
|  STS  |  Bestimmte Operationen sind nur anonym.  | 