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.
Authentifizieren Sie bestehende Benutzer von React-Anwendungen mithilfe von Amazon Cognito und AWS Amplify UI
Erstellt von Daniel Kozhemyako () AWS
Umwelt: Produktion | Technologien: Web- und mobile Apps; Sicherheit, Identität, Compliance; Unternehmensproduktivität; Analytik | AWSDienste: Amazon Cognito; AWS Amplify; Amazon Connect; Verwaltungskonsole AWS |
Übersicht
Dieses Muster zeigt, wie einer vorhandenen Frontend-React-Anwendung mithilfe einer AWS Amplify UI-Bibliothek und eines Amazon Cognito Cognito-Benutzerpools Authentifizierungsfunktionen hinzugefügt werden.
Das Muster verwendet Amazon Cognito, um Authentifizierung, Autorisierung und Benutzerverwaltung für die Anwendung bereitzustellen. Es verwendet auch eine Komponente aus Amplify UI
Nachdem Sie dieses Muster implementiert haben, können sich Benutzer mit beliebigen der folgenden Anmeldeinformationen anmelden:
Benutzername und Passwort
Anbieter sozialer Identitäten wie Apple, Facebook, Google und Amazon
Identitätsanbieter für Unternehmen, die entweder SAML 2.0-kompatibel oder OpenID Connect (OIDC) -kompatibel sind
Hinweis: Um eine benutzerdefinierte Authentifizierungs-UI-Komponente zu erstellen, können Sie die Authenticator-Benutzeroberflächenkomponente im Headless-Modus ausführen.
Voraussetzungen und Einschränkungen
Voraussetzungen
Eine aktive AWS-Konto
Eine Webanwendung mit React 18.2.0 oder höher
Einschränkungen
Dieses Muster gilt nur für React-Webanwendungen.
Dieses Muster verwendet eine vorgefertigte Amplify-UI-Komponente. Die Lösung deckt nicht die Schritte ab, die zur Implementierung einer benutzerdefinierten UI-Komponente erforderlich sind.
Produktversionen
Amplify UI 6.1.3 oder höher (Gen 1)
Amplify 6.0.16 oder höher (Gen 1)
Architektur
Zielarchitektur
Das folgende Diagramm zeigt eine Architektur, die Amazon Cognito verwendet, um Benutzer für eine React-Webanwendung zu authentifizieren.
Tools
AWS-Services
Amazon Cognito bietet Authentifizierung, Autorisierung und Benutzerverwaltung für Web- und mobile Apps.
Andere Tools
Amplify UI
ist eine Open-Source-UI-Bibliothek, die anpassbare Komponenten bereitstellt, die Sie mit der Cloud verbinden können. Node.js
ist eine ereignisgesteuerte JavaScript Laufzeitumgebung, die für die Erstellung skalierbarer Netzwerkanwendungen entwickelt wurde. npm
ist eine Softwareregistrierung, die in einer Node.js -Umgebung ausgeführt wird und verwendet wird, um Pakete gemeinsam zu nutzen oder auszuleihen und die Bereitstellung von privaten Paketen zu verwalten.
Bewährte Methoden
Wenn Sie eine neue Anwendung erstellen, empfehlen wir Ihnen, Amplify Gen 2 zu verwenden.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie einen Benutzerpool. | Erstellen Sie einen Amazon Cognito Cognito-Benutzerpool. Konfigurieren Sie die Anmeldeoptionen und Sicherheitsanforderungen des Benutzerpools entsprechend Ihrem Anwendungsfall. | App-Developer |
Fügen Sie einen App-Client hinzu. | Konfigurieren Sie einen Benutzerpool-App-Client. Dieser Client ist erforderlich, damit Ihre Anwendung mit dem Amazon Cognito Cognito-Benutzerpool interagieren kann. | App-Developer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Installieren Sie die Abhängigkeiten. | Um die
| App-Developer |
Konfigurieren Sie den Benutzerpool. | Erstellen Sie anhand des folgenden Beispiels eine
| App-Developer |
Importieren und konfigurieren Sie den Amplify-Dienst. |
| App-Developer |
Fügen Sie die Authenticator-UI-Komponente hinzu. | Um die
Hinweis: Das Beispielcode-Snippet importiert die Die
Sehen Sie sich die folgende Beispielkomponente an:
Hinweis: Eine | App-Developer |
(Optional) Rufen Sie Sitzungsinformationen ab. | Nachdem ein Benutzer authentifiziert wurde, können Sie vom Amplify-Client Daten über seine Sitzung abrufen. Sie können beispielsweise das JSON Web-Token (JWT) aus der Sitzung eines Benutzers abrufen, sodass Sie die Anfragen aus seiner Sitzung an ein Backend authentifizieren können. API Sehen Sie sich das folgende Beispiel für einen Anforderungsheader an, der Folgendes enthält: JWT
| App-Developer |
Fehlerbehebung
Problem | Lösung |
---|---|
Neue Benutzer können sich nicht für die Anwendung registrieren. | Stellen Sie wie folgt sicher, dass Ihr Amazon Cognito Cognito-Benutzerpool so konfiguriert ist, dass Benutzer sich selbst für den Benutzerpool anmelden können:
|
Die Auth-Komponente funktionierte nach dem Upgrade von Version 5 auf Version 6 nicht mehr. | Die |
Zugehörige Ressourcen
Erste Schritte mit Amazon Cognito
(AWS Website) Erstellen Sie eine neue React-App
(React-Dokumentation) Was ist Amazon Cognito? (Amazon Cognito Cognito-Dokumentation)
Amplify-UI-Bibliothek
(Amplify-Dokumentation)
Zusätzliche Informationen
Die App.js
Datei sollte den folgenden Code enthalten:
import './App.css'; import { Amplify } from 'aws-amplify'; import awsExports from './aws-exports'; import { fetchAuthSession } from 'aws-amplify/auth'; import { Authenticator } from '@aws-amplify/ui-react'; import '@aws-amplify/ui-react/styles.css'; Amplify.configure({ ...awsExports }); let token = (await fetchAuthSession()).tokens?.idToken?.toString(); function App() { return ( <Authenticator> {({ signOut, user }) => ( <div> <p>Welcome {user.username}</p> <p>Your token is: {token}</p> <button onClick={signOut}>Sign out</button> </div> )} </Authenticator> ); } export default App;