Bu kılavuzda, bir Google Hesabı hakkında ek güven sinyalleri döndüren bir özellikler koleksiyonu açıklanmaktadır. Bu güven sinyalleri, hesap yönetim sisteminizin kayıt, hesap oluşturma ve daha sonra geri dönen kullanıcılar için risk temelli kararlar almasına yardımcı olur.
Oturum sayısı
Bir uygulama tarafından gönderilen kimlik doğrulama isteği, kimlik jetonu döndürür. Örneğin, Google ile oturum aç düğmesine basıldığında düğmeyi görüntüleyen Android, iOS veya web istemcisine ya da sunucu uygulamasına bir kimlik jetonu döndürülür.
Google Hesabı'nda oturum açmak için kimlik doğrulama ayrı bir etkinliktir. Kimlik jetonunda döndürülen talepler bu etkinliği temsil eder. Örneğin, Google Hesabı'nda oturum açmak için kullanılan kimlik doğrulama zamanı ve yöntemleri.
İki kimlik doğrulama anı ve iki kullanıcı oturumu vardır:
- Kullanıcı <-> Google Oturumu: Kullanıcı Google Hesabı'nda oturum açtığında oluşturulur. Google, bu oturumun yaşam döngüsünü ve güvenliğini yönetir.
auth_timeveamrtalepleri bu oturumla ilgili analizler sunar. - Kullanıcı <-> Uygulama Oturumunuz: Kullanıcı uygulamanızda oturum açtıktan sonra oluşturulur. Genellikle Google ile oturum açma kullanılarak başlatılır. Uygulamanız, oturum ve hesap yönetimi kararlarını iyileştirmek için talepleri kullanarak bu oturumu yönetir.
Kullanıcılar genellikle telefon, masaüstü bilgisayar, akıllı ekran veya TV gibi birden fazla cihazda Google hizmetleriyle etkileşimde bulunur. Her platformda veya cihazda oturum açtığınızda ayrı bir oturum oluşturulur. Web'de oturum açma işlemlerinde, belirli tarayıcı ile Google arasında bir oturum oluşturulur. Gizli Tarama ve Gizli modların kendi ayrı, yalıtılmış oturumlarını oluşturduğunu unutmayın. Bu nedenle, tek bir Google Hesabı'nda çeşitli tarayıcılar ve cihazlarda aynı anda birden fazla farklı oturum etkin olabilir. Daha fazla bilgi için Hesaba erişimi olan cihazları görme başlıklı makaleyi inceleyin.
Google Hesabı durumu
Google Hesabı yaşam döngüsünün tipik etkinlikleri şunlardır:
- Bir kişi Google Hesabı oluşturmayı seçtiğinde
- Google, hesabı devre dışı bırakabilir veya kullanıcı, Google Hesabınızı veya Gmail'inizi kurtarma başlıklı makaledeki adımları uyguladıktan sonra hesabı yeniden etkinleştirebilir.
- Kullanıcılar Google Hesaplarını silebilir veya Google, Etkin Olmayan Google Hesabı Politikası nedeniyle hesabı silebilir.
Bu kılavuzda açıklanan Güvenlik Paketi özellikleri, etkin veya devre dışı bırakılmış hesaplar için geçerlidir ancak Google Hesabı oluşturma veya silme etkinlikleri için geçerli değildir.
Google, bazı nedenlerle hesapları istediği zaman devre dışı bırakabilir. Bu nedenlerden bazıları için Hesabınız devre dışı bırakıldı başlıklı makaleyi inceleyin. Bu durumda, etkin olan tüm Google oturumları sonlandırılır ve Google'ın hesaplar arası koruma hizmeti tarafından bir RISC etkinliği gönderilir. Devre dışı bırakılan hesapların Google ile oturum açma özelliğini kullanması engellenir. Bu nedenle, kimlik jetonu hiçbir zaman verilmez ve devre dışı bırakılan kullanıcı hesaplarını izlemek için kullanılamaz.
Hesaplar Arası Koruma (RISC) etkinliklerinin alınması isteğe bağlı olsa da bu etkinlikler, kullanıcı ile uygulamanız arasındaki oturumu yönetmek ve oturumun güvenli olup olmadığını belirlemek için önemli sinyaller olarak kullanılır. RISC'nin nasıl uygulanacağı ve etkinliklere nasıl yanıt verileceği ile ilgili talimatlar Hesaplar Arası Koruma ile kullanıcı hesaplarını koruma başlıklı makalede açıklanmaktadır.
Kurulum
Ek talepler alabilmek için uygulamanızın yayınlanması, doğrulanması ve güvenlik paketi özelliklerinin etkinleştirilmesi gerekir. Uygulamanızın yayınlandığını ve doğrulandığını onaylayarak başlayın:
- Google Auth Platform'u açın.
- Uygulamanız için projeyi seçin veya oluşturun
- Kitle'yi tıklayın ve Yayınlama durumu'nun Üretimde olduğunu onaylayın.
- Doğrulama Merkezi'ni tıklayın ve Doğrulama Durumu'nun Doğrulandı olarak onaylandığını doğrulayın.
Ardından, ek hak taleplerini etkinleştirin:
- Menüde Ayarlar'ı tıklayın.
- Gelişmiş Ayarlar bölümünde şunları seçin:
auth_timeözelliğini etkinleştirmek için oturum yaşı talepleriamrözelliğini etkinleştirmek için kimlik doğrulama gücü iddiaları
Daha fazla bilgi edinmek için OAuth Uygulaması Doğrulama Yardım Merkezi'ni ziyaret edin.
Desteklenen özellikler
Bu bölümde, Güvenlik Paketi'ni oluşturan özellikler açıklanmaktadır.
Kimlik Doğrulama Yöntemleri Referansları
Kimlik Doğrulama Yöntemleri Referansları (amr), kullanıcı ile Google arasındaki son kimlik doğrulama etkinliği sırasında kullanılan yöntemleri açıklayan bir OpenID Connect talebidir.
Google, olası IANA.AMR değerlerinden aşağıdaki değerleri destekler. Bu değerler şunları gösterir:
hwkDonanım güvenlik anahtarı kullanıldıysamfaÇok öğeli kimlik doğrulama tamamlandıpwdşifre kullanıldıswkgeçiş anahtarı gibi bir yazılım anahtarı kullanıldıysasmsdoğrulama için SMS mesajı kullanıldıysatelDoğrulama için telefon görüşmesi kullanıldıysa
Bu değerlerden biri veya daha fazlası, kimlik jetonundaki amr talebinde bir dize JSON dizisi olarak döndürülür.
amr talebi, yalnızca kullanılan kimlik doğrulama yöntemiyle ilgili bilgiler mevcut olduğunda kimlik jetonuna dahil edilir. Talep edildiğinde bile mevcut olmayabilir.
Google Hesabı sahipleri, 2 Adımlı Doğrulama'yı zorunlu kılabilir ve hangi çok faktörlü kimlik doğrulama yöntemlerinin kullanılacağını seçebilir.
Bir Google Hesabı'nda Gelişmiş Koruma etkinleştirildiğinde Titan güvenlik anahtarları (hwk) veya geçiş anahtarı (swk) gibi güçlü bir 2SV yöntemi gerekir. Her iki durumda da Google Hesabı'nda oturum açma sırasında birden fazla faktör kullanıldığında mfa değeri bulunur.
mfa simgesinin bulunması, kimlik doğrulama etkinliğinin Google'ın çok öğeli kimlik doğrulamasıyla ilgili şartlarını karşıladığını gösterir. Örneğin, şifre (pwd) ve geçiş anahtarıyla (swk) yapılan bir Google Hesabı kimlik doğrulaması şu talebi ("amr": ["mfa", "pwd", "swk"]) oluşturur.
Bu kaynaklarda hesap güvenliği ve kullanıcı kimlik doğrulaması hakkında daha fazla bilgi verilmektedir: Gelişmiş Koruma Programı ile Google'ın en güçlü hesap güvenliğinden yararlanma, Şifre yerine geçiş anahtarıyla oturum açma ve 2 Adımlı Doğrulama için güvenlik anahtarı kullanma.
Workspace yöneticileri, yönetilen Workspace hesaplarının kimlik doğrulama politikasını kontrol eder ve çok faktörlü kimlik doğrulama veya güvenlik anahtarı kullanımını zorunlu kılabilir. Daha fazla bilgi için Google kimlik yönetimine genel bakış ve Google Cloud için çok faktörlü kimlik doğrulama şartı başlıklı makaleler ile Giriş korumaları ve kontrolleri bölümüne bakın.
Kimlik doğrulama zamanı
auth_time talebi, OpenID Connect protokolünün standart bir parçasıdır ve son kullanıcının Google ile en son kimlik doğruladığı zaman hakkında bilgi sağlar. Bu talep, Unix döneminden (1 Ocak 1970, 00:00:00 UTC) bu yana geçen saniye sayısını temsil eden bir JSON sayısıdır ve kullanıcının en son kimlik doğruladığı zamandır. Bu talebi, kullanıcının mevcut cihaz veya tarayıcıdan Google Hesabı'na yaptığı son giriş etkinliğini gösteren bir zaman damgası olarak düşünebilirsiniz. Bu talep, kimlik doğrulama ve kullanıcı hakkında doğrulanmış bilgiler içeren bir JSON Web Token'ı (JWT) olan kimlik jetonuna dahil edilir.
auth_time talebi, kullanıcının kullandığı cihazda veya tarayıcıda bir Google Hesabı'na ne kadar süre önce aktif olarak giriş yaptığını belirlemenize olanak tanıdığı için uygulamanız açısından değerlidir. Bu, özellikle aşağıdaki gibi güvenlik amaçları için önemlidir:
Uygulamanızın, hesabı silme, hesap iletişim yöntemlerini değiştirme veya ödeme yapma gibi hassas kullanıcı işlemlerini gerçekleştirmeden önce ek bir adımda kimlik doğrulama sorgulaması yapıp yapmaması gerektiği konusunda bilinçli bir karar verme. Google, Google Hesabı yeniden kimlik doğrulama isteklerini desteklemez.
Kullanıcının Google Hesabı oturumunun güncelliğini ve kararlılığını güven işareti olarak kullanır. Genel olarak, yeni bir
auth_timedeğeri güncelliğin, eski bir değer ise kararlılığın göstergesidir.
Web uygulamalarında, kullanıcının tarayıcısı ve işletim sisteminin birleşimi, kullanıcı Google Hesabı'nda oturum açtıktan sonra bir oturum oluşturur.
Web siteniz de bağımsız olarak ayrı bir kullanıcı oturumu sürdürür. Daha yeni bir auth_time değeri, kullanıcının Google Hesabında yakın zamanda oturum açtığını gösterir.
Bu durum genellikle etkin ve ilgili bir kullanıcının göstergesidir ve daha düşük risk sinyali olarak yorumlanabilir.
Android gibi mobil platformlarda kullanıcılar genellikle parmak izi veya yüz tarama gibi biyometrik yöntemleri ve cihaza özel PIN ya da desen kilitlerini kullanarak doğrudan cihazlarında oturum açar. Mobil uygulamalar ve platformlar genellikle Google ile yeni bir oturum oluşturmak yerine bu platform tabanlı kimlik doğrulama yöntemlerini kullanır. Bu durum, Google Hesabı'nda oturum açma işlemlerinin seyrek yapılmasına ve auth_time ile ilgili güncellemelerin de buna bağlı olarak seyrek yapılmasına neden olur. Bu nedenle, son auth_time değeri, uzun süredir devam eden bir Google Hesabı oturumunda değişiklik olduğunu ve dolayısıyla riskin arttığını gösterebilir.
Güven sinyalleri, incelikli bir konudur. auth_time, çok öğeli kimlik doğrulamanın (MFA) etkin olup olmadığı, kullanılan kimlik doğrulama yöntemi ve uygulamanız ile platformunuz arasındaki kullanıcı oturumunun süresi gibi diğer sinyallerle birlikte kullanılması beklenir.
İstekler
auth_time ve amr taleplerinde kullanılan yöntem, kullanılan API'ye göre değişir. Ancak her API, auth_time ve amr talebinde bulunmak için isteğe bağlı bir claims parametresi içerir.
OIDC protokolü
OAuth Platformu'nu doğrudan kullanırken auth_time isteğinde bulunmak için claims isteğe bağlı parametresine auth_time değerini ekleyin. İddialar JSON nesnesinin id_token alanının değerini {"auth_time":{"essential":true}} olarak ayarlayın. Benzer şekilde, amr isteğinde bulunmak için {"amr":{"essential":true}} değerini claims parametresine ekleyin:
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} } }
Daha fazla bilgi için OpenID Connect başlıklı makaleyi inceleyin.
Web için Coğrafi Bilgi Sistemi
Web için Google ile oturum açma kitaplığında, ek taleplerde bulunmak için iki API (HTML ve JavaScript) bulunur. Örneğin, JavaScript API'yi kullanarak auth_time ve amr isteğinde bulunun:
<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>Daha fazla bilgi için Web için Google ile Oturum Açma başlıklı makaleyi inceleyin.
Android için GIS
setClaims yöntemi ve Claim nesnesi, auth_time ve amr istemek için kullanılır.
androidx.credentials:credentials-play-services-auth ve com.google.android.libraries.identity.googleid:googleid kitaplıklarının en yeni sürümlerini kullanmak için derleme bağımlılıklarınızı güncelleyin.
Oturum açma seçenekleri listesine eklemek için Claim türünde auth_time ve amr nesnelerini setClaims kullanarak oluşturun:
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()
Daha fazla bilgi için Google ile oturum açma özelliğini kullanarak kullanıcıların kimliğini doğrulama başlıklı makaleyi inceleyin.
iOS
iOS için Google ile Oturum Açma SDK'sı, authTimeClaim nesnesi ve claims parametresini, isteğe bağlı olarak auth_time ve amr istemek için kullanılan GIDSignIn sınıfına ekler.
ASWebAuthenticationSession kullanan uygulamalar, cihaz genelinde paylaşılan bir çerez kavanozunu günceller. GIDSignIn, iOS 12 veya sonraki sürümlerde ve macOS 10.15 veya sonraki sürümlerde varsayılan olarak bu yöntemi kullanır. Bu senaryoda, Google Hesabı'nda oturum açan bir kullanıcının kimliği doğrulanır ve oturum, paylaşılan çerez kavanozunda saklanır.
Buradaki auth_time, kullanıcının cihazdaki son Google kimlik doğrulamasıdır (yalnızca uygulamanızdaki değil).
SFSafariViewController, WKWebView ve UIWebView, uygulamanızda yalıtılmış sanal ortamlarda çalışır. auth_time kullanırken bunları kullanmaktan kaçının. Burada
auth_time, kullanıcının uygulamaya son oturum açma zamanı gösterilir. Değer her zaman güncel olduğundan daha az anlamlıdır.
auth_time isteğinde bulunmak için GoogleSignIn bağımlılıklarını en son sürüme güncelleyin ve authTimeClaim nesnesi oluşturup claims kümesine ekleyin.
amr amrClaim nesnesi oluşturup claims kümesine eklemesini istemek için.
Swift
İddia kümesini GIDSignIn.sharedInstance.signIn yöntemine ekleyin:
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
İddia kümesini signInWithPresentingViewController yöntemine ekleyin:
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. }];
Daha fazla bilgi için Google ile Oturum Açma'yı iOS veya macOS uygulamanıza entegre etme başlıklı makaleyi inceleyin.
Yanıtlar
İsteğe auth_time veya amr hak talepleri dahil edildiğinde, bunlar iss (yayıncı), sub (konu), aud (kitle) ve exp (geçerlilik süresi) gibi diğer standart hak talepleriyle birlikte kimlik jetonu yükü yanıtında döndürülür.
Eksik iddiaların nedeni, uygulamanın doğrulanmamış olması veya varsayılan olarak ek ayarların devre dışı bırakılmış olması olabilir. Kullanılan istemci kimliğinin ve uygulamanın doğrulanmış olduğunu ve ek iddiaların etkinleştirildiğini onaylamak için Kurulum bölümündeki talimatları uygulayın.
auth_time talebinin değeri, kullanıcının kimlik doğrulaması en son gerçekleştiğinden beri Unix dönemi (1 Ocak 1970, 00:00:00 UTC) itibarıyla geçen saniye sayısını temsil eden bir JSON sayısıdır.
amr talebinin değeri, son Google Hesabı oturum açma etkinliği sırasında kullanılan kimlik doğrulama yöntemlerini temsil eden bir dize JSON dizisidir.
Bu, auth_time ve amr taleplerini içeren, kodu çözülmüş bir kimlik jetonu örneğidir:
{ "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" }
Kimlik jetonu, JWT'nin yayınlandığı zamanı belirten bir iat (yayınlanma zamanı) talebi de içerir. iat ve auth_time taleplerini karşılaştırarak kullanıcının son kimlik doğrulamasından bu yana geçen süreyi, belirli kimlik jetonunun oluşturulma zamanına göre belirleyebilirsiniz. Örneğin, iat 1748881189 ve auth_time 1748875426 ise fark 5.763 saniyedir. Bu da 1 saat, 36 dakika ve 3 saniyelik bir süreye karşılık gelir.