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önetimi sisteminizin kayıt sırasında, hesap oluşturma sürecinde ve daha sonra geri dönen kullanıcılar için risk temelli kararlar almasına yardımcı olur.
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ı onaylamak için:
- Google Auth Platform'u açın.
- Uygulamanız için projeyi seçin veya oluşturun
- Menüde Kitle'yi tıklayın.
- Yayınlanma durumu'nun Üretimde olduğunu onaylayın.
- Menüde Doğrulama Merkezi'ni tıklayın.
Doğrulama Durumu'nun Doğrulandı olduğunu onaylayın.
Daha fazla bilgi edinmek için OAuth Uygulaması Doğrulama Yardım Merkezi'ni ziyaret edin.
auth_time talebini etkinleştirmek için:
- Google Auth Platform'u açın.
- Uygulamanız için projeyi seçin veya oluşturun
- Menüde Ayarlar'ı tıklayın.
- Gelişmiş Ayarlar bölümünde Oturum yaşı talepleri'ni seçerek
auth_timeözelliğini etkinleştirin.
Desteklenen özellikler
Bu bölümde, Güvenlik Paketi'ni oluşturan özellikler açıklanmaktadır.
auth_time
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, 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, kullanıcının Google Hesabı'na mevcut cihaz veya tarayıcıdan yaptığı son giriş etkinliğinin zaman damgası olarak düşünülebilir.
Bu talep, kimlik doğrulama ve kullanıcı hakkında doğrulanmış bilgiler içeren bir JSON Web Jetonu (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 durum, özellikle aşağıdakiler 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ım adım 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 sinyali olarak kullanma. 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 Google Hesabı'nda oturum açmasından sonra kullanıcının tarayıcısı ve işletim sisteminin birleşimi oturum olarak kabul edilir.
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 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.
auth_time isteği
auth_time talebinde bulunmak için kullanılan yöntem, kullanılan API'ye göre değişir. Ancak her API, auth_time talebinde bulunmak için isteğe bağlı bir claims parametresi içerir.
OIDC protokolü
OAuth Platformu'nu doğrudan kullanırken isteği, isteğe bağlı talepler istek parametresine ekleyerek auth_time isteğinde bulunun. İddialar JSON nesnesinin id_token
alanının değerini {"auth_time":{"essential":true}} olarak ayarlayın. Örneğin,
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}}}
Daha fazla bilgi için OpenID Connect başlıklı makaleyi inceleyin.
Web için GIS
Web için Google ile oturum açma kitaplığında ek taleplerde bulunmak üzere iki API (HTML ve JavaScript) bulunur. Örneğin, JavaScript API'yi kullanarak auth_time 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",
});
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 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çeneklerini eklemek için setClaims kullanarak Claim türünde bir auth_time nesnesi 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))) .build()
Daha fazla bilgi için Kullanıcıların kimliğini Google ile oturum açma özelliğiyle doğrulama başlıklı makaleyi inceleyin.
auth_time yanıtı
auth_time hak talebi isteğe dahil edildiğinde, IDToken yük yanıtında iss (veren), sub (konu), aud (kitle) ve exp (geçerlilik süresi) gibi diğer standart hak talepleriyle birlikte görünür. auth_time talebinin değeri, kullanıcının kimlik doğrulaması en son gerçekleştiğinden beri Unix sıfır zamanından (1 Ocak 1970, 00:00:00 UTC) bu yana geçen saniye sayısını temsil eden bir JSON sayısıdır. Bu, auth_time talebini 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, "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 5763 saniyedir. Bu da 1 saat, 36 dakika ve 3 saniyelik bir süreyi temsil eder.