

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 für den Schutz vor Bedrohungen in Anwendungen
<a name="user-pool-settings-viewing-threat-protection-app"></a>

Die [adaptive Authentifizierung](cognito-user-pool-settings-adaptive-authentication.md) 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 Threat Protection 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 SDK implementieren, 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 SDK-Modul implementieren.

In den folgenden Szenarien verwaltet Ihr Authentifizierungs-Frontend die Erfassung von Benutzerkontextdaten ohne zusätzliche Konfiguration:
+ Managed Login sammelt automatisch Kontextdaten und leitet sie an den Bedrohungsschutz weiter.
+ Alle AWS Amplify Bibliotheken haben die Erfassung von Kontextdaten in ihre Authentifizierungsmethoden integriert.

## Senden von Benutzerkontextdaten in reinen Client-Anwendungen mit Amplify
<a name="user-pool-settings-viewing-threat-protection-app-amplify"></a>

![\[Ein Überblick über die Datenerfassung zum Schutz vor Bedrohungen in einer Amplify-Anwendung.\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/user-pools-asf-amplify-data-collection.png)


Amplify SDKs unterstützt mobile Clients, die sich direkt bei Amazon Cognito authentifizieren. Kunden dieser Art stellen direkte API-Anfragen an öffentliche API-Operationen von Amazon Cognito. Amplify-Clients sammeln standardmäßig automatisch Kontextdaten zum Schutz vor Bedrohungen.

Amplify-Anwendungen mit JavaScript sind eine Ausnahme. Sie erfordern das Hinzufügen eines [JavaScript Moduls](#user-pool-settings-viewing-threat-protection-app-additional-resources-js), das Benutzerkontextdaten sammelt.

In der Regel verwendet eine Anwendung in dieser Konfiguration nicht authentifizierte API-Operationen wie [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)und. [RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html) Das [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UserContextDataType.html)Objekt 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
<a name="user-pool-settings-viewing-threat-protection-app-server-side"></a>

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.

![\[Ein Überblick über die serverseitige Authentifizierung mit Kontextdaten zum Bedrohungsschutz in. JavaScript\]](http://docs.aws.amazon.com/de_de/cognito/latest/developerguide/images/user-pools-asf-non-amplify-data-collection.png)


In der Regel verwendet ein Anwendungsserver in dieser Konfiguration authentifizierte API-Operationen wie [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)und. [AdminRespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminRespondToAuthChallenge.html) Das [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)Objekt 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-Operationen wie und anmelden. [InitiateAuth[RespondToAuthChallenge](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_RespondToAuthChallenge.html)](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) Das [UserContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html#CognitoUserPools-InitiateAuth-request-UserContextData)Objekt dient als Grundlage für die Risikoanalyse des Bedrohungsschutzes 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 hinzu`UserContextData`.

**Um Kontextdaten zu Client-Server-Anwendungen hinzuzufügen**

1. Erfassen Sie in Ihrer Front-End-Anwendung codierte Kontextdaten vom Client mit einem [iOS-, Android- oder JavaScript Modul](#user-pool-settings-viewing-threat-protection-app-additional-resources).

1. Übergeben Sie die codierten Daten und die Details der Authentifizierungsanfrage an Ihren Anwendungsserver.

1. 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 [ContextData](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html#CognitoUserPools-AdminInitiateAuth-request-ContextData)Parameter Ihrer API-Anfrage an Amazon Cognito ein.

1. Füllen Sie den `EncodedData` Parameter von `ContextData` in Ihrer API-Anfrage mit den codierten Gerätedaten aus, die Ihr SDK-Modul gesammelt hat. Fügen Sie diese Kontextdaten zur Authentifizierungsanfrage hinzu.

## Kontextdatenbibliotheken für Client-Server-Anwendungen
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources"></a>

### JavaScript
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-js"></a>

Das `amazon-cognito-advanced-security-data.min.js` Modul sammelt Daten`EncodedData`, 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`, oder`eu-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
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-ios"></a>

Um Kontextdaten zu generieren, können iOS-Anwendungen das [Mobile SDK for iOS iOS-Modul AWSCognito](https://github.com/aws-amplify/aws-sdk-ios/tree/main) [IdentityProviderASF](https://github.com/aws-amplify/aws-sdk-ios/tree/main/AWSCognitoIdentityProviderASF) integrieren.

Um verschlüsselte Kontextdaten zum Schutz vor Bedrohungen zu sammeln, fügen Sie Ihrer Anwendung den folgenden Codeausschnitt 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
<a name="user-pool-settings-viewing-threat-protection-app-additional-resources-android"></a>

Um Kontextdaten zu generieren, können Android-Anwendungen das [Mobile SDK for Android aws-android-sdk-cognitoidentityprovider](https://github.com/aws-amplify/aws-sdk-android/tree/main) [-Modul -asf](https://github.com/aws-amplify/aws-sdk-android/tree/main/aws-android-sdk-cognitoidentityprovider-asf) integrieren.

Um verschlüsselte Kontextdaten zum Schutz vor Bedrohungen 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);
```