Halaman ini diterjemahkan secara otomatis. Baca versi asli berbahasa Inggris di sini.
| Pendekatan | Adopsi | Membuat Kunci Sandi | Menggunakan Kunci Sandi | Mengelola Kunci Sandi | Kompleksitas Teknis | Dukungan OAuth |
|---|---|---|---|---|---|---|
| Implementasi Native | 🟢🟢🟢 | Adopsi tinggi, UX terbaik, biometrik mulus | Autentikasi instan, senyap | Kontrol native penuh | Menengah-Tinggi | Membutuhkan alur terpisah |
| System WebView | 🟢🟢 | Adopsi baik, pengalaman seperti browser | UX browser standar, keychain bersama | Pengelolaan berbasis browser | Rendah | Sangat baik |
| Embedded WebView | 🟢 | Adopsi lebih rendah, memerlukan lebih banyak penyiapan | Dukungan native iOS & Android (WebKit 1.12.1+), tanpa Conditional UI | Kontrol terbatas | Menengah-Tinggi | Tidak Tersedia |
Catatan: System dan Embedded WebView sering digabungkan di mana System WebView menangani login (dengan berbagi kredensial otomatis), kemudian Embedded WebView merender pengelolaan kunci sandi dalam pengaturan.
Faktor Keputusan Utama:
Platform seluler modern menyediakan tiga pendekatan berbeda untuk mengintegrasikan kunci sandi ke dalam aplikasi native Anda, masing-masing dengan kelebihan dan kekurangan untuk pengalaman pengguna, kompleksitas teknis, dan kompatibilitas OAuth:
Implementasi Native: Bangun alur kunci sandi secara langsung ke dalam UI aplikasi Anda menggunakan platform API (iOS AuthenticationServices, Android Credential Manager). Memberikan pengalaman pengguna terbaik dengan autentikasi biometrik yang mulus, tetapi membutuhkan upaya implementasi teknis menengah hingga tinggi.
System WebView: Gunakan komponen browser platform (iOS ASWebAuthenticationSession / SFSafariViewController, Android Chrome Custom Tabs) untuk menangani autentikasi. Sangat baik untuk alur login berbasis OAuth dan berbagi kredensial dengan browser sistem.
Embedded WebView: Sematkan tampilan web yang dapat disesuaikan (iOS WKWebView, Android WebView) dalam aplikasi Anda untuk menggunakan kembali autentikasi web dengan kerangka aplikasi native. Memberikan tampilan seperti native tanpa bilah URL dan kontrol penuh atas UI tampilan web. Memerlukan penyiapan tambahan termasuk izin dan entitlement (iOS), dan konfigurasi WebView dengan AndroidX WebKit 1.12.1+ (Android) untuk mengaktifkan fungsi kunci sandi.
Pilihan yang tepat bergantung pada arsitektur autentikasi aplikasi Anda, apakah Anda menggunakan penyedia OAuth, seberapa banyak kontrol yang Anda butuhkan atas UI, dan apakah Anda membangun native-first atau menggunakan kembali komponen web.
Whitepaper Passkey Enterprise. Panduan praktis, pola peluncuran, dan KPI untuk program passkeys.
Artikel terbaru
♟️
Mengapa Anda Membutuhkan Observabilitas Autentikasi untuk CIAM
🔑
Penjelasan Kredensial Sesi Terikat Perangkat (DBSC)
📖
Relying Party ID (rpID) WebAuthn & Kunci Sandi: Domain & Aplikasi Native
♟️
Strategi Kunci Sandi: Mengapa Implementasi Kunci Sandi Anda Akan Gagal
♟️
Masalah Hari Ke-2 Kunci Sandi: 5 Risiko setelah Peluncuran
Implementasi kunci sandi native memberikan pengalaman pengguna yang optimal, dengan alur autentikasi yang dibangun langsung ke dalam UI aplikasi Anda menggunakan API spesifik platform. Pengguna mendapat manfaat dari dialog native platform, verifikasi biometrik yang mulus, dan waktu login tercepat yang memungkinkan.
Kapan memilih Implementasi Native:
preferImmediatelyAvailableCredentials untuk
menampilkan hamparan kunci sandi secara otomatis
ketika kunci sandi tersedia, memberikan pengalaman login tercepat tanpa perlu memasukkan
pengidentifikasiKeuntungan Utama: preferImmediatelyAvailableCredentials()
Implementasi native dapat memanfaatkan preferImmediatelyAvailableCredentials() untuk
membuat
hamparan kunci sandi otomatis
yang muncul segera saat aplikasi dimulai ketika kunci sandi tersedia. Alur tanpa nama
pengguna ini memberikan pengalaman login tercepat—pengguna melihat kunci sandi mereka
secara instan tanpa memasukkan pengidentifikasi terlebih dahulu. Kemampuan ini eksklusif
untuk implementasi native dan tidak tersedia di varian WebView.
Diagram di bawah ini mengilustrasikan bagaimana autentikasi native memberikan perjalanan pengguna yang lebih cepat dibandingkan dengan pendekatan Conditional UI WebView:
Hamparan otomatis native memberikan UX superior dengan tingkat penggunaan kunci sandi yang lebih tinggi karena autentikasi dimulai segera setelah aplikasi diluncurkan, sedangkan implementasi WebView mengharuskan pengguna berinteraksi dengan kolom input terlebih dahulu.
Tinjauan Persyaratan Teknis:
Integrasi kunci sandi native membutuhkan kepercayaan kriptografi antara aplikasi dan domain web Anda. Tanpanya, OS akan menolak semua operasi WebAuthn. Persyaratan utama:
/.well-known/Manfaat utamanya: kunci sandi yang dibuat di situs web Anda berfungsi mulus di aplikasi Anda dan sebaliknya.
Menerapkan kunci sandi secara native di iOS melibatkan kerangka kerja AuthenticationServices Apple, yang menyediakan API untuk operasi WebAuthn:
Komponen Utama:
ASAuthorizationController: Mengelola alur autentikasiASAuthorizationPlatformPublicKeyCredentialProvider: Membuat permintaan kunci sandiKiat Pengembangan
?mode=developer ke URL AASA Anda untuk memaksa pengambilan file
baruImplementasi kunci sandi native Android menggunakan Credential Manager API (atau FIDO2 API yang lebih lama untuk kompatibilitas ke belakang):
Komponen Utama:
CredentialManager: API sentral untuk semua operasi kredensialCreatePublicKeyCredentialRequest: Untuk
pendaftaran kunci sandiGetCredentialRequest: Untuk autentikasi kunci sandiCatatan: Android saat ini tidak memiliki saran keyboard Conditional UI seperti iOS di aplikasi native (meskipun Conditional UI berfungsi di aplikasi web)
Menerapkan kunci sandi secara native memiliki tantangan penting dan pelajaran yang bisa diambil: Mengintegrasikan pada tingkat OS dapat memunculkan masalah di berbagai perangkat dan versi OS.
Walaupun Anda dapat mengimplementasikan kunci sandi menggunakan API platform dasar, SDK yang dibuat khusus secara signifikan mempercepat pengembangan dengan menangani kompleksitas WebAuthn, edge cases, dan menyediakan telemetri bawaan. SDK juga menawarkan antarmuka yang dapat di-mock untuk pengujian unit (penting karena Anda tidak dapat menguji biometrik di simulator).
Rekomendasi: Untuk implementasi native, kami menyarankan menggunakan Corbado SDKs (iOS Swift Passkey SDK, Android Kotlin Passkey SDK) yang menangani berbagai kasus edge case yang ditemukan melalui penerapan produksi, memberikan telemetri tambahan dan pengujian.
Igor Gjorgjioski
Head of Digital Channels & Platform Enablement, VicRoads
We hit 80% mobile passkey activation across 5M+ users without replacing our IDP.
See how VicRoads scaled passkeys to 5M+ users — alongside their existing IDP.
Read the case studySystem WebView menggunakan komponen browser native platform untuk menangani autentikasi di dalam aplikasi Anda. Tidak seperti implementasi yang sepenuhnya native, System WebView menampilkan konten web menggunakan browser sistem yang sebenarnya (Safari di iOS, Chrome di Android), memelihara cookie bersama, kredensial tersimpan, dan indikator keamanan browser yang sudah dikenal.
Kapan memilih System WebView:
Keuntungan Utama:
Komponen Platform:
ASWebAuthenticationSession (disarankan untuk alur autentikasi) atau
SFSafariViewController (penjelajahan umum)Perusahaan besar seperti Google dan GitHub mengadopsi pendekatan ini untuk menambahkan login kunci sandi ke aplikasi seluler mereka melalui hamparan WebView di halaman autentikasi web yang ada. Ini berfungsi dengan baik bila pembuatan ulang autentikasi native sepenuhnya belum memungkinkan.
iOS menyediakan dua komponen System WebView utama untuk autentikasi:
ASWebAuthenticationSession (Disarankan untuk Autentikasi):
SFSafariViewController (Penjelajahan Umum):
| Fitur | ASWebAuthenticationSession | SFSafariViewController |
|---|---|---|
| Kasus Penggunaan Utama | Alur autentikasi | Penjelajahan web umum |
| OAuth/OIDC | Sangat baik | Baik |
| Dukungan Kunci Sandi | Ya | Ya |
| Penyesuaian | Terbatas | Minimal |
Jika aplikasi Anda menggunakan login berbasis OAuth, ASWebAuthenticationSession
adalah pilihan yang disarankan karena dirancang khusus untuk skenario autentikasi dan
memberikan keseimbangan terbaik antara keamanan dan pengalaman pengguna.
Chrome Custom Tabs (CCT) memberikan pengalaman autentikasi yang didukung Chrome dalam aplikasi Anda:
Fitur Utama:
Integrasi OAuth: Chrome Custom Tabs adalah ekuivalen Android dari ASWebAuthenticationSession iOS, memberikan dukungan OAuth yang sangat baik sambil mempertahankan akses ke kunci sandi yang disimpan.
Coba passkeys dalam demo live.
Embedded WebView memberikan kontrol penuh atas perenderan konten web di dalam aplikasi Anda, memungkinkan manipulasi langsung cookie, sesi, dan navigasi tanpa bilah URL. Namun, kontrol ini disertai dengan persyaratan teknis tambahan untuk mengaktifkan fungsionalitas kunci sandi.
Kapan memilih Embedded WebView:
Konteks Penting:
Banyak aplikasi menggunakan pendekatan hybrid: System WebView menangani autentikasi OAuth awal (di mana kunci sandi berfungsi dengan mulus), lalu beralih ke Embedded WebView untuk pasca-autentikasi guna mengelola kunci sandi di pengaturan. Tantangan muncul ketika mencoba menggunakan kunci sandi secara langsung di dalam Embedded WebView.
Persyaratan Teknis:
Embedded WebView memerlukan penyiapan tambahan dibandingkan dengan System WebView:
Komponen Platform:
WKWebViewandroid.webkit.WebViewPertukaran:
Saat menerapkan kunci sandi melalui WebView, memahami perbedaan antara System WebView dan Embedded WebView sangat penting. Tiga pendekatan yang diuraikan di atas (Implementasi Native, System WebView, dan Embedded WebView) masing-masing melayani kasus penggunaan yang berbeda.
Di iOS, Anda memiliki beberapa opsi untuk menampilkan konten web di dalam aplikasi:
Di Android, pilihan utamanya adalah:
android.webkit.WebView), yang pada
dasarnya adalah browser mini yang dapat disematkan di aktivitas Anda. Ia sangat dapat
disesuaikan tetapi berjalan di proses aplikasi Anda.Di bagian selanjutnya, kita akan menggali lebih dalam jenis-jenis WebView untuk iOS dan Android ini, dan membahas mana yang mungkin paling cocok untuk alur autentikasi kunci sandi.
Berlangganan Passkeys Substack kami untuk berita terbaru.
Platform Apple menyediakan tiga opsi WebView yang tercantum di atas. Pilihan Anda akan memengaruhi seberapa lancar kunci sandi dapat digunakan di dalam aplikasi:
Untuk menguji berbagai perilaku WebView di iOS, kami merekomendasikan aplikasi WebView - WKWebView and UIWebView rendering.
WKWebView adalah komponen WebView serbaguna untuk iOS. Pengembang dapat menyematkan WKWebView untuk merender konten web dengan kontrol tingkat tinggi atas UI dan perilakunya. WKWebView menggunakan mesin rendering yang sama dengan Safari, jadi sangat efisien dan mendukung fitur web modern. Secara teori, WKWebView dapat menangani WebAuthn (dan karenanya kunci sandi) jika dikonfigurasi dengan benar, tetapi perhatikan bahwa beberapa fitur browser lanjutan mungkin dibatasi untuk keamanan. Satu hal yang perlu diwaspadai adalah bahwa WKWebView secara default tidak berbagi cookie atau data keychain dengan Mobile Safari. Pengguna mungkin harus login kembali karena sesi WebView mereka terisolasi dari sesi Safari. Juga, karena konten WKWebView dapat disesuaikan sepenuhnya oleh aplikasi, pengguna tidak melihat bilah alamat atau UI Safari – yang bagus untuk pencitraan merek, tetapi berarti pengguna memiliki lebih sedikit petunjuk untuk memverifikasi keabsahan halaman (kekhawatiran untuk anti-phising). Beberapa aplikasi bahkan telah menyalahgunakan WKWebView untuk menyuntikkan skrip atau mengubah konten (mis. TikTok diketahui menyuntikkan JS pelacakan melalui browser dalam aplikasi mereka), jadi seseorang harus berhati-hati untuk menggunakan WKWebView dengan cara yang aman dan tepercaya.
SFSafariViewController menyediakan pengalaman Safari dalam aplikasi. Saat Anda membuka URL dengan SFSafariViewController, hal ini hampir seperti membukanya di browser Safari yang sebenarnya, kecuali pengguna tetap berada di dalam UI aplikasi Anda. Keuntungan untuk kunci sandi signifikan: karena ini pada dasarnya adalah Safari, iCloud Keychain dan kunci sandi tersimpan milik pengguna dapat diakses. Perhatikan bahwa cookie tidak dibagikan di iOS 11+. Ini berarti jika pengguna telah memiliki kunci sandi untuk situs Anda, Safari dapat menemukannya dan bahkan menampilkan isian otomatis Conditional UI untuk login yang mudah. SFSafariViewController kurang dapat disesuaikan (Anda tidak dapat banyak mengubah bilah alatnya), tetapi ia secara otomatis menangani banyak fitur keamanan dan privasi. Bilah URL ditampilkan, lengkap dengan ikon gembok untuk HTTPS, yang memberi pengguna keyakinan bahwa mereka berada di domain yang benar. Secara umum, SFSafariViewController dianggap lebih aman daripada WKWebView biasa dan lebih mudah diimplementasikan (Apple menyediakannya sebagai drop-in). Pengorbanan utamanya adalah Anda mengorbankan sebagian kontrol atas tampilan dan nuansa. Untuk alur autentikasi, hal itu biasanya dapat diterima. Prioritas di sini adalah keamanan dan kemudahan login, di mana SFSafariViewController unggul dengan menggunakan konteks Safari.
| WKWebView | SFSafariViewController | |
|---|---|---|
| Pengalaman pengguna | - Perasaan native: Pengguna mungkin merasa bahwa konten web adalah bagian native dari aplikasi karena pengembang dapat menyesuaikan tampilan dan nuansa agar sesuai dengan desain aplikasi. - Isi Otomatis: Isi otomatis dengan data dari Safari dimungkinkan | - Mulus: Pengalaman pengguna yang mulus menggunakan pengaturan Safari pengguna yang memastikan penjelajahan web yang konsisten antara aplikasi native dan browser. |
| Pengalaman pengembang | - Sangat dapat disesuaikan: Tersedia penyesuaian dan konfigurasi ekstensif - Fleksibel: Banyak API untuk berinteraksi dengan konten web | - Sedang dapat disesuaikan: Opsi penyesuaian terbatas, terutama dibandingkan dengan WKWebView, - Sederhana: Lebih mudah diimplementasikan dibandingkan WKWebView |
| Kinerja | - Agak lambat: Bergantung pada implementasi dan konten web, kecepatan pemuatan dapat dioptimalkan, tetapi mungkin masih lebih lambat dibandingkan dengan SFSafariViewController karena pemrosesan tambahan pada fitur dan interaksi kustom. | - Agak cepat: Biasanya menawarkan kinerja yang lebih baik karena ia memanfaatkan mesin Safari, yang dioptimalkan untuk kecepatan dan efisiensi, memberikan waktu muat cepat untuk halaman web. |
| Kepercayaan dan pengenalan | - Penampilan URL tidak diperlukan: WKWebView sering kali tidak menampilkan URL, membuat pengguna lebih sulit memverifikasi halaman web. Potensi aplikasi jahat untuk meniru perilaku ini dan memphising kredensial. | - Pengalaman seperti Browser: Merender halaman web menggunakan Safari, memberikan pengalaman "seperti browser". Pengguna dapat melihat URL dan mengakses fitur isi otomatis Safari, yang berpotensi menanamkan lebih banyak kepercayaan karena antarmuka yang familier. |
| Isolasi | - Terpisah: Cookie dan sesi dipisahkan dari Safari; pengguna tidak akan otomatis login di WKWebView. | - Terpisah: Cookie dan sesi dipisahkan dari Safari; pengguna juga tidak akan otomatis login di SFSafariViewController. |
| Kerentanan | - Aman: Pada dasarnya aman karena sistem sandboxing aplikasi Apple, tetapi perilaku dan keamanan bergantung pada implementasi aplikasi. Potensi kerentanan jika tidak diimplementasikan dengan benar. | - Lebih Aman: Mendapat manfaat dari fitur keamanan bawaan Safari, termasuk peringatan anti-phising dan situs web jahat. Secara umum dianggap lebih aman untuk menampilkan konten web daripada WKWebView berkat fitur ini dan keakraban pengguna dengan Safari. |
| Lainnya | - Fitur tidak tersedia: Beberapa fitur browser (mis. WebAuthn) mungkin tidak sepenuhnya dapat diakses karena masalah keamanan dan WKWebView yang berjalan di dalam konteks aplikasi. - Injeksi JavaScript: Beberapa aplikasi, mis. TikTok menyuntikkan JavaScript pelacakan ke dalam WKWebView dalam aplikasi mereka, atau membatasi pengontrol pengguna (mis. Facebook) - Masalah privasi: Lebih banyak umpan balik komunitas tentang privasi | - Tanpa injeksi JavaScript: Tidak mengizinkan eksekusi JavaScript dari aplikasi, yang meningkatkan keamanan dan privasi. Ia juga tidak mendukung alert atau konfirmasi JavaScript, yang berpotensi memengaruhi pengalaman pengguna pada halaman web tertentu. - Mode Pembaca: Menyediakan mode pembaca untuk versi artikel yang bersih dan mudah dibaca. |
SFAuthenticationSession / ASWebAuthenticationSession – Kelas-kelas ini (yang terakhir adalah nama ramah-Swift yang lebih baru) dibuat khusus untuk alur login seperti OAuth atau OpenID Connect. Saat Anda perlu mengautentikasi pengguna melalui halaman web (mungkin ke IdP eksternal), sesi ini adalah pilihan yang disarankan di iOS. Keduanya sangat mirip dengan SFSafariViewController dalam hal memanfaatkan browser Safari di latar belakang dan berbagi cookie/penyimpanan dengan Safari. Perbedaan utamanya adalah bahwa SFAuthenticationSession akan selalu meminta pengguna bahwa aplikasi ingin mengautentikasi menggunakan halaman web (untuk kesadaran pengguna) dan ia akan secara otomatis menggunakan sesi Safari pengguna yang sudah ada jika tersedia.
Manfaatnya adalah pengalaman SSO yang mulus – jika pengguna sudah login ke penyedia di Safari, sesi ini dapat menggunakan cookie tersebut untuk menghindari login lagi. Untuk kunci sandi, hal ini penting karena itu berarti setiap kredensial kunci sandi yang tersimpan di Safari/iCloud Keychain dapat digunakan di sini juga. Panduan resmi Apple adalah menggunakan ASWebAuthenticationSession untuk apa pun yang menyerupai alur login. Kelebihannya adalah privasi yang ditingkatkan (aplikasi Anda tidak pernah melihat kredensial atau cookie, Safari menanganinya) dan dukungan SSO bawaan. Kekurangannya adalah bahwa ia terbatas pada alur autentikasi (Anda tidak akan menggunakannya hanya untuk merender konten web arbiter di aplikasi Anda). Singkatnya, jika Anda memilih pendekatan WebView di iOS, ASWebAuthenticationSession biasanya adalah pilihan terbaik untuk mengimplementasikan kunci sandi karena ia aman, berbagi status dengan Safari dan dibuat khusus untuk autentikasi.
Lihat berapa banyak orang yang benar-benar memakai passkeys.
Di Android, keputusan WebView adalah antara WebView klasik dan Chrome Custom Tabs:
Untuk menguji berbagai perilaku WebView di Android, kami merekomendasikan aplikasi WebView vs Chrome Custom Tabs.
Android WebView (android.webkit.WebView) adalah komponen yang memungkinkan Anda menyematkan halaman web di tata letak aktivitas Anda. Ia mirip dengan WKWebView di mana ia memberi Anda kendali penuh: Anda dapat mencegat navigasi, menyuntikkan JavaScript, menyesuaikan UI, dsb. Ia juga berjalan di dalam proses aplikasi Anda. Menggunakan WebView untuk kunci sandi berarti aplikasi Anda memuat halaman login web Anda, dan halaman itu dapat memulai upacara kunci sandi WebAuthn. WebView Android modern mendukung WebAuthn (asalkan implementasi WebView perangkat mutakhir via Android System WebView atau komponen Chrome). Satu pertimbangan utama: secara default, WebView Android tidak berbagi cookie atau kredensial yang tersimpan dengan browser Chrome pengguna. Jadi kunci sandi apa pun yang dibuat atau digunakan di WebView mungkin tidak diketahui oleh Chrome, dan sebaliknya. Isolasi ini mungkin baik untuk keamanan (aplikasi Anda tidak dapat membaca cookie browser), tetapi dapat memaksa pengguna untuk login kembali jika mereka telah terautentikasi di Chrome. Masalah lainnya adalah kepercayaan. WebView biasa tidak menampilkan URL atau ikon kunci SSL, sehingga pengguna harus sepenuhnya memercayai aplikasi Anda agar tidak memphising mereka. Google bahkan telah melarang penggunaan WebView untuk login OAuth Google karena potensi risiko phising. Dari sisi kinerja, WebView cukup baik, tetapi bisa lebih lambat atau lebih intensif memori daripada menggunakan browser bawaan pengguna, terutama jika memuat halaman yang berat.
Chrome Custom Tabs (CCT) adalah pendekatan hybrid. Keduanya memungkinkan aplikasi Anda membuka halaman yang dirender Chrome yang terlihat seperti bagian dari aplikasi Anda. Anda dapat menyesuaikan warna bilah alat, menambahkan logo aplikasi, dsb., tetapi konten dirender oleh Chrome di proses yang terpisah. Untuk kunci sandi, CCT memiliki beberapa manfaat: keduanya berbagi cookie dan kredensial pengguna dengan Chrome, yang berarti jika pengguna memiliki kunci sandi yang disimpan melalui Chrome (Google Password Manager), Custom Tab dapat mengaksesnya. Pengguna juga akan melihat URL yang sebenarnya dan indikator keamanan, yang membangun kepercayaan. Kinerja sering kali lebih baik – Chrome dapat di-"warm up" di latar belakang untuk pemuatan yang lebih cepat. Dan yang penting, keamanannya kuat: karena pada dasarnya ini adalah aplikasi Chrome, hal-hal seperti Google Safe Browsing melindungi sesi tersebut, dan aplikasi Anda tidak dapat menyuntikkan skrip sembarangan ke dalam halaman (mencegah serangan tertentu).
Kelemahannya adalah bahwa hal itu mengharuskan pengguna memiliki Chrome (atau browser yang didukung) terinstal dan mutakhir. Mayoritas pengguna Android memilikinya, tetapi di beberapa perangkat di area tertentu, ini bisa menjadi masalah. Secara keseluruhan, jika Anda memilih pendekatan web tertanam di Android, Chrome Custom Tabs direkomendasikan untuk alur kunci sandi, karena memberikan keseimbangan integrasi dan keamanan yang baik. Kenyataannya, hal ini serupa dengan SFSafariViewController/ASWebAuthSession dari iOS dalam banyak hal – memanfaatkan browser bawaan untuk autentikasi.
(Tambahan: WKWebView vs SFSafariViewController Apple dan WebView vs CCT Android memiliki banyak paralel. Keduanya Safari VC dan Chrome Tabs berbagi keadaan browser dan memberikan keamanan lebih baik, sementara WKWebView/Android WebView memberikan kontrol lebih tetapi mengisolasi konten web. Untuk kunci sandi, berbagi status (cookie, penyimpanan kredensial) biasanya lebih disukai sehingga kunci sandi dapat diakses dan dibuat dengan mulus.)
| Fitur | WebView | Chrome Custom Tab |
|---|---|---|
| Pengalaman pengguna | - Fleksibilitas: Menyediakan serangkaian API yang kaya untuk berinteraksi dengan konten web dan mengelola interaksi pengguna, termasuk menangani dialog JavaScript dan permintaan izin. - Konsistensi: Mengelola UX yang konsisten, terutama dengan konten web yang bervariasi, bisa jadi menantang. | - Fitur Browser: Berbagi fitur seperti Data Saver dan AutoComplete yang tersinkronisasi di seluruh perangkat. - Tombol Kembali: Memungkinkan pengguna untuk kembali dengan mudah ke aplikasi menggunakan tombol kembali yang terintegrasi. - Ketergantungan: Bergantung pada aplikasi Chrome, yang mungkin tidak tersedia atau diperbarui di semua perangkat pengguna - Pengalihan ke Browser: Fungsionalitas tertentu mungkin mengarahkan pengguna ke aplikasi Chrome, yang berpotensi mengganggu pengalaman pengguna. - Custom Tabs Parsial: Hanya sebagian layar yang dapat digunakan untuk Chrome Custom Tab sementara sisanya menampilkan aplikasi native - Side-sheet: Dalam mode lanskap dan pada perangkat layar besar, Chrome Custom Tab hanya ditampilkan di satu sisi layar, sementara sisanya menampilkan aplikasi native |
| Pengalaman pengembang | - Sangat Dapat Disesuaikan: Menawarkan opsi/kebutuhan kustomisasi yang ekstensif. - Interaktivitas: Menyediakan banyak API untuk berinteraksi dengan konten web dan mengelola interaksi pengguna. | - Dapat Disesuaikan: Memungkinkan kustomisasi warna toolbar, tombol aksi, toolbar bawah, item menu kustom, dan animasi masuk/keluar. - Callback: Mengirimkan callback ke aplikasi pada navigasi eksternal. - Fitur Keamanan: Menyediakan fitur out-of-the-box, menghilangkan kebutuhan untuk mengelola permintaan, pemberian izin, atau penyimpanan cookie. |
| Kinerja | - Kinerja Biasa: Mungkin tidak menawarkan tingkat kinerja yang sama seperti Chrome Custom Tabs (CCT) | - Pre-Warming: Mencakup pre-warming Browser di latar belakang dan pemuatan URL spekulatif untuk meningkatkan waktu muat halaman. - Prioritas: Mencegah aplikasi yang meluncurkan Custom Tab agar tidak dikeluarkan selama penggunaannya dengan menaikkan kepentingannya ke level "foreground". |
| Kepercayaan dan pengenalan | - URL & SSL Tidak Terlihat: URL dan informasi SSL pada dasarnya tidak terlihat dalam WebView. Kecuali pengembang aplikasi mengimplementasikan fitur ini, pengguna tidak akan tahu apakah mereka berada di situs web yang benar atau phising. | - URL & SSL Terlihat: Menggunakan browser Chrome asli untuk merender halaman. Pengguna dapat melihat URL dan sertifikat SSL (menunjukkan jika sambungan aman). Hal ini dapat memberi pengguna keyakinan bahwa mereka tidak berada di situs phising. |
| Isolasi | - Berjalan di Dalam Proses Aplikasi: Jika aplikasi memiliki kerentanan yang memungkinkan eksekusi kode berbahaya, ada risiko WebView dapat dikompromikan. Meskipun demikian, WebView juga menerima pembaruan, namun perilaku dan keamanannya mungkin lebih bergantung pada aplikasi yang menggunakannya. - Tanpa Berbagi Cookie / Sesi: Tidak berbagi cookie atau sesi dengan browser utama perangkat, menawarkan isolasi tetapi mungkin mengharuskan pengguna login kembali. | - Berjalan di Dalam Proses Chrome: Menjadi bagian dari Chrome, Custom Tabs berjalan di proses yang sama dan memiliki pembaruan serta fitur keamanan yang sama dengan Chrome. - Stoples Cookie Bersama dan Model Izin: Memastikan pengguna tidak perlu masuk kembali ke situs atau memberikan izin kembali. - Pengaturan & Preferensi Chrome: Memanfaatkan pengaturan dan preferensi Chrome. |
| Kerentanan | - Callback untuk Mencuri Kredensial: Potensi kerentanan mencakup bahwa terkadang JavaScript diwajibkan yang membuka pintu bagi aplikasi lain untuk menjalankan kode jahat, seperti mendaftarkan callback yang mencoba mencegat nama pengguna dan kata sandi. - Phising: Selain itu, aplikasi jahat dapat membuka halaman web lain yang meniru alur Tautan dalam upaya phising. | - Google Safe Browsing: Menggunakan Google Safe Browsing untuk melindungi pengguna maupun perangkat dari situs berbahaya. - Dekorasi Browser yang Aman: Memastikan pengguna selalu melihat URL persis tempat mereka berinteraksi dan dapat melihat informasi sertifikat situs web, yang mengurangi risiko phising. Lebih lanjut, tab khusus tidak mengizinkan injeksi JavaScript. |
| Lainnya | - Google melarang WebView untuk login pengguna ke akun Google |
Apa pun pendekatan implementasi yang Anda pilih, persyaratan teknis tertentu harus dipenuhi untuk mengaktifkan fungsionalitas kunci sandi. Bagian ini memberikan panduan komprehensif mengenai mengonfigurasi file asosiasi well-known, entitlement iOS, dan konfigurasi WebView Android.
Catatan tentang Perangkat yang Dikelola: Perilaku kunci sandi berubah secara signifikan pada perangkat yang dikelola tempat kebijakan Mobile Device Management (MDM) mengontrol penyimpanan kredensial. Untuk menguji kunci sandi di perangkat yang dikelola, lihat Kunci Sandi pada Perangkat iOS & Android yang Dikelola.
Alur Native dan Embedded WebView memerlukan file asosiasi untuk menetapkan kepercayaan kriptografi antara aplikasi dan domain web Anda. System WebView (ASWebAuthenticationSession) dan Chrome Custom Tabs tidak memerlukan asosiasi aplikasi-ke-situs.
File AASA membangun hubungan antara aplikasi iOS Anda dan domain web Anda, memungkinkan kunci sandi berfungsi di kedua platform.
Lokasi File: https://domainanda.com/.well-known/apple-app-site-association
Persyaratan Konfigurasi:
/.well-known/apple-app-site-association di domain Andaapplication/json.well-knownContoh File AASA:
{ "webcredentials": { "apps": ["TEAMID123.com.example.app"] } }
Caching dan Pengujian AASA:
Apple secara agresif melakukan cache pada file AASA (hingga 24-48 jam) menggunakan CDN, yang dapat menyulitkan pengembangan dan pengujian. Untuk mengabaikan cache selama pengembangan:
?mode=developer ke domain terkait Anda di Xcode⚠️ Penting: JANGAN gunakan ?mode=developer dalam rilis produksi. Parameter ini hanya
untuk pengembangan—menggunakannya di produksi akan mencegah iOS mendeteksi file AASA Anda
dengan benar, yang merusak fungsi kunci sandi.
Validasi: Gunakan Validator AASA Apple untuk memverifikasi konfigurasi Anda.
Android menggunakan Digital Asset Links untuk memverifikasi hubungan antara aplikasi dan situs web Anda.
Lokasi File: https://domainanda.com/.well-known/assetlinks.json
Persyaratan Konfigurasi:
/.well-known/assetlinks.json di domain Andaapplication/jsonContoh File assetlinks.json:
[ { "relation": [ "delegate_permission/common.handle_all_urls", "delegate_permission/common.get_login_creds" ], "target": { "namespace": "android_app", "package_name": "com.example.app", "sha256_cert_fingerprints": [ "AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33:44:55:66:77:88:99" ] } } ]
Validasi: Gunakan Pembuat Digital Asset Links Google untuk membuat dan memverifikasi konfigurasi Anda.
Aplikasi iOS memerlukan entitlement yang tepat untuk mengakses fungsi kunci sandi. Persyaratannya sedikit berbeda berdasarkan pendekatan implementasi Anda.
File entitlement (sering dinamai Runner.entitlements di aplikasi
Flutter atau AplikasiAnda.entitlements di proyek iOS
native) mendefinisikan izin khusus dan kemampuan yang diberikan oleh sistem Apple. Untuk
kunci sandi, file ini mengonfigurasi Associated Domains.
Lokasi File: Biasanya di proyek Xcode Anda di ios/Runner/Runner.entitlements
Implementasi Native dan Embedded WebView memerlukan kemampuan Associated Domains untuk menautkan aplikasi Anda dengan domain web Anda. System WebView (ASWebAuthenticationSession) tidak memerlukannya karena ia berjalan di konteks Safari.
Penyiapan di Xcode:
webcredentials:Contoh Konfigurasi:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>com.apple.developer.associated-domains</key> <array> <string>webcredentials:domainanda.com</string> <string>webcredentials:subdomain.domainanda.com</string> </array> </dict> </plist>
| Pendekatan | Membutuhkan Associated Domains | Konfigurasi Tambahan |
|---|---|---|
| Implementasi Native | Ya | Implementasi Dedikasi |
| System WebView | Tidak diperlukan | Penyiapan web default berfungsi |
| Embedded WebView | Ya | Memerlukan konfigurasi AndroidX WebKit 1.12.1+ |
Beberapa Domain: Jika aplikasi Anda perlu bekerja dengan beberapa domain Anda mungkin memerlukan Related Origin Requests (ROR).
Embedded WebView Android mendukung kunci sandi melalui dua pendekatan berbeda: pendekatan berbasis WebKit yang lebih baru (Bagian 5.3.1) dan pendekatan jembatan JavaScript yang lebih lama (Bagian 5.3.2). System WebView (Chrome Custom Tabs) tidak memerlukan konfigurasi apa pun-kredensial berfungsi secara otomatis.
Android menyediakan contoh resmi kunci sandi WebView yang mendemonstrasikan kedua pendekatan implementasi.
Integrasi WebKit modern dengan penanganan kunci sandi native. Pendekatan ini memberikan dukungan WebAuthn native tanpa memerlukan kode jembatan khusus.
Contoh Resmi: Webkit WebView MainActivity
Persyaratan:
Implementasi:
import androidx.webkit.WebSettingsCompat import androidx.webkit.WebViewFeature // Check if Web Authentication is supported if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_AUTHENTICATION)) { // Enable Web Authentication WebSettingsCompat.setWebAuthenticationSupport( webView.settings, WebSettingsCompat.WEB_AUTHENTICATION_SUPPORT_FOR_APP ) // Enable JavaScript webView.settings.javaScriptEnabled = true }
Poin Penting:
WebViewFeature.WEB_AUTHENTICATION saat
runtimemediation:"conditional" (isian otomatis kunci sandi
di kolom input) tidak berfungsi di Embedded WebViewCatatan Versi:
Sebelum AndroidX WebKit 1.12.0, dukungan WebAuthn native tidak ada di Embedded WebView. Pendekatan lama ini menggunakan jembatan Web-ke-Native untuk menangani kunci sandi untuk perangkat tanpa dukungan WebView WebAuthn native.
Contoh Resmi:
Kapan Menggunakannya: Mendukung versi Android yang lebih lama atau perangkat dengan implementasi WebView warisan.
Tim harus antara:
Untuk implementasi terperinci, lihat Panduan Integrasi Credential Manager WebView Android. Namun, kami sangat menyarankan untuk menggunakan pendekatan native WebKit 1.12.1+ untuk aplikasi modern.
Rekomendasi: Gunakan dukungan WebAuthn native dengan AndroidX WebKit 1.12.1+. Jika tidak tersedia saat runtime, beralihlah ke Chrome Custom Tabs yang memberikan dukungan kunci sandi luar biasa dengan kredensial bersama.
Saat menerapkan kunci sandi di aplikasi native, Anda perlu membangun kepercayaan antara aplikasi Anda dan domain web. Bagian ini mencakup cara menangani satu domain, beberapa domain terkait (ROR), dan cara memverifikasi file asosiasi well-known Anda dikonfigurasi dengan benar.
Untuk aplikasi yang menggunakan satu domain (mis. kayak.com), Anda memerlukan:
webcredentials:kayak.comRelated Origins (ROR) adalah fitur
WebAuthn yang memungkinkan satu set kunci sandi untuk bekerja di seluruh beberapa domain
terkait (mis. kayak.com, kayak.de, kayak.co.uk).
ROR menggunakan titik akhir
/.well-known/webauthn di setiap situs untuk mendefinisikan origin terkait, BUKAN file
AASA atau assetlinks.
Poin Penting:
/.well-known/webauthn dengan daftar asal-usul yang terkaitContoh Konfigurasi:
Jika aplikasi Anda berfungsi dengan kayak.com dan kayak.de, kedua domain harus:
Sebelum tayang, verifikasi file well-known Anda dikonfigurasi dengan benar dan dapat diakses. Apple dan Google menyediakan URL uji berbasis CDN untuk memeriksa ketersediaan file:
| Domain | Verifikasi AASA Apple | Verifikasi Digital Asset Links Google |
|---|---|---|
| kayak.com | Uji file AASA Periksa apakah CDN Apple dapat mengambil file Anda | Uji assetlinks.json Verifikasi bahwa Google dapat mengakses asset links Anda |
| kayak.de | Uji file AASA Periksa apakah CDN Apple dapat mengambil file Anda | Uji assetlinks.json Verifikasi bahwa Google dapat mengakses asset links Anda |
Menggunakan URL Uji Ini:
?nocache=1 Apple memaksa pengambilan baru, mengabaikan cache CDNkayak.com atau kayak.de dengan domain Anda sendiri dalam pola URL di atasJebakan Pengujian: Pastikan semua domain memiliki file well-known yang terkonfigurasi dengan benar. File yang hilang atau salah konfigurasi di domain apa pun dapat merusak fungsi kunci sandi untuk domain tersebut.
Informasi Lebih Lanjut: Relying Party ID WebAuthn dalam Aplikasi Native
Memilih pendekatan implementasi yang tepat bergantung pada arsitektur autentikasi aplikasi Anda, persyaratan OAuth, dan kebutuhan kontrol sesi. Gunakan pohon keputusan ini untuk menentukan jalur terbaik ke depan.
Bagan alur berikut memandu Anda dalam memilih pendekatan implementasi yang tepat berdasarkan persyaratan aplikasi Anda:
Referensi cepat untuk tiap jalur:
Inilah bagaimana kinerja masing-masing pendekatan pada dimensi utama:
| Pendekatan | Membuat Kunci Sandi | Menggunakan Kunci Sandi | Mengelola Kunci Sandi | Kompleksitas Teknis | Dukungan OAuth | Waktu Penyiapan |
|---|---|---|---|---|---|---|
| Implementasi Native | Adopsi tinggi Biometrik mulus, UX terbaik | Instan, senyappreferImmediatelyAvailableCredentials mengaktifkan hamparan otomatis saat aplikasi dimulai | Kontrol native penuh Terintegrasi dengan pengaturan aplikasi | Menengah-Tinggi API khusus platform | Memerlukan implementasi alur OAuth terpisah | Beberapa minggu hingga bulan |
| System WebView | Adopsi baik Pengalaman seperti browser, familier | UX browser standar Conditional UI di kolom input, keychain bersama | Berbasis browser Pengguna mengelola via browser | Rendah Kode native minimal | Sangat baik Dibuat khusus untuk OAuth | Beberapa hari hingga minggu |
| Embedded WebView | Adopsi lebih rendah Memerlukan konfigurasi | Dukungan WebAuthn Native WebKit 1.12.1+, tanpa Conditional UI | Kontrol terbatas Tanpa integrasi native | Menengah-Tinggi Konfigurasi WebView + izin | Memerlukan konfigurasi | 1-2 minggu |
Penjelasan Dimensi:
Disarankan: System WebView
Jika aplikasi Anda mengautentikasi melalui penyedia login OAuth2, OIDC, atau sosial (Google, GitHub, Microsoft, dsb.), System WebView adalah pilihan optimal:
ASWebAuthenticationSession dibuat khusus untuk alur OAuthContoh: Aplikasi Perjalanan seperti kayak.com dan kayak.de menggunakan OAuth untuk autentikasi. System WebView memungkinkan mereka untuk mempertahankan infrastruktur OAuth yang ada sembari menambahkan dukungan kunci sandi melalui halaman autentikasi web mereka.
Disarankan: Pendekatan Hybrid
Gunakan System WebView untuk autentikasi OAuth awal, lalu Embedded WebView untuk sesi pasca-autentikasi:
Kapan digunakan: Aplikasi yang mengautentikasi melalui OAuth tetapi kemudian perlu menampilkan konten web terautentikasi tempat manipulasi sesi secara langsung diwajibkan.
Disarankan: Implementasi Native
Membangun dari awal atau memiliki layar native? Gunakan fully native:
preferImmediatelyAvailableCredentials untuk menampilkan
hamparan kunci sandi otomatis saat aplikasi dimulai -
eksklusif untuk implementasi native dan memberikan tingkat konversi tertinggiUntuk Aplikasi Baru: Kami sangat merekomendasikan membangun login native dari hari pertama. Mengatur Anda untuk UX optimal dan menghindari migrasi WebView-ke-native di masa mendatang.
Disarankan: Migrasi Bertahap
Diagram berikut menunjukkan jalur migrasi tambahan:
Setiap fase dibangun di atas fase sebelumnya, memungkinkan perbaikan tambahan tanpa mengganggu pengguna yang ada.
| Persyaratan | Native | System WebView | Embedded WebView |
|---|---|---|---|
| File well-known (AASA/assetlinks) | Diwajibkan | Tidak diperlukan | Diwajibkan |
| Associated Domains iOS | Diwajibkan | Tidak diperlukan | Diwajibkan |
| Android WebKit Library | Tidak berlaku | Tidak diperlukan | Diwajibkan (1.12.1+) |
| Relying Party ID | Harus cocok dengan domain | Harus cocok dengan domain | Harus cocok dengan domain |
Lihat Bagian 5 untuk instruksi konfigurasi terperinci.
Menguji kunci sandi dalam aplikasi native membutuhkan pendekatan yang terstruktur dan berlapis-lapis. Ikuti piramida pengujian: pengujian unit (logika terisolasi), pengujian integrasi (upacara WebAuthn pada simulator/emulator), dan pengujian sistem (end-to-end pada perangkat fisik).
Kategori Pengujian Penting:
Untuk panduan pengujian komprehensif termasuk strategi otomasi, masalah spesifik platform, dan daftar periksa pracampuran lengkap, lihat panduan khusus kami: Menguji Alur Kunci Sandi di Aplikasi Native iOS & Android.
Pertimbangkan untuk meminta pengguna membuat kunci sandi setelah login tradisional yang sukses (kata sandi, OAuth). Pendekatan konversi bertahap ini:
Contoh: Setelah login OAuth via System WebView, tampilkan perintah native: "Aktifkan login yang lebih cepat dengan Face ID?" Jika diterima, buat kunci sandi melalui halaman web yang dimuat di System WebView.
Memutuskan bagaimana mengimplementasikan kunci sandi - melalui Implementasi Native, System WebView atau Embedded WebView adalah pilihan desain penting yang berdampak pada keamanan, pengalaman pengguna, dan kompleksitas pengembangan. Tidak ada satu jawaban yang cocok untuk semua.
Untuk aplikasi berbasis OAuth: System WebView (ASWebAuthenticationSession, Chrome Custom Tabs) adalah titik awal yang disarankan. Ia memberikan dukungan OAuth yang sangat baik, upaya implementasi minimal, dan berbagi kredensial otomatis.
Untuk aplikasi native-first: Terapkan native lebih cepat daripada nanti. Login kunci
sandi native menawarkan UX paling mulus dengan kemampuan eksklusif seperti
preferImmediatelyAvailableCredentials, yang memungkinkan
hamparan kunci sandi otomatis pada saat aplikasi dimulai-sesuatu
yang tidak dapat disediakan oleh implementasi WebView. Dengan iOS dan Android sekarang
memberikan dukungan kelas satu untuk kunci sandi, keberhasilan dunia nyata menunjukkan
adopsi tinggi. Alat-alat (termasuk open-source SDKs dan platform libraries) telah matang
untuk membuat integrasi native dapat dicapai dalam kerangka waktu yang wajar. Meskipun
Anda harus memperhatikan kebijakan pengelolaan perangkat, sinkronisasi lintas perangkat,
dan penyedia pihak ketiga, tantangan tersebut dapat dikelola dengan rekayasa dan pengujian
yang cermat. Hasilnya adalah login aplikasi yang memanjakan pengguna dengan kemudahan dan
kecepatannya sekaligus meningkatkan keamanan secara signifikan.
Untuk kebutuhan bingkai embedded WebView: Embedded WebView umum digunakan dalam dua skenario nyata. Pertama, aplikasi berbasis OAuth sering menggunakan System WebView untuk alur login awal, kemudian beralih ke Embedded WebView untuk merender opsi manajemen kunci sandi di layar pengaturan saat kontrol sesi dibutuhkan-meskipun beberapa aplikasi menyederhanakannya dengan mempertahankan System WebView untuk kedua alur. Kedua, aplikasi yang telah menanamkan alur autentikasi mereka di dalam bingkai WebView sebelum mengadopsi kunci sandi melanjutkan pola ini untuk konsistensi. Embedded WebView dengan dukungan WebAuthn native (AndroidX WebKit 1.12.1+) memerlukan konfigurasi dan pengaturan (izin, entitlement, setelan WebView) tetapi tidak lagi membutuhkan kode jembatan JavaScript kustom. Perhatikan bahwa Conditional UI tidak didukung di Embedded WebView. Pilih pendekatan ini saat memelihara pola autentikasi tersemat yang sudah ada atau ketika Anda membutuhkan kontrol sesi/cookie untuk layar pasca-autentikasi.
Pada akhirnya, kunci sandi dalam aplikasi native merepresentasikan lompatan besar ke depan dalam kenyamanan pengguna dan keamanan. Entah diimplementasikan via Native, System WebView, atau Embedded WebView, mereka menghilangkan risiko phising dan beban manajemen kata sandi bagi pengguna Anda. Implementasi dunia nyata seperti integrasi kunci sandi aplikasi native VicRoads mendemonstrasikan bahwa pendekatan native-first memberikan adopsi dan kepuasan pengguna tertinggi ketika dieksekusi dengan tepat dengan fitur-fitur seperti hamparan kunci sandi otomatis. Dengan mengikuti praktik terbaik untuk autentikasi ramah-pengguna dan memilih pendekatan implementasi yang sesuai dengan arsitektur aplikasi Anda-native-first untuk aplikasi baru, System WebView untuk alur OAuth, atau Embedded WebView untuk pola tersemat yang sudah ada-Anda dapat menawarkan login biometrik tanpa kata sandi yang benar-benar mewujudkan visi kunci sandi: autentikasi yang sederhana, aman, dan menyenangkan bagi semua orang.
Jika kunci sandi tidak berfungsi di aplikasi native Anda, periksa masalah umum ini berdasarkan pendekatan implementasi:
application/json.well-knownhttps://domain-anda.com (bukan app://)webcredentials:domainanda.comASWebAuthenticationSession (disarankan) atau
SFSafariViewController?mode=developer selama pengembangan (hapus untuk produksi)WebViewFeature.WEB_AUTHENTICATIONsetWebAuthenticationSupport() dipanggil dengan
WEB_AUTHENTICATION_SUPPORT_FOR_APP"NotAllowedError: Permintaan ini tidak diizinkan oleh user agent atau platform dalam konteks saat ini"
setWebAuthenticationSupport()Tidak ada perintah kunci sandi yang muncul
?mode=developer pada iOS untuk pengujian,
verifikasi jenis WebViewUntuk proses debugging terperinci, lihat artikel kami tentang Relying Party IDs di aplikasi native.
Jebakan umum: lingkungan staging dengan akses terbatas (IP whitelisting, hanya VPN) akan gagal karena CDN Apple dan Google harus bisa mengambil file asosiasi Anda.
https://app-site-association.cdn-apple.com/a/v1/domain-staging-anda.com?nocache=1https://digitalassetlinks.googleapis.com/v1/statements:list/?source.web.site=https://domain-staging-anda.com&relation=delegate_permission/common.handle_all_urlsSubdomain staging dengan rpID produksi:
Jika lingkungan staging Anda (mis., stg.login.example.com) menggunakan domain produksi
sebagai rpID (mis., example.com), pencarian AASA terjadi pada domain rpID, bukan
subdomain staging Anda. Ini berarti:
Contoh (beberapa lingkungan berbagi satu AASA):
{ "webcredentials": { "apps": [ "TEAMID123.com.example.app", "TEAMID123.com.example.app.dev", "TEAMID123.com.example.app.stg", "TEAMID123.com.example.app.pre" ] } }
Rekomendasi: Gunakan rpID staging terpisah yang cocok dengan domain staging Anda untuk menghindari tumpang tindih kredensial di antara lingkungan. Ini membutuhkan file AASA yang dapat diakses publik pada domain staging.
Klarifikasi ?mode=developer:
Parameter ?mode=developer di Associated Domains melewati cache CDN Apple tetapi tidak
mengabaikan persyaratan aksesibilitas. File AASA Anda masih harus dapat dijangkau dari
perangkat (bukan melalui CDN Apple, tetapi secara langsung). Hal ini membantu selama
pengembangan ketika beralih pada perubahan AASA, tetapi tidak akan membantu jika server
staging Anda terdaftar dalam IP-whitelist.
SDK Native Corbado:
Dokumentasi Platform:
Alat Validasi:
Corbado adalah Passkey Intelligence Platform untuk tim CIAM yang menjalankan autentikasi consumer dalam skala besar. Kami membantu Anda melihat apa yang tidak bisa ditunjukkan oleh log IDP dan tool analytics generik: device, versi OS, browser, dan credential manager mana yang mendukung passkey; mengapa enrollment tidak menjadi login; di mana flow WebAuthn gagal; dan kapan update OS atau browser diam-diam merusak login — semuanya tanpa mengganti Okta, Auth0, Ping, Cognito, atau IDP internal Anda. Dua produk: Corbado Observe menambah observability untuk passkey dan metode login lainnya. Corbado Connect menghadirkan managed passkey dengan analytics terintegrasi (berdampingan dengan IDP Anda). VicRoads menjalankan passkey untuk 5M+ pengguna dengan Corbado (aktivasi passkey +80%). Bicara dengan pakar Passkey →
Pilihan bergantung pada arsitektur autentikasi Anda. Jika aplikasi Anda menggunakan OAuth2 atau OIDC, System WebView (ASWebAuthenticationSession di iOS atau Chrome Custom Tabs di Android) membutuhkan upaya implementasi paling sedikit dan tanpa pengaturan file asosiasi. Untuk aplikasi native-first baru, Implementasi Native memberikan UX yang unggul, sementara Embedded WebView cocok untuk aplikasi yang sudah menyematkan autentikasi dalam bingkai WebView dan memerlukan kontrol sesi atau cookie setelah login.
SFSafariViewController memanfaatkan mesin Safari, menampilkan bilah URL dengan indikator SSL, dan memberikan perlindungan phising, sehingga lebih tepercaya untuk alur autentikasi. WKWebView menawarkan lebih banyak penyesuaian UI tetapi memiliki penyimpanan cookie terisolasi yang terpisah dari Safari, memerlukan entitlement Associated Domains dan file AASA untuk mengaktifkan kunci sandi, dan tidak menampilkan bilah URL, yang mengurangi sinyal kepercayaan pengguna.
Chrome Custom Tabs berbagi cookie dan kredensial yang disimpan dengan browser Chrome pengguna, yang berarti kunci sandi yang disimpan di Google Password Manager dapat diakses selama autentikasi. Android WebView standar memiliki penyimpanan cookie yang terisolasi, tidak menampilkan URL atau indikator SSL, dan Google telah secara eksplisit melarangnya untuk login akun Google karena risiko phising.
Jika pengguna memiliki pengelola kredensial pihak ketiga seperti 1Password yang ditetapkan sebagai penyedia aktif mereka, hal itu sering kali akan mencegat pembuatan dan penyimpanan kunci sandi, mengambil prioritas di atas pengelola kredensial native platform (iCloud Keychain atau Google Password Manager). Ini berarti kunci sandi mungkin disimpan di aplikasi pihak ketiga daripada keychain platform, yang memengaruhi sinkronisasi lintas perangkat dan perilaku pengelolaan kunci sandi.
Ketika kebijakan MDM menonaktifkan sinkronisasi kredensial, kunci sandi menjadi terikat pada perangkat dan tidak dapat berpindah ke perangkat pengganti, tidak seperti skenario konsumen biasa. Aplikasi yang menargetkan lingkungan korporat harus merencanakan mekanisme autentikasi cadangan seperti kata sandi atau login tautan ajaib untuk menangani kasus saat pengguna menerima perangkat yang dikelola baru.
Lihat bagaimana Corbado cocok dengan peluncuran passkeys dan stack autentikasi Anda saat ini.
Jelajahi Console
Artikel terkait
Daftar isi