Amazon Cognito adalah layanan dari Amazon Web Services (AWS) yang digunakan untuk mengelola autentikasi pengguna dan kontrol akses pada aplikasi mobile di perangkat yang terhubung ke internet. Layanan ini menyimpan serta menyinkronkan data pengguna akhir, sehingga developer bisa fokus ke pengembangan kode aplikasi tanpa perlu pusing mengatur infrastruktur backend. Hasilnya, proses pengembangan aplikasi bisa jadi lebih cepat.
Kontrol akses melalui autentikasi dan otorisasi mencakup dua hal penting: memverifikasi identitas pengguna yang mencoba mengakses aplikasi atau perangkat, dan memastikan apakah mereka memang punya hak akses. Nah, Amazon Cognito hadir untuk membantu memastikan dua aspek penting ini berjalan dengan aman.
Amazon Cognito menyimpan atribut profil pengguna dalam direktori yang disebut user pools. Pool ini digunakan aplikasi (mobile atau web) untuk mengatur akses terbatas ke resource AWS. Sementara itu, identity pools menggabungkan informasi pengguna akhir dan mendistribusikannya ke berbagai platform, perangkat, dan OS untuk mendukung federasi identitas.
Data akan otomatis tersinkron ke AWS saat perangkat online, sehingga pengguna bisa mengakses data yang sama di perangkat lain. Kalau lagi offline, data bisa disimpan sementara di database lokal (SQLite), lalu disinkronkan lagi nanti. Amazon Cognito mengasosiasikan data dengan identitas, dan menyimpannya dalam bentuk pasangan key/value yang terenkripsi di Cognito Sync store. Setiap pengguna bisa menyimpan hingga 20 MB data, dengan masing-masing dataset maksimal 1 MB.
Developer juga bisa mengatur Amazon Cognito agar menerima aliran event ketika data diperbarui atau disinkronkan. Selain itu, aplikasi mobile juga bisa mengakses data melalui layanan AWS lainnya, seperti Amazon Redshift, RDS, atau Amazon S3.
Apa saja kegunaan Amazon Cognito?
Amazon Cognito memudahkan autentikasi, otorisasi, dan manajemen pengguna untuk aplikasi web dan mobile. Pengguna bisa login dengan username dan password lewat Amazon, atau menggunakan layanan pihak ketiga seperti Facebook, Google, maupun Apple.
Dengan Cognito, seorang developer bisa:
- Menambahkan fitur sign-up, sign-in, dan kontrol akses ke aplikasi menggunakan antarmuka UI bawaan yang simpel dan mudah dikonfigurasi
- Federasi identitas dari penyedia identitas sosial (social login)
- Menyinkronkan data antar perangkat dan aplikasi
- Memberikan akses aman ke layanan AWS lain lewat role yang dikaitkan dengan pengguna
Karena semua urusan autentikasi ditangani oleh Cognito, developer bisa lebih fokus pada pengembangan aplikasi. Ini mempercepat proses development, mempersingkat waktu rilis, dan mempercepat time-to-market maupun time-to-value.
Amazon Cognito termasuk dalam ekosistem AWS. Layanan ini dikelola melalui AWS Management Console, tempat organisasi bisa mengelola akun Cognito mereka, termasuk billing dan monitoring.
Perbedaan user pools dan identity pools
Dua komponen utama dari Amazon Cognito adalah:
- User pools: Direktori pengguna yang menyediakan opsi sign-up dan sign-in untuk aplikasi.
- Identity pools: Elemen Cognito yang memberikan akses pengguna ke layanan AWS (contohnya S3 atau DynamoDB).
User pool memungkinkan login melalui Amazon Cognito, social login (Google, Facebook), maupun penyedia identitas SAML. Tiap user akan punya profil direktori yang bisa diakses developer via SDK. Fitur lainnya termasuk cek kredensial yang bocor, verifikasi email/telepon, serta MFA. Developer juga bisa pakai AWS Lambda untuk menambahkan logika custom.
Sementara itu, identity pool memungkinkan pemberian akses ke resource AWS lewat user pools, federated identity provider, bahkan guest user (tanpa login). Dengan ini, organisasi bisa bikin identitas unik dan atur izin akses tiap pengguna.
User pools dan identity pools bisa digunakan secara terpisah maupun bersamaan.
Dukungan SDK
Developer aplikasi mobile bisa pakai SDK untuk integrasi dengan Cognito atau langsung akses API server-side. AWS menyediakan SDK ini di AWS Mobile SDK (iOS, Android, Unity, Kindle Fire), termasuk juga AWS SDK for JavaScript yang mendukung Cognito secara penuh.
Cara kerja autentikasi Cognito: 4 langkah
Kalau user pools dan identity pools digabung, proses autentikasi akan berjalan seperti ini:
- Pengguna login lewat user pool
- Setelah sukses, mereka menerima token dari user pool
- Aplikasi menukar token itu ke credentials AWS lewat identity pool
- Pengguna pakai credentials tersebut untuk akses layanan AWS lainnya
Menyinkronkan data pengguna dengan AWS Cognito Sync
AWS Cognito Sync memungkinkan sinkronisasi data profil pengguna antar perangkat mobile dan web app. Layanan ini juga memberikan user ID dan credentials yang konsisten untuk akses ke resource AWS.
Fitur ini mendukung Android dan iOS melalui client library yang menyimpan data secara lokal, jadi tetap bisa diakses walaupun offline.
Data pengguna disimpan di dalam dataset, dan hanya bisa diakses oleh identitas yang sesuai. Untuk memakai Cognito Sync, perlu dibuat identity pool terlebih dahulu.
Keamanan dan perlindungan data di Amazon Cognito
Keamanan Amazon Cognito mengikuti model shared responsibility dari AWS: AWS menjamin keamanan infrastruktur cloud, sedangkan organisasi bertanggung jawab atas keamanan data di dalamnya.
Amazon Cognito mendukung MFA, enkripsi data at rest dan in transit, serta telah sesuai dengan berbagai standar keamanan data seperti:
Cognito juga mendukung berbagai fitur IAM seperti:
- Kebijakan berbasis identitas
- Aksi berbasis kebijakan
- Credentials sementara
- Service role
- Service-linked role
Harga Amazon Cognito
Harga Amazon Cognito didasarkan pada jumlah Monthly Active Users (MAU). Pengguna dihitung sebagai MAU jika mereka melakukan sign-up, sign-in, refresh token, atau ganti password dalam 1 bulan kalender.
Penggunaan untuk 50.000 MAU pertama adalah gratis. Setelah itu, harga akan mengikuti model tier berdasarkan jumlah MAU.
Untuk Cognito Sync, biaya dihitung dari jumlah operasi sinkronisasi dan besar data yang disimpan. Dalam AWS free tier, pengguna bisa menyimpan hingga 10 GB data dan melakukan 1 juta sync operation per bulan selama 12 bulan pertama. Setelah itu, biaya sebesar $0.15 per GB per bulan, dan $0.15 per 10.000 operasi sync akan dikenakan.