Geltungsbereiche, M2M und API Autorisierung 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.

Geltungsbereiche, M2M und API Autorisierung 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 Fügen Sie einen App-Client mit der gehosteten Benutzeroberfläche hinzu. 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-Server. API Um zugriffsgeschützte Ressourcen zu sichern, überprüft er, ob Zugriffstoken aus Ihrem Benutzerpool die Bereiche enthalten, die die angeforderte Methode und den Pfad autorisieren, in dem sie geschützt sind. API 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 Anspruch auf Zugriffstoken enthalten. scope Weitere Informationen zu den Ansprüchen in Amazon-Cognito-Zugriffstoken finden Sie unter Verwenden des Zugriffstokens.

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.

APIAutorisierung

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

Zugriffstoken

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

ID-Token

Wenn Sie ein gültiges ID-Token an einen Amazon Cognito Cognito-Autorisierer in Ihrem übergeben RESTAPI, 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 mit einem Link verknüpften Richtlinienspeicher zu erstellen API. 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 dem Autorisierer eine Entscheidung zum Zulassen oder Verweigern zurückgibt.

M achine-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 auf eine API mit M2M-Autorisierung 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. App-Clients für Benutzerpools

Das Zugriffstoken aus einer Zugriffserteilung an einen Client ist eine überprüfbare Aussage über die Vorgänge, die Sie Ihrer Computeridentität erlauben möchten, von einem API anzufordern. Um mehr darüber zu erfahren, wie Zugriffstoken API Anfragen autorisieren, lesen Sie weiter. Eine Beispielanwendung finden Sie unter Amazon Cognito und API Gateway-basierte Machine-to-Machine-Autorisierung 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 Zwischenspeicherung von Token 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 Gültigkeitsbereichen generieren, die belegen, dass Ihr Kunde sein eigenes Benutzerprofil ganz oder teilweise verwalten oder Daten von einem Back-End abrufen darf. API Amazon Cognito Cognito-Benutzerpools stellen Zugriffstoken mit den reservierten BereichenAPI, benutzerdefinierten Bereichen und Standardbereichen der Benutzerpools aus.

Die Benutzerpools haben einen reservierten Bereich API

Der aws.cognito.signin.user.admin Geltungsbereich autorisiert die Amazon Cognito Cognito-Benutzerpools. API Er autorisiert den Inhaber eines Zugriffstokens, alle Informationen über einen Benutzerpool-Benutzer abzufragen und zu aktualisieren, z. B. mit den Operationen und. GetUserUpdateUserAttributesAPI Wenn Sie Ihren Benutzer mit den Amazon Cognito Cognito-Benutzerpools authentifizierenAPI, 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. Bei Zugriffstoken, die sowohl Benutzerpools API als auch userInfo Anfragen für Ihre Benutzer autorisieren, müssen Sie beide Bereiche openid und aws.cognito.signin.user.admin in einer Anfrage anfordern. /oauth2/authorize

Benutzerdefinierte Bereiche

Benutzerdefinierte Bereiche autorisieren Anfragen an externe APIs Bereiche, 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.

Standardbereiche

Wenn Sie Benutzer mit Ihrem Benutzerpool OAuth 2.0-Autorisierungsserver authentifizieren, auch mit der gehosteten Benutzeroberfläche, müssen Sie Bereiche anfordern. Sie können lokale Benutzerpool-Benutzer und externe Verbundbenutzer auf Ihrem Amazon-Cognito-Autorisierungsserver authentifizieren. Standard OAuth 2.0-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 OAuth Standard-2.0-Bereichen auszugeben.

openid

Der 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 Standardbereichen wie profile emailphone, und ist der Inhalt des ID-Tokens und der userInfoAntwort 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

Ein Ressourcenserver API kann Zugriff auf die Informationen in einer Datenbank gewähren oder Ihre IT-Ressourcen kontrollieren. Ein Amazon Cognito Cognito-Zugriffstoken kann den Zugriff auf APIs diesen Support OAuth 2.0 autorisieren. Amazon API Gateway bietet integrierte Unterstützung für REST APIs die Autorisierung mit Amazon Cognito Cognito-Zugriffstoken. Ihre App leitet das Zugriffstoken im 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 einen weitergibtAPI, 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 Anfragen auf Zugriffstoken, die photos.read im scope Anspruch enthalten sind, und HTTP POST Anfragen auf Tokens mit gewährtphotos.write. 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 Überprüfen eines JSON Web-Tokens. Weitere Informationen zur Überprüfung und Verwendung von Benutzerpool-Token in Amazon API Gateway finden Sie im Blog Integrating Amazon Cognito User Pools with API Gateway. APIGateway ist eine gute Option, um Zugriffstoken zu überprüfen und Ihre Ressourcen zu schützen. Weitere Informationen zu API Gateway-Lambda-Autorisierern finden Sie unter Verwenden von API Gateway-Lambda-Autorisierern.

Übersicht

Mit Amazon Cognito können Sie OAuth 2.0-Ressourcenserver erstellen und ihnen benutzerdefinierte Bereiche zuordnen. Benutzerdefinierte Bereiche in einem Zugriffstoken autorisieren bestimmte Aktionen in Ihrem. 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 OAuth 2.0-Autorisierungscode-Erteilungen, impliziten Zuweisungen und Zuweisungen für Client-Anmeldeinformationen von 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 Genehmigung mit einem benutzerdefinierten Bereich an, der Benutzerpool gibt ein Zugriffstoken mit dem benutzerdefinierten Bereich zurück und der Client präsentiert das Zugriffstoken einem. 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. In der gehosteten Benutzeroberfläche können Sie auch benutzerdefinierte Bereiche in einem Zugriffstoken aus einer impliziten Erteilung 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. Der Bezeichner ist ein beliebiger Name, den Sie beispielsweise Ihrem API zuordnen möchten. solar-system-data Sie können längere Bezeichner konfigurieren, z. B. https://solar-system-data-api.example.com als direkteren Verweis auf API URI Pfade, aber längere Zeichenketten erhöhen die Größe der Zugriffstoken.

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

  • Beschreibung: Eine Kurzbeschreibung des Bereichs. z. B. 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 gehostete Benutzeroberfläche enthält, auswählen. 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 für einen Bezeichner einen API benutzerfreundlichen 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 Ihren registrieren. solar-system-data API 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 Anforderungsparameter als. scope HTTPS 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 das AWS Management Console, oder verwendenAPI, CLI 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 die Registerkarte App integration (Anwendungsintegration) aus und suchen Sie nach Resource servers (Ressourcen-Server).

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

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

  6. Geben Sie eine ID für den Ressourcenserver ein. Zum 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 auf der Registerkarte App integration (Anwendungsintegration) unter Resource servers (Ressourcenserver) in der Spalte Custom scopes (Benutzerdefinierte Bereiche) überprüft werden. Benutzerdefinierte Bereiche können für App-Clients auf der Registerkarte App integration (Anwendungsintegration) unter App-Clients aktiviert werden. Wählen Sie einen App-Client aus und suchen Sie nach Hosted UI settings (Einstellungen für gehostete Benutzeroberflächen) und klicken Sie auf Edit (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 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