View a markdown version of this page

Application-specific Einstellungen mit App-Clients - Amazon Cognito

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.

Application-specific Einstellungen mit App-Clients

Ein Benutzerpool-App-Client ist eine Konfiguration innerhalb eines Benutzerpools, die mit einer Mobil- oder Webanwendung interagiert, welche sich bei Amazon Cognito authentifiziert. App-Clients können authentifizierte und nicht authentifizierte API-Operationen aufrufen und einige oder alle Attribute Ihrer Benutzer lesen oder ändern. Ihre App muss sich bei Operationen gegenüber dem App-Client identifizieren, um sich zu registrieren, anzumelden und mit vergessenen Passwörtern umzugehen. Diese API-Anforderungen müssen die Selbstidentifikation mit einer App-Client-ID und die Autorisierung mit einem optionalen Client-Geheimnis beinhalten. Sie müssen App-Client-IDs oder -Geheimnisse sichern, sodass nur autorisierte Client-Apps diese nicht authentifizierten Operationen aufrufen können. Wenn Sie Ihre App so konfigurieren, dass authentifizierte API-Anfragen mit AWS Anmeldeinformationen signiert werden, müssen Sie Ihre Anmeldeinformationen außerdem vor Benutzereinsicht schützen.

Sie können mehrere Apps für einen Benutzerpool erstellen. Ein App-Client kann mit der Codeplattform einer App oder einem separaten Mandanten in Ihrem Benutzerpool verknüpft sein. Beispielsweise können Sie eine App für eine serverseitige Anwendung und eine Android-App erstellen. Jede Anwendung hat eine eigene App-Client-ID.

Sie können Einstellungen für die folgenden Benutzerpoolfunktionen auf App-Client-Ebene anwenden:

Arten von App-Clients

Wenn Sie einen App-Client in Amazon Cognito erstellen, können Sie Optionen basierend auf den Standard-OAuth-Clienttypen öffentlicher Client und vertraulicher Client vorab belegen. Konfigurieren eines vertraulichen Clients mit einem Clientschlüssel. Weitere Informationen zu Client-Arten finden Sie unter IETF RFC 6749 #2.1.

Öffentlicher Client

Ein öffentlicher Client läuft in einem Browser oder auf einem mobilen Gerät. Da er keine vertrauenswürdigen serverseitigen Ressourcen hat, hat es auch keinen Clientschlüssel.

Vertraulicher Client

Ein vertraulicher Client verfügt über serverseitige Ressourcen, denen mit einem Clientschlüssel für nicht authentifizierte API-Vorgänge vertraut werden kann. Die App kann als Daemon oder Shell-Skript auf Ihrem Backend-Server ausgeführt werden.

Clientschlüssel

Ein geheimer Client-Schlüssel ist eine feste Zeichenfolge, die Ihre App in allen API-Anfragen an den App-Client verwenden muss. Ihr App-Client muss einen Clientschlüssel haben, um client_credentials-Erteilungen auszuführen. Weitere Informationen finden Sie unter IETF RFC 6749 #2.3.1.

Jeder App-Client kann bis zu zwei Secrets gleichzeitig haben, sodass die Secret-Rotation ohne Ausfallzeiten möglich ist. Wenn Sie einen App-Client erstellen, können Sie entweder Amazon Cognito einen geheimen Wert generieren lassen oder Ihren eigenen benutzerdefinierten geheimen Wert angeben. Nach der Erstellung einer App können die Schlüssel nicht mehr geändert werden. Sie können mit der AddUserPoolClientSecretAPI-Operation ein zweites Geheimnis hinzufügen, um Geheimnisse zu rotieren. Wenn Sie ein Geheimnis hinzufügen, können Sie entweder Amazon Cognito einen geheimen Wert generieren lassen oder Ihren eigenen benutzerdefinierten geheimen Wert angeben. Verwenden Sie den DeleteUserPoolClientSecretAPI-Vorgang, um ein Geheimnis zu löschen. Sie können das einzige Geheimnis, das einem App-Client zugeordnet ist, nicht löschen. Ferner sind Sie in der Lage, eine Anwendung zu löschen und so den Zugriff über Apps zu blockieren, welche die jeweilige App-Client-ID verwenden.

Anmerkung

Die Amazon Cognito Cognito-Konsole erstellt App-Clients mit Client-Geheimnissen, wenn Sie die Optionen Traditionelle Webanwendung und Machine-to-machineAnwendung als Anwendungstyp auswählen. Wählen Sie eine dieser Optionen, um einen geheimen Client-Schlüssel zu generieren, oder erstellen Sie den Client programmgesteuert mit CreateUserPoolClientund stellen Sie ihn auf ein. GenerateSecret true

Wichtig

Sie können nicht ändern, ob ein App-Client über einen geheimen Clientschlüssel verfügt, nachdem Sie den App-Client erstellt haben. Durch den UpdateUserPoolClientVorgang kann kein geheimer Clientschlüssel hinzugefügt oder entfernt werden. Um diese Konfiguration zu ändern, erstellen Sie einen neuen App-Client. Sie müssen den Benutzerpool nicht neu erstellen, und Ihre anderen App-Clients sind davon nicht betroffen.

Sie können einen vertraulichen Client und einen Clientschlüssel mit einer öffentlichen App verwenden. Verwenden Sie einen CloudFront Amazon-Proxy, um einen SECRET_HASH In-Transit hinzuzufügen. Weitere Informationen finden Sie im AWS Blog unter Schützen öffentlicher Clients für Amazon Cognito mithilfe eines CloudFront Amazon-Proxys.

JSON-Webtoken

Amazon-Cognito-App-Clients können JSON-Webtoken (JWTs) der folgenden Arten ausgeben.

Identitätstoken (ID)

Eine überprüfbare Aussage, dass Ihr Benutzer in Ihrem Benutzerpool authentifiziert wurde. OpenID Connect (OIDC) hat die ID-Token-Spezifikation zu den in OAuth 2.0 definierten Standards für Zugriffs- und Aktualisierungstoken hinzugefügt. Das ID-Token enthält Identitätsinformationen wie Benutzerattribute, die Ihre App verwenden kann, um ein Benutzerprofil zu erstellen und Ressourcen bereitzustellen. Weitere Informationen finden Sie unter Grundlegendes zum Identitätstoken (ID).

Zugriffstoken

Eine überprüfbare Erklärung zu den Zugriffsrechten Ihres Benutzers. Das Zugriffstoken enthält Bereiche, ein Feature von OIDC und OAuth 2.0. Ihre App kann Back-End-Ressourcen Bereiche präsentieren und nachweisen, dass Ihr Benutzerpool einen Benutzer oder eine Maschine autorisiert hat, um auf Daten von einer API oder auf ihre eigenen Benutzerdaten zuzugreifen. Ein Zugriffstoken mit benutzerdefinierten Bereichen, häufig aus einer Erteilung von M2M-Client-Anmeldeinformationen, autorisiert den Zugriff auf einen Ressourcenserver. Weitere Informationen finden Sie unter Das Zugriffstoken verstehen.

Aktualisierungstoken

Eine verschlüsselte Erklärung zur Erstauthentifizierung, die Ihre App Ihrem Benutzerpool präsentieren kann, wenn die Token Ihrer Benutzer ablaufen. Eine Anforderung für ein Aktualisierungstoken gibt neue, noch nicht abgelaufene Zugriffs- und ID-Token zurück. Weitere Informationen finden Sie unter Tokens aktualisieren.

Sie können den Ablauf dieser Token für jeden App-Client im App-Client-Menü Ihres Benutzerpools in der Amazon Cognito Cognito-Konsole festlegen.

App-Client-Bedingungen

Die folgenden Begriffe sind verfügbare Eigenschaften von App-Clients in der Amazon-Cognito-Konsole.

Zulässige Callback-URLs

Eine Rückruf-URL gibt an, wohin der Benutzer nach einer erfolgreichen Anmeldung umgeleitet wird. Wählen Sie mindestens eine Rückruf-URL aus. Die Rückruf-URL muss:

  • Eine absolute URI sein.

  • Vorab bei einem Client registriert worden sein.

  • Sie darf keine Fragment-Komponente enthalten.

Weitere Informationen finden Sie unter OAuth 2.0 – redirection endpoint (OAuth 2.0 – Umleitungsendpunkt).

Amazon Cognito fordert HTTPS statt HTTP, außer nur für Testzwecke für http://localhost.

App-Callback-URLs wie myapp://example werden ebenfalls unterstützt.

Zulässige Abmelde-URLs

Eine Abmelde-URL gibt an, wohin Ihr Benutzer nach der Abmeldung umgeleitet werden soll.

Festlegen von Lese- und Schreibberechtigungen

Ihr Benutzerpool hat möglicherweise viele Kunden, von denen jeder seinen eigenen App-Client hat und. IdPs Sie können Ihren App-Client so konfigurieren, dass er nur Lese- und Schreibzugriff auf die Benutzerattribute hat, die für die App relevant sind. In Fällen wie der Machine-to-Machine (M2M)-Autorisierung können Sie Zugriff auf keines Ihrer Benutzerattribute gewähren.

Überlegungen zur Konfiguration der Lese- und Schreibberechtigungen für Attribute
  • Wenn Sie einen App-Client erstellen und die Lese- und Schreibberechtigungen für Attribute nicht anpassen, gewährt Amazon Cognito Lese- und Schreibberechtigungen für alle Benutzerpool-Attribute.

  • Sie können Schreibzugriff für unveränderliche benutzerdefinierte Attribute gewähren. Ihr App-Client kann Werte in unveränderliche Attribute schreiben, wenn Sie einen Benutzer erstellen oder registrieren. Danach können Sie keine Werte mehr in unveränderliche benutzerdefinierte Attribute für den Benutzer schreiben.

  • App-Clients müssen Schreibzugriff auf die erforderlichen Attribute in Ihrem Benutzerpool haben. Die Amazon-Cognito-Konsole legt die erforderlichen Attribute automatisch als schreibbar fest.

  • Sie können einem App-Client nicht erlauben, Schreibzugriff auf email_verified oder phone_number_verified zu haben. Ein Benutzerpool-Administrator kann diese Werte ändern. Ein Benutzer kann den Wert dieser Attribute nur durch Attributüberprüfung ändern.

Authentifizierungsabläufe

Die Methoden, die Ihr App-Client für die Anmeldung zulässt. Ihre App kann die Authentifizierung mit Benutzername und Passwort, OTPs für E-Mail- und SMS-Nachrichten, Passkey-Authentifikatoren, benutzerdefinierte Authentifizierung mit Lambda-Triggern und Token-Aktualisierung unterstützen. Verwenden Sie als bewährte Sicherheitspraxis die SRP-Authentifizierung für die Authentifizierung von Benutzernamen und Passwörtern in maßgeschneiderten Anwendungen.

Benutzerdefinierte Bereiche

Ein benutzerdefinierter Bereich ist ein Bereich, den Sie unter Resource Servers (Ressourcen-Server) für Ihre eigenen Ressourcenserver definieren. Das Format istresource-server-identifier/scope. Siehe Bereiche, M2M und Ressourcenserver.

Standard-Umleitungs-URI

Ersetzt den redirect_uri Parameter in Authentifizierungsanfragen für Benutzer durch Drittanbieter IdPs. Konfigurieren Sie diese App-Client-Einstellung mit dem DefaultRedirectURI Parameter einer CreateUserPoolClientoder UpdateUserPoolClientAPI-Anfrage. Diese URL muss auch Mitglied des CallbackURLs für Ihren App-Client sein. Amazon Cognito leitet authentifizierte Sitzungen an diese URL weiter, wenn:

  1. Ihrem App-Client ist ein Identitätsanbieter zugewiesen und mehrere Callback-URLs definiert. Ihr Benutzerpool leitet Authentifizierungsanfragen an den Autorisierungsserver an den Standard-Umleitungs-URI weiter, wenn sie keinen redirect_uri Parameter enthalten.

  2. Ihrem App-Client ist ein Identitätsanbieter zugewiesen und eine Rückruf-URL definiert. In diesem Szenario ist es nicht erforderlich, eine Standard-Callback-URL zu definieren. Anfragen, die keinen redirect_uri Parameter enthalten, leiten zu der einen verfügbaren Callback-URL weiter.

Identitätsanbieter

Sie können einige oder alle externen Identitätsanbieter (IdPs) Ihres Benutzerpools auswählen, um Ihre Benutzer zu authentifizieren. Ihr App-Client kann auch nur lokale Benutzer in Ihrem Benutzerpool authentifizieren. Wenn Sie Ihrem App-Client einen IdP hinzufügen, können Sie Autorisierungslinks zum IdP generieren und ihn auf Ihrer verwalteten Anmeldeseite anzeigen. Sie können mehrere zuweisen IdPs, müssen jedoch mindestens einen zuweisen. Weitere Informationen zur Verwendung von Extern IdPs finden Sie unterBenutzerpool-Anmeldung mit externen Identitätsanbietern.

OpenID-Connect-Bereiche

Wählen Sie einen oder mehrere der folgenden OAuth-Bereiche aus, um die Zugriffsprivilegien, die für Zugriffs-Token eingestellt werden können, festzulegen.

  • Der openid-Bereich gibt an, dass Sie ein ID-Token und die eindeutige ID eines Benutzers abrufen möchten. Außerdem werden alle oder einige Benutzerattribute angefordert, je nachdem welche zusätzlichen Bereiche in der Anfrage enthalten sind. Amazon Cognito gibt kein ID-Token zurück, es sei denn, Sie fordern den openid-Bereich an. Der openid-Bereich autorisiert Ansprüche auf strukturelle ID-Tokens wie Ablauf und Schlüssel-ID und bestimmt die Benutzerattribute, die Sie in einer Antwort von UserInfo-Endpunkt erhalten.

    • Wenn openid der einzige angeforderte Bereich ist, füllt Amazon Cognito das ID-Token mit allen Benutzerattributen, die der aktuelle App-Client lesen kann. Die userInfo-Antwort auf ein Zugriffs-Token mit nur diesem Bereich gibt alle Benutzerattribute zurück.

    • Wenn Sie openid mit anderen Bereichen wie phone, email oder profile anfordern, geben das ID-Token und userInfo die eindeutige ID des Benutzers und die durch die zusätzlichen Bereiche definierten Attribute zurück.

  • Der phone-Bereich genehmigt den Zugriff auf phone_number und phone_number_verified-Anfragen. Dieser Bereich kann ausschließlich mit dem openid-Bereich beantragt werden.

  • Der email-Bereich genehmigt den Zugriff auf email und email_verified-Anfragen. Dieser Bereich kann ausschließlich mit dem openid-Bereich beantragt werden.

  • Der aws.cognito.signin.user.admin Geltungsbereich gewährt Zugriff auf API-Operationen für Amazon Cognito Cognito-Benutzerpools, für die Zugriffstoken erforderlich sind, z. B. UpdateUserAttributesund VerifyUserAttribute.

  • Der profile-Bereich gewährt Zugriff auf alle Benutzerattribute, die vom Client gelesen werden können. Dieser Bereich kann ausschließlich mit dem openid-Bereich beantragt werden.

Weitere Informationen über Bereiche finden Sie in der Liste der Standard-OIDC-Bereiche.

Arten von OAuth-Erteilungen

Eine OAuth-Erteilung ist eine Authentifizierungsmethode, mit der Benutzerpool-Token abgerufen werden. Amazon Cognito unterstützt die folgenden Arten von Erteilungen. Um diese OAuth-Erteilungen in Ihre App zu integrieren, müssen Sie Ihrem Benutzerpool eine Domain hinzufügen.

Erteilung des Autorisierungscodes

Durch die Gewährung des Autorisierungscodes wird ein Code generiert, den Ihre App bei der/beim Token-Endpunkt gegen Benutzerpool-Token eintauschen kann. Wenn Sie einen Autorisierungscode austauschen, erhält Ihre App die ID, den Zugriff und die Aktualisierungs-Token. Dieser OAuth-Prozess findet ebenso wie die implizite Erteilung in den Browsern Ihrer Benutzer statt. Die Gewährung eines Autorisierungscodes ist die sicherste Art von Erteilung, die Amazon Cognito bietet, da Token in den Sitzungen Ihrer Benutzer nicht sichtbar sind. Stattdessen generiert Ihre App die Anfrage, die Token zurückgibt, und kann sie im geschützten Speicher zwischenspeichern. Weitere Informationen finden Sie unter Autorisierungscode in IETF RFC 6749 #1.3.1.

Anmerkung

Als bewährte Sicherheitsmethode in Apps für öffentliche Clients sollten Sie nur den OAuth-Prozess für die Gewährung von Autorisierungscodes aktivieren und Proof Key for Code Exchange (PKCE) implementieren, um den Austausch von Token einzuschränken. Mit PKCE kann ein Client nur dann einen Autorisierungscode austauschen, wenn er dem Token-Endpunkt denselben geheimen Schlüssel zur Verfügung gestellt hat, das in der ursprünglichen Authentifizierungsanfrage angegeben wurde. Weitere Informationen zu PKCE finden Sie unter IETF RFC 7636.

Implizite Erteilung

Durch die implizite Erteilung wird der Browsersitzung Ihres Benutzers direkt aus der/dem Autorisieren des Endpunkts ein Zugriffs- und ID-Token, jedoch kein Aktualisierungstoken, zur Verfügung gestellt. Durch eine implizite Erteilung muss keine separate Anfrage an den Token-Endpunkt mehr gestellt werden. Sie ist jedoch nicht mit PKCE kompatibel und gibt keine Aktualisierungstoken zurück. Diese Art der Erteilung eignet sich für Testszenarien und Anwendungsarchitekturen, bei denen Autorisierungscode-Erteilungen nicht abgeschlossen werden können. Weitere Informationen finden Sie unter Implizite Erteilung in IETF RFC 6749 #1.3.2. Sie können die Autorisierungscode-Erteilung und die implizite Codeerteilung in einem App-Client aktivieren und dann beide Erteilungen nach Bedarf verwenden.

Erteilung von Client-Anmeldeinformationen

Die Gewährung der Kundenanmeldedaten gilt für die Kommunikation zwischen Maschinen (M2M). Authorization-code und implizite Zuschüsse stellen Token an authentifizierte menschliche Benutzer aus. Kundenanmeldeinformationen gewähren eine bereichsabhängige Autorisierung von einem nicht interaktiven System zu einer API. Ihre App kann Kundenanmeldeinformationen direkt vom Token-Endpunkt anfordern und erhält ein Zugriffstoken. Weitere Informationen finden Sie unter Client-Anmeldeinformationen in IETF RFC 6749 #1.3.4. Sie können die Gewährung von Client-Anmeldeinformationen nur in App-Clients aktivieren, die über einen geheimen Client-Schlüssel verfügen und die weder Autorisierungscode- noch implizite Erteilungen unterstützen. Als Alternative, für die keine Benutzerpool-Domain erforderlich ist, kann ein App-Client mit einem geheimen Client-Schlüssel und dem ALLOW_CLIENT_TOKEN_AUTH Authentifizierungsablauf über die API-Operation M2M-Zugriffstoken abrufen. GetClientToken

Anmerkung

Da Sie den Prozess für Client-Anmeldeinformationen nicht als Benutzer aufrufen, können Sie mit dieser Erteilung nur benutzerdefinierte Bereiche zu Zugriffstoken hinzufügen. Ein benutzerdefinierter Bereich ist ein Bereich, den Sie für Ihre eigenen Ressourcenserver definieren. Standardbereiche wie openid und profile gelten nicht für nichtmenschliche Benutzer.

Da es sich bei ID-Token um eine Validierung von Benutzerattributen handelt, sind sie für die M2M-Kommunikation nicht relevant, und wenn einem Kunden Anmeldeinformationen gewährt werden, werden sie auch nicht ausgestellt. Siehe Bereiche, M2M und Ressourcenserver.

Die Gewährung von Kundendaten erhöht Ihre AWS Rechnung um zusätzliche Kosten. Weitere Informationen finden Sie unter Amazon Cognito – Preise.

Erstellen eines App-Clients

AWS-Managementkonsole
So erstellen Sie einen App-Client (Konsole)
  1. Melden Sie sich bei der Amazon-Cognito-Konsole an. Wenn Sie dazu aufgefordert werden, geben Sie Ihre AWS Anmeldeinformationen ein.

  2. Wählen Sie User Pools (Benutzerpools) aus.

  3. Wählen Sie einen vorhandenen Benutzerpool aus der Liste aus oder erstellen Sie einen neuen Benutzerpool. Bei beiden Optionen werden Sie aufgefordert, einen App-Client mit anwendungsspezifischen Einstellungen zu konfigurieren.

  4. Wählen Sie einen Anwendungstyp, der Ihrer Anwendungsarchitektur entspricht.

    Wichtig

    Ihre Auswahl des Anwendungstyps legt auch Standardwerte für andere App-Client-Einstellungen fest, einschließlich der Frage, ob Amazon Cognito einen geheimen Clientschlüssel generiert. Herkömmliche Webanwendungen und Machine-to-machine Anwendungstypen generieren einen geheimen Clientschlüssel. Weitere Informationen finden Sie unter Arten von App-Clients.

  5. Benennen Sie Ihre Anwendung mit einer benutzerfreundlichen Kennung.

  6. Geben Sie eine Rückgabe-URL ein.

  7. Wählen Sie Create app client. Sie können erweiterte Optionen ändern, nachdem Sie Ihren App-Client erstellt haben.

  8. Amazon Cognito führt Sie zu den App-Client-Details zurück. Um auf den Beispielcode für Ihre Anwendung zuzugreifen, wählen Sie auf der Registerkarte Kurzanleitung eine Plattform aus.

AWS CLI
aws cognito-idp create-user-pool-client --user-pool-id MyUserPoolID --client-name myApp
Anmerkung

Verwenden Sie das JSON-Format für Callback- und Abmelde-URLs, um zu verhindern, dass die CLI sie als Remote-Parameterdateien behandelt:

--callback-urls "["https://example.com"]" --logout-urls "["https://example.com"]"

Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz: create-user-pool-client

Amazon Cognito user pools API

Generieren Sie eine API-Anfrage. CreateUserPoolClient Sie müssen einen Wert für alle Parameter angeben, die nicht auf einen Standardwert festgelegt werden sollen.

Aktualisierung eines Benutzerpool-App-Clients (AWS CLI und AWS API)

Geben Sie bei den AWS CLI den folgenden Befehl ein:

aws cognito-idp update-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID" --allowed-o-auth-flows-user-pool-client --allowed-o-auth-flows "code" "implicit" --allowed-o-auth-scopes "openid" --callback-urls "["https://example.com"]" --supported-identity-providers "["MySAMLIdP", "LoginWithAmazon"]"

Wenn der Befehl erfolgreich ist, wird eine Bestätigung AWS CLI zurückgegeben:

{ "UserPoolClient": { "ClientId": "MyClientID", "SupportedIdentityProviders": [ "LoginWithAmazon", "MySAMLIdP" ], "CallbackURLs": [ "https://example.com" ], "AllowedOAuthScopes": [ "openid" ], "ClientName": "Example", "AllowedOAuthFlows": [ "implicit", "code" ], "RefreshTokenValidity": 30, "AuthSessionValidity": 3, "CreationDate": 1524628110.29, "AllowedOAuthFlowsUserPoolClient": true, "UserPoolId": "MyUserPoolID", "LastModifiedDate": 1530055177.553 } }

Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz: update-user-pool-client.

AWS API: UpdateUserPoolClient

Informationen über einen Benutzerpool-App-Client abrufen (AWS CLI und AWS API)

aws cognito-idp describe-user-pool-client --user-pool-id MyUserPoolID --client-id MyClientID

Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz: describe-user-pool-client.

AWS API: DescribeUserPoolClient

Auflisten aller App-Client-Informationen in einem Benutzerpool (AWS CLI und AWS API)

aws cognito-idp list-user-pool-clients --user-pool-id "MyUserPoolID" --max-results 3

Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz: list-user-pool-clients.

AWS API: ListUserPoolClients

Löschen eines Benutzerpool-App-Clients (AWS CLI und AWS API)

aws cognito-idp delete-user-pool-client --user-pool-id "MyUserPoolID" --client-id "MyAppClientID"

Weitere Informationen finden Sie in der AWS CLI Befehlsreferenz: delete-user-pool-client

AWS API: DeleteUserPoolClient