Panduan ini menjelaskan kumpulan fitur yang menampilkan sinyal kepercayaan tambahan tentang Akun Google. Sinyal kepercayaan ini membantu sistem pengelolaan akun Anda membuat keputusan berbasis risiko selama pendaftaran, pembuatan akun, dan selanjutnya untuk pengguna yang kembali.
Sesi
Permintaan autentikasi oleh aplikasi menampilkan Token ID. Misalnya, saat tombol Login dengan Google ditekan, Token ID akan ditampilkan ke aplikasi klien atau server Android, iOS, atau Web yang menampilkan tombol tersebut.
Autentikasi untuk login ke Akun Google adalah peristiwa yang berbeda dan terpisah. Klaim yang ditampilkan dalam Token ID mewakili peristiwa ini. Misalnya, waktu dan metode autentikasi yang digunakan untuk login ke Akun Google.
Ada dua momen autentikasi dan dua sesi pengguna:
- Sesi Pengguna <-> Google Dibuat saat pengguna login ke Akun Google-nya. Google mengelola siklus proses dan keamanan sesi ini. Klaim
auth_timedanamrmemberikan insight kepada Anda tentang sesi ini. - Sesi Pengguna <-> Aplikasi Anda Dibuat setelah pengguna login ke aplikasi Anda, yang sering kali dimulai menggunakan Login dengan Google. Aplikasi Anda mengelola sesi ini menggunakan klaim untuk meningkatkan keputusan pengelolaan sesi dan akun.
Pengguna sering berinteraksi dengan layanan Google di beberapa perangkat, seperti ponsel, komputer desktop, smart display, atau TV. Login di setiap platform atau perangkat akan membuat sesi yang berbeda. Untuk login web, sesi dibuat antara browser tertentu dan Google; perhatikan bahwa mode Penjelajahan Pribadi dan Samaran membuat sesi terpisah dan terisolasi. Oleh karena itu, satu Akun Google dapat memiliki beberapa sesi berbeda yang aktif secara bersamaan di berbagai browser dan perangkat. Untuk mengetahui detail tambahan, lihat Melihat perangkat dengan akses akun.
Status Akun Google
Peristiwa umum siklus proses Akun Google adalah:
- seseorang memilih untuk Membuat Akun Google, lalu
- Google dapat menonaktifkan akun atau pengguna dapat mengaktifkannya kembali setelah mengikuti Cara memulihkan Akun Google atau Gmail Anda, dan
- seseorang dapat memutuskan untuk Menghapus Akun Google Anda atau karena Kebijakan Akun Google Tidak Aktif, Google dapat menghapus akun tersebut.
Fitur Paket Keamanan yang dijelaskan dalam panduan ini berlaku untuk akun yang aktif atau dinonaktifkan, tetapi tidak untuk peristiwa pembuatan atau penghapusan Akun Google.
Google dapat menonaktifkan akun kapan saja, karena beberapa alasan. Lihat Akun Anda dinonaktifkan. Jika hal ini terjadi, sesi Google aktif akan dihentikan dan peristiwa RISC akan dikirim oleh layanan Perlindungan Lintas Akun Google. Akun yang dinonaktifkan diblokir untuk menggunakan Login dengan Google, yang berarti token ID tidak pernah dikeluarkan sehingga tidak dapat digunakan untuk memantau akun pengguna yang dinonaktifkan.
Meskipun menerima peristiwa Perlindungan Lintas Akun (RISC) bersifat opsional, peristiwa ini berfungsi sebagai sinyal penting untuk mengelola sesi antara pengguna dan aplikasi Anda, serta apakah. Petunjuk tentang cara menerapkan RISC dan merespons peristiwa dijelaskan dalam Melindungi akun pengguna dengan Perlindungan Lintas Akun.
Penyiapan
Untuk menerima klaim tambahan, aplikasi Anda harus dipublikasikan, diverifikasi, dan fitur paket keamanan diaktifkan. Mulailah dengan mengonfirmasi bahwa aplikasi Anda dipublikasikan dan diverifikasi:
- Buka Google Auth Platform
- Pilih atau Buat Project untuk aplikasi Anda
- Klik Audiens dan konfirmasi Status publikasi adalah Dalam produksi
- Klik Pusat Verifikasi dan konfirmasi Status Verifikasi adalah Diverifikasi
Selanjutnya, aktifkan klaim tambahan:
- Klik Setelan di menu
- Di bagian Setelan Lanjutan , pilih:
- Klaim usia sesi untuk mengaktifkan
auth_time - Klaim kekuatan autentikasi untuk mengaktifkan
amr
- Klaim usia sesi untuk mengaktifkan
Untuk mempelajari lebih lanjut, buka Pusat Bantuan Verifikasi Aplikasi OAuth.
Fitur yang didukung
Bagian ini menjelaskan fitur individual yang membentuk Paket Keamanan.
Referensi Metode Autentikasi
Referensi Metode Autentikasi (amr) adalah klaim OpenID Connect yang
menjelaskan metode yang digunakan selama peristiwa autentikasi terakhir antara
pengguna dan Google.
Dari nilai IANA.AMR yang memungkinkan, Google mendukung nilai berikut yang menunjukkan bahwa:
hwkkunci keamanan hardware digunakanmfaAutentikasi Multi-faktor telah selesaipwdSandi digunakanswkkunci software seperti Kunci Sandi digunakansmspesan SMS digunakan untuk verifikasitelpanggilan telepon digunakan untuk verifikasi
Satu atau beberapa nilai ini ditampilkan sebagai array JSON string dalam klaim amr token ID.
Klaim amr disertakan dalam token ID hanya jika informasi tersedia tentang metode autentikasi yang digunakan. Klaim ini mungkin tidak ada meskipun diminta.
Pemilik Akun Google dapat memilih untuk mewajibkan Verifikasi 2 Langkah dan metode MFA yang akan digunakan.
Jika Perlindungan Lanjutan diaktifkan di Akun Google, metode Verifikasi 2 Langkah yang kuat seperti kunci keamanan Titan (hwk) atau Kunci Sandi (swk) akan diperlukan. Dalam kedua situasi tersebut, nilai mfa akan ada jika lebih dari satu faktor digunakan selama login ke Akun Google.
Keberadaan mfa mengonfirmasi bahwa peristiwa autentikasi memenuhi persyaratan Google untuk Autentikasi Multi-faktor. Misalnya, autentikasi Akun Google
dengan Sandi (pwd) dan Kunci Sandi (swk) akan menghasilkan
klaim "amr": ["mfa", "pwd", "swk"].
Referensi ini memiliki informasi selengkapnya tentang keamanan akun dan autentikasi pengguna: Dapatkan keamanan akun terkuat Google dengan Program Perlindungan Lanjutan, Login dengan kunci sandi, bukan sandi, dan Menggunakan kunci keamanan untuk Verifikasi 2 Langkah.
Admin Workspace mengontrol kebijakan autentikasi untuk akun Workspace terkelola, dan dapat mewajibkan MFA atau penggunaan kunci keamanan. Lihat Ringkasan pengelolaan identitas Google dan Persyaratan autentikasi multi-faktor untuk Google Cloud perlindungan & kontrol Login untuk mengetahui informasi selengkapnya.
Waktu autentikasi
Klaim auth_time adalah bagian standar dari protokol OpenID Connect
yang memberikan informasi tentang kapan Pengguna Akhir terakhir kali diautentikasi
dengan Google. Klaim ini adalah angka JSON yang mewakili jumlah detik yang telah berlalu sejak epoch Unix (1 Januari 1970, 00.00.00 UTC) dan merupakan waktu saat pengguna terakhir kali diautentikasi. Anggap saja klaim ini sebagai stempel waktu yang menunjukkan peristiwa login terakhir pengguna ke Akun Google-nya dari perangkat atau browser saat ini.
Klaim ini disertakan dalam Token ID, yang merupakan Token Web JSON (JWT) yang berisi informasi terverifikasi tentang autentikasi dan pengguna.
Klaim auth_time sangat berguna untuk aplikasi Anda karena memungkinkan Anda menentukan seberapa baru-baru ini pengguna telah login secara aktif ke Akun Google di perangkat atau browser yang mereka gunakan. Hal ini dapat sangat penting untuk tujuan keamanan seperti:
Membuat keputusan yang tepat tentang apakah aplikasi Anda harus mengeluarkan tantangan autentikasi tambahan sebelum melakukan tindakan pengguna sensitif seperti menghapus akun, mengubah metode kontak akun, atau melakukan pembayaran. Google tidak mendukung permintaan autentikasi ulang Akun Google.
Menggunakan keaktualan dan stabilitas sesi Akun Google pengguna sebagai sinyal kepercayaan. Secara umum, nilai
auth_timeterbaru adalah indikasi keaktualan, sedangkan nilai yang lebih lama menunjukkan stabilitas.
Untuk aplikasi web, kombinasi browser dan sistem operasi pengguna akan membentuk sesi setelah pengguna login ke Akun Google-nya.
Secara terpisah, situs Anda juga mempertahankan sesi pengguna yang terpisah. Nilai auth_time yang lebih baru menunjukkan bahwa pengguna baru-baru ini login ke Akun Google-nya.
Sering kali, hal ini merupakan indikasi pengguna yang aktif dan terlibat, serta dapat diartikan sebagai sinyal risiko yang lebih rendah.
Di platform seluler seperti Android, pengguna biasanya login langsung ke perangkat mereka menggunakan metode biometrik seperti sidik jari atau pemindaian wajah dan PIN atau pola khusus perangkat. Aplikasi dan platform seluler sering menggunakan metode autentikasi berbasis platform ini, bukan membuat sesi baru dengan Google, sehingga login Akun Google dan update yang sesuai ke auth_time menjadi jarang. Jadi, di sini, nilai auth_time terbaru dapat menandakan perubahan pada sesi Akun Google yang berjalan lama dan dengan demikian meningkatkan risiko.
Sinyal kepercayaan adalah subjek yang rumit. auth_time diharapkan dapat digunakan bersama dengan sinyal lain seperti apakah autentikasi multi-faktor (MFA) diaktifkan, metode autentikasi yang digunakan, dan durasi sesi pengguna antara aplikasi dan platform Anda.
Permintaan
Metode spesifik yang digunakan untuk meminta klaim auth_time dan amr berbeda-beda menurut
API yang digunakan. Namun, setiap API menyertakan parameter claims opsional untuk
meminta auth_time dan amr.
Protokol OIDC
Saat menggunakan Platform OAuth secara langsung, minta auth_time dengan menambahkannya ke parameter permintaan claims opsional. Tetapkan nilai kolom id_token
objek JSON klaim ke {"auth_time":{"essential":true}}.
Demikian pula, tambahkan {"amr":{"essential":true}} ke claims untuk meminta amr:
https://accounts.google.com/o/oauth2/v2/auth? response_type=id_token& client_id=YOUR_CLIENT_ID& scope=openid email profile& redirect_uri=https://example.com/user-login& nonce=123-456-7890& claims={ "id_token": { "auth_time": { "essential":true }, "amr": {"essential":true} } }
Lihat OpenID Connect untuk mengetahui informasi selengkapnya.
GIS untuk Web
Library Login dengan Google untuk Web memiliki dua API: HTML dan JavaScript untuk meminta klaim tambahan. Misalnya, minta auth_time dan amr menggunakan JavaScript API:
<html>
<body>
<script src="https://accounts.google.com/gsi/client" async></script>
<script>
window.onload = function () {
google.accounts.id.initialize({
client_id: "YOUR_WEB_CLIENT_ID",
callback: function(rsp) { console.log(rsp.credential); },
essential_claims: "auth_time, amr",
});
google.accounts.id.renderButton(
document.getElementById("buttonDiv"),
{ type: "standard", size: "large" }
);
}
</script>
<div id="buttonDiv"></div>
</body>
</html>Lihat Login dengan Google untuk Web untuk mengetahui informasi selengkapnya.
GIS untuk Android
Metode setClaims dan objek Claim digunakan untuk meminta auth_time dan
amr.
Perbarui dependensi build Anda untuk menggunakan versi terbaru library androidx.credentials:credentials-play-services-auth dan com.google.android.libraries.identity.googleid:googleid.
Buat instance objek Claim berjenis auth_time dan amr, menggunakan
setClaims untuk menambahkannya ke daftar opsi login:
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder() .setAutoSelectEnabled(true) .setFilterByAuthorizedAccounts(true) .setServerClientId(WEB_CLIENT_ID) .setNonce("NONCE") .setClaims(ImmutableList.of( new Claim("auth_time", true), new Claim("amr", true) )) .build()
Lihat Mengautentikasi pengguna dengan Login dengan Google untuk mengetahui informasi selengkapnya.
iOS
Login dengan Google SDK untuk iOS menambahkan objek authTimeClaimdan parameter claims ke class GIDSignIn yang digunakan untuk meminta auth_time dan amr secara opsional.
Aplikasi yang menggunakan ASWebAuthenticationSession akan mengupdate cookie bersama di seluruh perangkat. GIDSignIn menggunakan metode ini secara default di iOS 12 atau yang lebih baru dan macOS 10.15 atau yang lebih baru. Dalam skenario ini, pengguna yang login ke Akun Google-nya akan diautentikasi dan sesi akan disimpan di cookie bersama.
Di sini, auth_time adalah autentikasi Google terakhir pengguna di perangkat, bukan hanya dalam aplikasi Anda.
SFSafariViewController, WKWebView, dan UIWebView beroperasi di sandbox terisolasi dalam aplikasi Anda. Hindari penggunaannya saat menggunakan auth_time. Di sini, auth_time adalah login terakhir pengguna ke aplikasi itu sendiri, karena nilainya selalu terbaru sehingga kurang bermakna.
Untuk meminta auth_time, perbarui dependensi GoogleSignIn ke versi terbaru
dan buat objek authTimeClaim, lalu tambahkan ke kumpulan claims.
Untuk meminta amr, buat objek amrClaim dan tambahkan ke kumpulan claims.
Swift
Tambahkan kumpulan klaim ke metode GIDSignIn.sharedInstance.signIn:
let authTimeClaim = GIDClaim.authTime() let amrClaim = GIDClaim.amr() let claims = Set([authTimeClaim, amrClaim])// Start the sign-in process GIDSignIn.sharedInstance.signIn( withPresenting: rootViewController, claims: claims ) { signInResult, error in guard let result = signInResult else { print("Error signing in: (error?.localizedDescription ?? "No error description")") return } // If sign in succeeded, display the app's main content View print("ID Token: (result.user.idToken?.tokenString ?? "No token")") }
Objective-C
Tambahkan kumpulan klaim ke metode signInWithPresentingViewController:
GIDClaim *authTimeClaim = [GIDClaim authTimeClaim]; GIDClaim *AMRClaim = [GIDClaim AMRClaim]; NSSet *claims = [NSSet setWithArray:@[authTimeClaim, AMRClaim]];// Include the claims set and start the sign-in process [GIDSignIn.sharedInstance signInWithPresentingViewController:self hint:nil claims:claims completion:^(GIDSignInResult * _Nullable signInResult, NSError * _Nullable error) { // On success signInResult.user.idToken // contains the requested claims. }];
Lihat Mengintegrasikan Login dengan Google ke aplikasi iOS atau macOS untuk mengetahui informasi selengkapnya.
Respons
Jika klaim auth_time atau amr disertakan dalam permintaan, klaim tersebut akan ditampilkan dalam respons payload Token ID bersama dengan klaim standar lainnya seperti iss (penerbit), sub (subjek), aud (audiens), dan exp (waktu habis masa berlaku).
Klaim yang tidak ada kemungkinan disebabkan oleh aplikasi yang tidak diverifikasi atau setelan tambahan yang dinonaktifkan, yang merupakan setelan default. Ikuti petunjuk di Penyiapan untuk mengonfirmasi bahwa Client ID dan Aplikasi yang digunakan Diverifikasi dan klaim tambahan diaktifkan.
Nilai klaim auth_time adalah angka JSON yang mewakili jumlah detik yang telah berlalu sejak epoch Unix (1 Januari 1970, 00.00.00 UTC) hingga waktu autentikasi pengguna terakhir terjadi.
Nilai klaim amr adalah array JSON string yang mewakili metode autentikasi yang digunakan selama peristiwa login Akun Google terakhir.
Berikut adalah contoh Token ID yang didekode yang menyertakan klaim auth_time dan amr:
{ "iss": "https://accounts.google.com", "azp": "YOUR_CLIENT_ID", "aud": "YOUR_CLIENT_ID", "sub": "117726431651943698600", "email": "alice@example.com", "email_verified": true, "nonce": "123-456-7890", "auth_time": 1748875426, "amr": ["mfa", "pwd", "tel"], "nbf": 1748880889, "name": "Elisa Beckett", "picture": "https://lh3.googleusercontent.com/a/default-user=s96-c", "given_name": "Elisa", "family_name": "Beckett", "iat": 1748881189, "exp": 1748884789, "jti": "8b5d7ce345787d5dbf14ce6e08a8f88ee8c9b5b1" }
Token ID juga berisi klaim iat (dikeluarkan pada), yang menunjukkan waktu JWT dikeluarkan. Dengan membandingkan klaim iat dan auth_time, Anda dapat menentukan waktu yang berlalu sejak autentikasi terakhir pengguna relatif terhadap waktu pembuatan Token ID tertentu. Misalnya, jika iat adalah 1748881189 dan auth_time adalah 1748875426, perbedaannya adalah 5763 detik, yang mewakili 1 jam, 36 menit, dan 3 detik waktu yang berlalu.