Bereiche, M2M und APIs mit Ressourcenservern - 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.

Bereiche, M2M und APIs mit Ressourcenservern

Nachdem Sie eine Domain für Ihren Benutzerpool konfiguriert haben, stellt Amazon Cognito automatisch einen OAuth 2.0-Autorisierungsserver und eine gehostete Weboberfläche mit Anmelde- und Anmeldeseiten bereit, die Ihre App Ihren Benutzern präsentieren kann. Weitere Informationen finden Sie unter Vom Benutzerpool verwaltete Anmeldung. Sie können die Bereiche auswählen, die der Autorisierungsserver den Zugriffstoken hinzufügen soll. Bereiche autorisieren den Zugriff auf Ressourcenserver und Benutzerdaten.

Ein Ressourcenserver ist ein OAuth 2.0-API-Server. Um zugriffsgeschützte Ressourcen zu sichern, wird überprüft, ob Zugriffstoken aus Ihrem Benutzerpool die Bereiche enthalten, die die angeforderte Methode und den Pfad in der geschützten API autorisieren. Der Aussteller wird anhand der Token-Signatur, der Gültigkeit basierend auf der Token-Ablaufzeit und der Zugriffsebene basierend auf den Geltungsbereichen in Token-Ansprüchen verifiziert. Die Bereiche des Benutzerpools sind im scope Anspruch auf Zugriffstoken enthalten. Weitere Informationen zu den Ansprüchen in Amazon-Cognito-Zugriffstoken finden Sie unter Das Zugriffstoken verstehen.

Mit Amazon Cognito können die Bereiche in Zugriffstoken den Zugriff auf externe Attribute APIs oder Benutzerattribute autorisieren. Sie können Zugriffstoken für lokale Benutzer, Verbundbenutzer oder Maschinenidentitäten ausgeben.

API-Autorisierung

Im Folgenden finden Sie einige Möglichkeiten, Anfragen APIs mit Amazon Cognito Cognito-Token zu autorisieren:

Zugriffstoken

Wenn Sie einen Amazon Cognito Cognito-Autorisierer zu einer REST-API-Methodenanforderungskonfiguration hinzufügen, fügen Sie der Autorisierungskonfiguration Autorisierungsbereiche hinzu. Bei dieser Konfiguration akzeptiert Ihre API Zugriffstoken im Authorization Header und überprüft sie auf akzeptierte Bereiche.

ID-Token

Wenn Sie in Ihrer REST-API ein gültiges ID-Token an einen Amazon Cognito Cognito-Authorizer übergeben, akzeptiert API Gateway die Anfrage und leitet den Inhalt des ID-Tokens an das API-Backend weiter.

Amazon Verified Permissions

Unter Verifizierte Berechtigungen haben Sie die Möglichkeit, einen API-verknüpften Richtlinienspeicher zu erstellen. Verified Permissions erstellt und weist einen Lambda-Autorisierer zu, der ID- oder Zugriffstoken aus Ihrem Anforderungsheader verarbeitet. Authorization Dieser Lambda-Autorisierer leitet Ihr Token an Ihren Richtlinienspeicher weiter, wo Verified Permissions es mit Richtlinien vergleicht und eine Entscheidung über das Zulassen oder Verweigern an den Autorisierer zurückgibt.

Machine-to-machine (M2M) -Autorisierung

Amazon Cognito unterstützt Anwendungen, die auf API-Daten mit Maschinenidentitäten zugreifen. Maschinenidentitäten in Benutzerpools sind vertrauliche Clients, die auf Anwendungsservern ausgeführt werden und eine Verbindung zu Remote-Computern herstellen. APIs Ihr Betrieb erfolgt ohne Benutzerinteraktion: geplante Aufgaben, Datenströme oder Asset-Updates. Wenn diese Clients ihre Anfragen mit einem Zugriffstoken autorisieren, führen sie eine Machine-to-Machine-Autorisierung (M2M) durch. Bei der M2M-Autorisierung ersetzt ein gemeinsam genutzter geheimer Schlüssel die Benutzeranmeldedaten bei der Zugriffskontrolle.

Eine Anwendung, die mit M2M-Autorisierung auf eine API zugreift, muss über eine Client-ID und einen geheimen Clientschlüssel verfügen. In Ihrem Benutzerpool müssen Sie einen App-Client erstellen, der die Gewährung von Client-Anmeldeinformationen unterstützt. Um Client-Anmeldeinformationen zu unterstützen, muss Ihr App-Client über einen geheimen Client-Schlüssel verfügen und Sie müssen über eine Benutzerpool-Domain verfügen. In diesem Ablauf fordert Ihre Computeridentität ein Zugriffstoken direkt von der anToken-Endpunkt. Sie können nur benutzerdefinierte Bereiche von Ressourcenservern in Zugriffstoken für die Gewährung von Client-Anmeldeinformationen autorisieren. Weitere Informationen zum Einrichten von App-Clients finden Sie unter. Anwendungsspezifische Einstellungen mit App-Clients

Das Zugriffstoken aus der Gewährung von Kundenanmeldedaten ist eine überprüfbare Aussage über die Vorgänge, die Sie Ihrer Computeridentität von einer API abfragen lassen möchten. Um mehr darüber zu erfahren, wie Zugriffstoken API-Anfragen autorisieren, lesen Sie weiter. Eine Beispielanwendung finden Sie unter Machine-to-Machine-Autorisierung auf Basis von Amazon Cognito und API Gateway mit AWS CDK.

Die M2M-Autorisierung hat ein Abrechnungsmodell, das sich von der Art und Weise unterscheidet, wie monatlich aktive Benutzer (MAUs) in Rechnung gestellt werden. Wenn für die Benutzerauthentifizierung Kosten pro aktivem Benutzer anfallen, spiegelt die M2M-Abrechnung die aktiven App-Clients mit Kundenanmeldedaten und das Gesamtvolumen der Token-Anfragen wider. Weitere Informationen finden Sie unter Amazon Cognito – Preise. Um die Kosten für die M2M-Autorisierung unter Kontrolle zu halten, sollten Sie die Dauer der Zugriffstoken und die Anzahl der Token-Anfragen, die Ihre Anwendungen stellen, optimieren. Eine Möglichkeit, API-Gateway-Caching zu verwenden, um Anfragen nach neuen Tokens bei der M2M-Autorisierung zu reduzieren, finden Verwaltung des Ablaufs und der Zwischenspeicherung von Benutzerpool-Tokens Sie unter.

Informationen zur Optimierung von Amazon Cognito Cognito-Vorgängen, die Ihre AWS Rechnung mit zusätzlichen Kosten belasten, finden Sie unterVerwalten von Kosten.

Grundlegendes zu Bereichen

Ein Bereich ist ein Zugriffsniveau, das eine App von einer Ressource anfordern kann. In einem Zugriffstoken in Amazon Cognito wird der Bereich durch das Vertrauen gesichert, das Sie mit Ihrem Benutzerpool geschaffen haben: ein vertrauenswürdiger Aussteller von Zugriffstoken mit einer bekannten digitalen Signatur. Benutzerpools können Zugriffstoken mit Bereichen generieren, die belegen, dass Ihr Kunde sein eigenes Benutzerprofil ganz oder teilweise verwalten kann oder Daten von einer Back-End-API abrufen darf. Amazon Cognito Cognito-Benutzerpools stellen Zugriffstoken mit dem reservierten API-Bereich, benutzerdefinierten Bereichen und OpenID Connect (OIDC) -Bereichen für Benutzerpools aus.

Der reservierte API-Bereich der Benutzerpools

Der aws.cognito.signin.user.admin Bereich autorisiert Self-Service-Operationen für den aktuellen Benutzer in der Amazon Cognito Cognito-Benutzerpools-API. Er autorisiert den Inhaber eines Zugriffstokens, alle Informationen über den Träger abzufragen und zu aktualisieren, beispielsweise mit den Operationen und der API. GetUserUpdateUserAttributes Wenn Sie Ihren Benutzer mit der Benutzerpools-API in Amazon Cognito authentifizieren, ist dies der einzige Bereich, den Sie im Zugriffstoken erhalten. Dies ist auch der einzige Bereich, den Sie zum Lesen und Schreiben von Benutzerattributen benötigen, die der App-Client lesen und schreiben kann. Sie können diesen Bereich auch in Anfragen an Ihren Autorisieren des Endpunkts anfordern. Dieser Bereich allein reicht nicht aus, um Benutzerattribute von UserInfo-Endpunkt anzufordern. Für Zugriffstoken, die sowohl die Benutzerpool-API als auch userInfo Anfragen für Ihre Benutzer autorisieren, müssen Sie beide Bereiche openid und aws.cognito.signin.user.admin in einer /oauth2/authorize Anfrage anfordern.

Benutzerdefinierte Bereiche

Benutzerdefinierte Bereiche autorisieren Anfragen an externe APIs Objekte, die von Ressourcenservern geschützt werden. Sie können benutzerdefinierte Bereiche mit anderen Arten von Bereichen anfordern. Weitere Informationen zu benutzerdefinierten Bereichen finden Sie auf dieser Seite.

OpenID Connect (OIDC) -Bereiche

Wenn Sie Benutzer mit Ihrem Benutzerpool-Autorisierungsserver authentifizieren, auch mit verwalteter Anmeldung, müssen Sie Bereiche anfordern. Sie können lokale Benutzerpool-Benutzer und externe Verbundbenutzer auf Ihrem Amazon-Cognito-Autorisierungsserver authentifizieren. OIDC-Bereiche autorisieren Ihre App, Benutzerinformationen aus Ihrem Benutzerpool zu lesen. UserInfo-Endpunkt Das OAuth Modell, bei dem Sie Benutzerattribute vom userInfo Endpunkt aus abfragen, kann Ihre App für eine große Anzahl von Anfragen nach Benutzerattributen optimieren. Der userInfo-Endpunkt gibt Attribute auf einer Berechtigungsebene zurück, die durch die Bereiche im Zugriffstoken bestimmt wird. Sie können Ihren App-Client autorisieren, Zugriffstoken mit den folgenden OIDC-Bereichen auszugeben.

openid

Der obligatorische Mindestbereich für OpenID-Connect-(OIDC)-Abfragen. Autorisiert das ID-Token, den unique-identifier-Anspruch sub und die Möglichkeit, andere Bereiche anzufordern.

Anmerkung

Wenn Sie nur den openid-Bereich und keine anderen anfordern, enthalten Ihr Benutzerpool-ID-Token und Ihre userInfo-Antwort Ansprüche für alle Benutzerattribute, die Ihr App-Client lesen kann. Bei Anfragen openid und anderen OIDC-Bereichen wie profile emailphone, und ist der Inhalt des ID-Tokens und der UserInfo-Antwort auf die Einschränkungen der zusätzlichen Bereiche beschränkt.

Beispielsweise würde eine Anfrage an Autorisieren des Endpunkts mit dem Parameter scope=openid+email ein ID-Token mit sub, email und email_verified zurückgeben. Das Zugriffs-Token aus dieser Anfrage gibt dieselben Attribute aus UserInfo-Endpunkt zurück. Eine Anfrage mit Parameter scope=openid gibt alle vom Client lesbaren Attribute im ID-Token und aus userInfo zurück.

Profil

Autorisiert alle Benutzerattribute, die der App-Client lesen kann.

email

Autorisiert die Benutzerattribute email und email_verified. Amazon Cognito gibt email_verified zurück wenn ein Wert explizit festgelegt wurde.

phone

Autorisiert die Benutzerattribute phone_number und phone_number_verified.

Grundlegendes zu Ressourcenservern

Eine Ressourcenserver-API kann Zugriff auf die Informationen in einer Datenbank gewähren oder Ihre IT-Ressourcen steuern. Ein Amazon Cognito Cognito-Zugriffstoken kann den Zugriff auf APIs diesen Support OAuth 2.0 autorisieren. Amazon API Gateway REST bietet integrierte Unterstützung für APIs die Autorisierung mit Amazon Cognito Cognito-Zugriffstoken. Ihre App gibt das Zugriffstoken aus dem API-Aufruf an den Ressourcenserver weiter. Der Ressourcenserver untersucht das Zugriffstoken, um zu festzustellen, ob Zugriff gewährt werden soll.

Amazon Cognito wird möglicherweise in Zukunft das Schema der Zugriffstoken für Benutzerpools aktualisieren. Wenn Ihre App den Inhalt des Zugriffstokens analysiert, bevor sie es an eine API weitergibt, müssen Sie Ihren Code so anpassen, dass er Aktualisierungen des Schemas akzeptiert.

Benutzerdefinierte Bereiche werden von Ihnen definiert und erweitern die Autorisierungsfunktionen eines Benutzerpools auf Zwecke, die nichts mit dem Abfragen und Ändern von Benutzern und ihren Attributen zu tun haben. Wenn Sie zum Beispiel einen Ressourcenserver für Fotos haben, könnte er zwei Bereiche definieren: photos.read für den Lesezugriff auf die Fotos und photos.write für den Schreib-/Lesezugriff. Sie können eine API so konfigurieren, dass sie Zugriffstoken für die Autorisierung akzeptiert und HTTP GET-Anforderungen für Zugriffstoken mit photos.read im scope-Anspruch sowie HTTP POST-Anforderungen für Token mit photos.write gewährt. Das sind benutzerdefinierte Bereiche.

Anmerkung

Ihr Ressourcenserver muss die Signatur und das Ablaufdatum des Zugriffstokens überprüfen, bevor Ansprüche innerhalb des Tokens verarbeitet werden. Weitere Informationen zur Verifizierung von Token finden Sie unter Verifizieren eines JSON-Web-Tokens. Weitere Informationen zur Verifizierung und Verwendung von Benutzerpool-Token finden Sie unter Integration von Amazon-Cognito-Benutzerpools mit API-Gateway im Blog. API Gateway ist gut für die Überprüfung von Zugriffstoken und den Schutz Ihrer Ressourcen geeignet. Weitere Informationen zu API-Gateway-Lambda-Genehmigern finden Sie unter Verwenden von API-Gateway-Lambda-Genehmigern.

Übersicht

Mit Amazon Cognito können Sie OAuth 2.0-Ressourcenserver erstellen und ihnen benutzerdefinierte Bereiche zuordnen. Benutzerdefinierte Bereiche in einem Zugriffstoken autorisieren spezifische Aktionen in Ihrer API. Sie können jeden App-Client in Ihrem Benutzerpool autorisieren, benutzerdefinierte Bereiche von jedem Ihrer Ressourcenserver aus auszustellen. Ordnen Sie Ihre benutzerdefinierten Bereiche einem App-Client zu und fordern Sie diese Bereiche in Form von OAuth 2.0-Autorisierungscode-Erteilungen, impliziten Zuweisungen und Zuweisungen von Kundenanmeldedaten bei der an. Token-Endpunkt Amazon Cognito fügt dem scope-Anspruch benutzerdefinierte Bereiche in einem Zugriffstoken hinzu. Ein Client kann das Zugriffstoken für seinen Ressourcenserver verwenden, der die Entscheidung über die Autorisierung basierend auf den im Token vorhandenen Bereichen trifft. Weitere Informationen über Zugriffstoken-Bereiche finden Sie unter Verwenden von Token mit Benutzerpools.

Ein Überblick über den Ablauf eines Ressourcenservers. Der Client fordert eine Erteilung mit einem benutzerdefinierten Bereich an, der Benutzerpool gibt ein Zugriffstoken mit dem benutzerdefinierten Bereich zurück und der Client präsentiert das Zugriffstoken einer API.

Zum Abrufen eines Zugriffstokens mit benutzerdefinierten Bereichen muss Ihre App eine Anfrage an den Token-Endpunkt senden, um einen Autorisierungscode einzulösen oder eine Berechtigung für Client-Anmeldeinformationen anzufordern. Bei der verwalteten Anmeldung können Sie auch benutzerdefinierte Bereiche in einem Zugriffstoken aus einer impliziten Gewährung anfordern.

Anmerkung

Weil sie für die interaktive Authentifizierung mit dem Benutzerpool als IdP konzipiert sind InitiateAuthund AdminInitiateAuthAnfragen nur einen scope Anspruch im Zugriffstoken mit dem einzigen Wert erzeugen. aws.cognito.signin.user.admin

Verwalten der Ressourcenserver und benutzerdefinierten Bereiche

Beim Erstellen eines Ressourcenservers müssen Sie einen Ressourcenservernamen und eine Ressourcenserver-ID angeben. Für jeden Bereich, den Sie im Ressourcenserver erstellen, müssen Sie den Namen und die Beschreibung des Bereichs bereitstellen.

  • Name des Ressourcenservers: Ein Anzeigename für den Ressourcenserver, z. B. Solar system object tracker oder Photo API.

  • Ressourcenserver-ID: Eine eindeutige ID für den Ressourcenserver. Die ID ist ein beliebiger Name, den Sie Ihrer API zuordnen, wie z. B. solar-system-data. Sie können längere IDs konfigurieren, wie z. B. https://solar-system-data-api.example.com als direkteren Verweis auf API-URI-Pfade, aber längere Zeichenfolgen machen Zugriffstoken größer.

  • Bereichsname: Der Wert, den Sie in Ihren scope-Ansprüchen haben wollen. Beispiel, sunproximity.read.

  • Beschreibung: Eine Kurzbeschreibung des Bereichs. Beispiel, Check current proximity to sun.

Amazon Cognito kann benutzerdefinierte Bereiche in Zugriffstoken für alle Benutzer einbeziehen, unabhängig davon, ob sie sich lokal in Ihrem Benutzerpool befinden oder mit einem externen Identitätsanbieter verbunden sind. Sie können die Bereiche für die Zugriffstoken Ihrer Benutzer während der Authentifizierungsabläufe mit dem OAuth 2.0-Autorisierungsserver, der die verwaltete Anmeldung beinhaltet, festlegen. Die Authentifizierung des Benutzers muss bei Autorisieren des Endpunkts beginnen, mit scope als einem der Anforderungsparameter. Das folgende Format wird für Ressourcenserver empfohlen. Verwenden Sie als ID einen API-freundlichen Namen. Verwenden Sie für einen benutzerdefinierten Bereich die zu autorisierende Aktion.

resourceServerIdentifier/scopeName

Sie haben beispielsweise einen neuen Asteroiden im Kuipergürtel entdeckt und möchten ihn über Ihre solar-system-data-API registrieren. Der Bereich, der Schreiboperationen in die Asteroidendatenbank autorisiert, ist asteroids.add. Wenn Sie das Zugriffstoken anfordern, das Sie zur Registrierung Ihrer Entdeckung berechtigt, formatieren Sie Ihren scope-HTTPS-Anforderungsparameter als scope=solar-system-data/asteroids.add.

Durch das Löschen eines Bereichs von einem Ressourcenserver wird nicht die Zuordnung zu allen Clients gelöscht. Stattdessen wird der Geltungsbereich als inaktiv markiert. Amazon Cognito fügt Zugriffstoken keine inaktiven Bereiche hinzu, verfährt jedoch ansonsten wie gewohnt, wenn Ihre App eines anfordert. Wenn Sie Ihrem Ressourcenserver den Gültigkeitsbereich zu einem späteren Zeitpunkt erneut hinzufügen, schreibt Amazon Cognito ihn erneut in das Zugriffstoken. Wenn Sie einen Bereich anfordern, den Sie Ihrem App-Client nicht zugeordnet haben, schlägt die Authentifizierung unabhängig davon fehl, ob Sie ihn vom Ressourcenserver Ihres Benutzerpools gelöscht haben.

Sie können die AWS Management Console API oder die CLI verwenden, um Ressourcenserver und Bereiche für Ihren Benutzerpool zu definieren.

Definition eines Ressourcenservers für Ihren Benutzerpool (AWS Management Console)

Sie können den verwenden AWS Management Console , um einen Ressourcenserver für Ihren Benutzerpool zu definieren.

Definieren eines Ressourcenservers
  1. Melden Sie sich bei der Amazon Cognito-Konsole an.

  2. Wählen Sie im Navigationsbereich User Pools (Benutzerpools) aus und anschließend den Benutzerpool, den Sie bearbeiten möchten.

  3. Wählen Sie das Domain-Menü unter Branding und suchen Sie nach Ressourcenservern.

  4. Wählen Sie Create a resource server (Ressourcenserver erstellen) aus.

  5. Geben Sie einen Name für den Ressourcenserver ein. Beispiel, Photo Server.

  6. Geben Sie eine ID für den Ressourcenserver ein. Beispiel, com.example.photos.

  7. Geben Sie benutzerdefinierte Bereiche für Ihre Ressourcen ein, z. B. read und write.

  8. Geben Sie für jeden der Bereichsnamen eine Beschreibung ein, z. B. view your photos und update your photos.

  9. Wählen Sie Create (Erstellen) aus.

Ihre benutzerdefinierten Bereiche können im Menü Domäne unter Ressourcenserver in der Spalte Benutzerdefinierte Bereiche überprüft werden. Benutzerdefinierte Bereiche können für App-Clients im Menü App-Clients unter Anwendungen aktiviert werden. Wählen Sie einen App-Client aus, suchen Sie nach Anmeldeseiten und wählen Sie Bearbeiten. Fügen Sie benutzerdefinierte Bereiche hinzu und wählen Sie Save changes (Änderungen speichern) aus.

Definieren Sie einen Ressourcenserver für Ihren Benutzerpool (AWS CLI und Ihre AWS API)

Verwenden Sie die folgenden Befehle für die Angabe von Einstellungen der Ressourcenserver für Ihren Benutzerpool.

Erstellen eines Ressourcenservers
Informationen über die Einstellungen Ihres Ressourcenservers abrufen
Informationen über alle Ressourcenserver für Ihren Benutzerpool auflisten
Einen Ressourcenserver löschen
Die Einstellungen für einen Ressourcenserver aktualisieren