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
Der AWS SDK for 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
Dieser Abschnitt enthält eine allgemeine Beschreibung der Authentifizierungskomponenten in der. AWS SDK for Go
AuthScheme
An AuthScheme
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
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.
Option
Eine OptionResolverAuthSchemes, 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
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
Identität
Eine Identität
Der im SDK am häufigsten verwendete Identitätstyp ist eine Reihe vonaws.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
IdentityResolverIdentity wird.
Konkrete Versionen von IdentityResolver existieren im SDK in stark typisierter Form (z. B. aws. CredentialsProvider
Ein Aufrufer muss die IdentityResolver Schnittstelle nur direkt implementieren, wenn er ein externes Authentifizierungsschema definiert.
Signer
Der UnterzeichnerIdentity
Konkrete Versionen von Signer existieren im SDK in stark typisierter Form (z. B. v4). HTTPSigner
Ein Aufrufer muss die Signer Schnittstelle nur direkt implementieren, wenn er ein externes Authentifizierungsschema definiert.
AuthResolverParameters
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
Wenn Sie einen AWS Dienstvorgang über das SDK aufrufen, erfolgt die folgende Abfolge von Aktionen, nachdem die Anforderung serialisiert wurde:
-
Das SDK ruft die
AuthSchemeResolver.ResolveAuthSchemes()API des Clients auf und bezieht die Eingabeparameter nach Bedarf, um eine Liste möglicher Optionenfür den Vorgang zu erhalten. -
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 dieGetIdentityResolverMethode des Schemas überprüft, die Zuordnung zu den oben beschriebenen konkreten Identity-Resolver-Typen erfolgt intern) (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 -
Das SDK ruft den Identity Resolver auf
GetIdentity()(z. B.aws.CredentialProvider.Retrieve()für Sigv4). -
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). -
Das SDK ruft die
Signer()API des Authentifizierungsschemas auf, um den Unterzeichner abzurufen, und verwendet seineSignRequest()API, um die Anfrage mit der zuvor abgerufenen Anruferidentität zu signieren.
(1) Wenn das SDK auf die anonyme Option (IDsmithy.api#noAuth) in der Liste stößt, wird sie automatisch ausgewählt, da es keinen entsprechenden Identity Resolver gibt.
Wird nativ unterstützt AuthScheme
Die folgenden Authentifizierungsschemata werden nativ unterstützt von. AWS SDK for Go
| Name | Schema-ID | Identitätsauflöser | Signer | Hinweise |
|---|---|---|---|---|
| SigV4 |
aws.auth#sigv4
|
aws. CredentialsProvider |
v4. HTTPSigner |
Die aktuelle Standardeinstellung für die meisten AWS Serviceoperationen. |
| SigV4a |
aws.auth#sigv4a
|
war. CredentialsProvider | – | Die Verwendung von SigV4a ist derzeit begrenzt, die Signer-Implementierung ist intern. In dieser Ankündigung |
| SIGV4Express |
com.amazonaws.s3#sigv4express
|
s3. ExpressCredentialsProvider |
v4. HTTPSigner | Wird für Express One Zone |
| HTTP-Träger |
smithy.api#httpBearerAuth
|
Schmiedeträger. TokenProvider |
Smithy Bearer.Signer |
Wird von Codecatalyst verwendet. |
| Anonym |
smithy.api#noAuth
|
– | – | Keine Authentifizierung — Es ist keine Identität erforderlich, und die Anfrage ist nicht signiert oder authentifiziert. |
Konfiguration der Identität
AWS SDK for 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
In AWS SDK for 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
Um ein benutzerdefiniertes Authentifizierungsschema zu definieren und es für die Verwendung zu konfigurieren, muss der Aufrufer Folgendes tun:
-
Definieren Sie eine Implementierung AuthScheme
-
Registrieren Sie das Schema in der
AuthSchemesListe des SDK-Clients -
Instrumentieren Sie die SDK-Clients
AuthSchemeResolver, um gegebenenfalls eine AuthentifizierungOptionmit 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. |