Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengumpulkan data untuk perlindungan ancaman dalam aplikasi
Otentikasi adaptif Amazon Cognito mengevaluasi tingkat risiko untuk upaya pengambilalihan akun dari detail kontekstual upaya masuk pengguna. Aplikasi Anda harus menambahkan data konteks ke permintaan API agar perlindungan ancaman Amazon Cognito dapat mengevaluasi risiko dengan lebih akurat. Data konteks adalah informasi seperti alamat IP, agen browser, informasi perangkat, dan header permintaan yang menyediakan informasi kontekstual tentang bagaimana pengguna terhubung ke kumpulan pengguna Anda.
Tanggung jawab utama aplikasi yang mengirimkan konteks ini ke Amazon Cognito adalah EncodedData parameter dalam permintaan otentikasi ke kumpulan pengguna. Untuk menambahkan data ini ke permintaan Anda, Anda dapat menerapkan Amazon Cognito dengan SDK yang secara otomatis menghasilkan informasi ini untuk Anda, atau Anda dapat menerapkan modul untuk JavaScript, iOS, atau Android yang mengumpulkan data ini. Client-onlyaplikasi yang membuat permintaan langsung ke Amazon Cognito harus mengimplementasikan AWS Amplify SDK. Client-serveraplikasi yang memiliki server perantara atau komponen API harus mengimplementasikan modul SDK terpisah.
Dalam skenario berikut, front end otentikasi Anda mengelola pengumpulan data konteks pengguna tanpa konfigurasi tambahan apa pun:
-
Login terkelola secara otomatis mengumpulkan dan mengirimkan data konteks ke perlindungan ancaman.
-
Semua AWS Amplify pustaka memiliki pengumpulan data konteks yang dibangun ke dalam metode otentikasi mereka.
Mengirimkan data konteks pengguna dalam aplikasi khusus klien dengan Amplify
Amplify SDK mendukung klien seluler yang melakukan otentikasi dengan Amazon Cognito secara langsung. Klien semacam ini membuat permintaan API langsung ke operasi API publik Amazon Cognito. Klien Amplify secara otomatis mengumpulkan data konteks untuk perlindungan ancaman secara default.
Amplify aplikasi dengan peng JavaScript ecualian. Mereka memerlukan penambahan JavaScript modul yang mengumpulkan data konteks pengguna.
Biasanya, aplikasi dalam konfigurasi ini menggunakan operasi API yang tidak diautentikasi seperti InitiateAuth dan. RespondToAuthChallenge Ob UserContextData jek membantu mengevaluasi risiko lebih akurat untuk operasi ini. Amplify SDK menambahkan informasi perangkat dan sesi ke EncodedData parameter. UserContextData
Mengumpulkan data konteks dalam aplikasi client-server
Beberapa aplikasi memiliki tingkat front-end yang mengumpulkan data otentikasi pengguna dan tingkat back-end aplikasi yang mengirimkan permintaan otentikasi ke Amazon Cognito. Ini adalah arsitektur umum di server web dan aplikasi yang didukung oleh layanan mikro. Dalam aplikasi ini, Anda harus mengimpor pustaka pengumpulan data konteks publik.
Biasanya, server aplikasi dalam konfigurasi ini menggunakan operasi API yang diautentikasi seperti AdminInitiateAuth dan AdminRespondToAuthChallenge. Ob ContextData jek membantu Amazon Cognito mengevaluasi risiko lebih akurat untuk operasi ini. Isinya ContextData adalah data yang dikodekan yang diteruskan oleh front-end Anda ke server Anda, dan detail tambahan dari permintaan HTTP pengguna ke server Anda. Detail konteks tambahan ini, seperti header HTTP dan alamat IP, memberikan server aplikasi Anda dengan karakteristik lingkungan pengguna.
Server aplikasi Anda mungkin juga melakukan login dengan operasi API yang tidak diautentikasi seperti dan. InitiateAuth RespondToAuthChallenge Ob UserContextData jek menginformasikan analisis risiko perlindungan ancaman dalam operasi ini. Operasi di pustaka pengumpulan data konteks publik yang tersedia menambahkan informasi keamanan ke EncodedData parameter dalam permintaan otentikasi. Selain itu, konfigurasikan kumpulan pengguna Anda untuk menerima data konteks tambahan dan menambahkan IP sumber pengguna ke IpAddress parameterUserContextData.
Untuk menambahkan data konteks ke aplikasi client-server
-
Di aplikasi front-end Anda, kumpulkan data konteks yang dikodekan dari klien dengan iOS, Android, atau JavaScript modul.
-
Berikan data yang dikodekan dan detail permintaan otentikasi ke server aplikasi Anda.
-
Di server aplikasi Anda, ekstrak alamat IP pengguna, header HTTP yang relevan, nama server yang diminta, dan jalur yang diminta dari permintaan HTTP. Isi nilai-nilai ini ke ContextData parameter permintaan API Anda ke Amazon Cognito.
-
Isi
EncodedDataparameterContextDatadalam permintaan API Anda dengan data perangkat yang dikodekan yang dikumpulkan modul SDK Anda. Tambahkan data konteks ini ke permintaan otentikasi.
Pustaka data konteks untuk aplikasi client-server
JavaScript
amazon-cognito-advanced-security-data.min.jsModul mengumpulkan EncodedData yang dapat Anda lewati ke server aplikasi Anda.
Tambahkan amazon-cognito-advanced-security-data.min.js modul ke JavaScript konfigurasi Anda. Ganti <region> dengan sebuah Wilayah AWS dari daftar berikut:us-east-1,us-east-2,us-west-2,eu-west-1,eu-west-2, ataueu-central-1.
<script src="https://amazon-cognito-assets.<region>.amazoncognito.com/amazon-cognito-advanced-security-data.min.js"></script>
Untuk menghasilkan encodedContextData objek yang dapat Anda gunakan dalam EncodedData parameter, tambahkan yang berikut ini ke sumber JavaScript aplikasi Anda:
var encodedContextData = AmazonCognitoAdvancedSecurityData.getData(_username, _userpoolId, _userPoolClientId);
iOS/Swift
Untuk menghasilkan data konteks, aplikasi iOS dapat mengintegrasikan modul
Untuk mengumpulkan data konteks yang dikodekan untuk perlindungan ancaman, tambahkan cuplikan berikut ke aplikasi Anda:
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
Untuk menghasilkan data konteks, aplikasi Android dapat mengintegrasikan modul
Untuk mengumpulkan data konteks yang dikodekan untuk perlindungan ancaman, tambahkan cuplikan berikut ke aplikasi Anda:
UserContextDataProvider provider = UserContextDataProvider.getInstance(); // context here is android application context. String encodedContextData = provider.getEncodedContextData(context, username, userPoolId, userPoolClientId);