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.
Erfassung von Daten zum Schutz vor Bedrohungen in Anwendungen
Die adaptive Authentifizierung von Amazon Cognito bewertet die Risikostufen für versuchte Kontoübernahmen anhand von Kontextdetails der Anmeldeversuche von Benutzern. Ihre Anwendung muss den API Anfragen Kontextdaten hinzufügen, damit Amazon Cognito Advanced Security das Risiko genauer einschätzen kann. Kontextdaten sind Informationen wie IP-Adresse, Browser-Agent, Geräteinformationen und Anforderungsheader, die kontextbezogene Informationen darüber liefern, wie ein Benutzer mit Ihrem Benutzerpool verbunden ist.
Die zentrale Verantwortung einer Anwendung, die diesen Kontext an Amazon Cognito übermittelt, ist ein EncodedData
Parameter in Authentifizierungsanfragen an Benutzerpools. Um diese Daten zu Ihren Anfragen hinzuzufügen, können Sie Amazon Cognito mit einem implementierenSDK, das diese Informationen automatisch für Sie generiert, oder Sie können ein Modul für JavaScript iOS oder Android implementieren, das diese Daten sammelt. Anwendungen, die nur für Kunden bestimmt sind und direkte Anfragen an Amazon Cognito stellen, müssen implementiert werden. AWS Amplify SDKs Client-Server-Anwendungen, die über einen Zwischenserver oder eine API Komponente verfügen, müssen ein separates Modul implementieren. SDK
In den folgenden Szenarien verwaltet Ihr Authentifizierungs-Frontend die Erfassung von Benutzerkontextdaten ohne zusätzliche Konfiguration:
-
Die gehostete Benutzeroberfläche sammelt automatisch Kontextdaten und leitet sie an erweiterte Sicherheitsfunktionen weiter.
-
In allen AWS Amplify Bibliotheken ist die Erfassung von Kontextdaten in ihre Authentifizierungsmethoden integriert.
Senden von Benutzerkontextdaten in Anwendungen, die nur für Kunden bestimmt sind, mit Amplify
Amplify SDKs unterstützt mobile Clients, die sich direkt bei Amazon Cognito authentifizieren. Kunden dieser Art stellen direkte API Anfragen an Amazon Cognito Public API Operations. Amplify-Clients sammeln standardmäßig automatisch Kontextdaten für erweiterte Sicherheitsfunktionen.
Amplify-Anwendungen mit JavaScript sind eine Ausnahme. Sie erfordern das Hinzufügen eines JavaScript Moduls, das Benutzerkontextdaten sammelt.
Normalerweise verwendet eine Anwendung in dieser Konfiguration nicht authentifizierte API Operationen wie InitiateAuthund. RespondToAuthChallenge Das UserContextDataObjekt hilft dabei, die Risiken für diese Operationen genauer einzuschätzen. Das Amplify SDKs fügt Geräte- und Sitzungsinformationen zu einem EncodedData
Parameter von UserContextData
hinzu.
Sammeln von Kontextdaten in Client-Server-Anwendungen
Einige Anwendungen haben eine Front-End-Stufe, die Benutzerauthentifizierungsdaten sammelt, und eine Anwendungs-Back-End-Stufe, die Authentifizierungsanfragen an Amazon Cognito sendet. Dies ist eine gängige Architektur für Webserver und Anwendungen, die durch Microservices unterstützt werden. In diesen Anwendungen müssen Sie eine öffentliche Bibliothek zur Erfassung von Kontextdaten importieren.
In der Regel verwendet ein Anwendungsserver in dieser Konfiguration authentifizierte API Operationen wie AdminInitiateAuthund. AdminRespondToAuthChallenge Das ContextDataObjekt hilft Amazon Cognito dabei, Risiken für diese Operationen genauer einzuschätzen. Der Inhalt von besteht aus ContextData
den codierten Daten, die Ihr Front-End an Ihren Server weitergegeben hat, und zusätzlichen Details aus der HTTP Anfrage des Benutzers an Ihren Server. Diese zusätzlichen Kontextdetails, wie die HTTP Header und die IP-Adresse, liefern Ihrem Anwendungsserver die Merkmale der Benutzerumgebung.
Ihr Anwendungsserver kann sich auch mit nicht authentifizierten API Vorgängen wie und anmelden. InitiateAuthRespondToAuthChallenge Das UserContextDataObjekt dient als Grundlage für die erweiterte Analyse der Sicherheitsrisiken bei diesen Vorgängen. Die Operationen in den verfügbaren Bibliotheken für die Datenerfassung im öffentlichen Kontext fügen dem EncodedData
Parameter in Authentifizierungsanforderungen Sicherheitsinformationen hinzu. Konfigurieren Sie Ihren Benutzerpool außerdem so, dass er zusätzliche Kontextdaten akzeptiert, und fügen Sie dem IpAddress
Parameter von die Quell-IP des Benutzers hinzuUserContextData
.
Um Kontextdaten zu Client-Server-Anwendungen hinzuzufügen
-
Erfassen Sie in Ihrer Front-End-Anwendung codierte Kontextdaten vom Client mit einem iOS-, Android- oder JavaScript Modul.
-
Übergeben Sie die codierten Daten und die Details der Authentifizierungsanfrage an Ihren Anwendungsserver.
-
Extrahieren Sie auf Ihrem Anwendungsserver die IP-Adresse des Benutzers, die relevanten HTTP Header, den angeforderten Servernamen und den angeforderten Pfad aus der HTTP Anfrage. Füllen Sie diese Werte in den ContextDataParameter Ihrer API Anfrage an Amazon Cognito ein.
-
Füllen Sie den
EncodedData
Parameter vonContextData
in Ihrer API Anfrage mit den codierten Gerätedaten aus, die Ihr Modul gesammelt hat. SDK Fügen Sie diese Kontextdaten zur Authentifizierungsanfrage hinzu.
Kontextdatenbibliotheken für Client-Server-Anwendungen
JavaScript
Das amazon-cognito-advanced-security-data.min.js
Modul sammelt DatenEncodedData
, die Sie an Ihren Anwendungsserver übergeben können.
Fügen Sie das amazon-cognito-advanced-security-data.min.js
Modul zu Ihrer JavaScript Konfiguration hinzu. <region>
Ersetzen Sie es durch einen AWS-Region aus der folgenden Liste: us-east-1
us-east-2
,us-west-2
,eu-west-1
,eu-west-2
, odereu-central-1
.
<script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js"></script>
Um ein encodedContextData
Objekt zu generieren, das Sie im EncodedData
Parameter verwenden können, fügen Sie Ihrer JavaScript Anwendungsquelle Folgendes hinzu:
var encodedContextData = AmazonCognitoAdvancedSecurityData.getData(_username, _userpoolId, _userPoolClientId);
iOS/Swift
Um Kontextdaten zu generieren, können iOS-Anwendungen das Modul Mobile SDK for iOS
Um aus Sicherheitsgründen verschlüsselte Kontextdaten zu sammeln, fügen Sie Ihrer Anwendung den folgenden Ausschnitt hinzu:
import AWSCognitoIdentityProviderASF let deviceId = getDeviceId() let encodedContextData = AWSCognitoIdentityProviderASF.userContextData( userPoolId, username: username, deviceId: deviceId, userPoolClientId: userPoolClientId) /** * Reuse DeviceId from keychain or generate one for the first time. */ func getDeviceId() -> String { let deviceIdKey = getKeyChainKey(namespace: userPoolId, key: "AWSCognitoAuthAsfDeviceId") if let existingDeviceId = self.keychain.string(forKey: deviceIdKey) { return existingDeviceId } let newDeviceId = UUID().uuidString self.keychain.setString(newDeviceId, forKey: deviceIdKey) return newDeviceId } /** * Get a namespaced keychain key given a namespace and key */ func getKeyChainKey(namespace: String, key: String) -> String { return "\(namespace).\(key)" }
Android
Um Kontextdaten zu generieren, können Android-Anwendungen das Mobile SDK for Android-Modul
Um aus Sicherheitsgründen verschlüsselte Kontextdaten zu sammeln, fügen Sie Ihrer Anwendung den folgenden Ausschnitt hinzu:
UserContextDataProvider provider = UserContextDataProvider.getInstance(); // context here is android application context. String encodedContextData = provider.getEncodedContextData(context, username, userPoolId, userPoolClientId);