Ten przewodnik opisuje zbiór funkcji, które zwracają dodatkowe sygnały zaufania dotyczące konta Google. Te sygnały zaufania pomagają systemowi zarządzania kontami podejmować decyzje na podstawie ryzyka podczas rejestracji i tworzenia konta oraz później w przypadku powracających użytkowników.
Konfiguracja
Aby otrzymywać dodatkowe roszczenia, aplikacja musi być opublikowana, zweryfikowana i mieć włączone funkcje pakietu zabezpieczeń.
Aby sprawdzić, czy aplikacja została opublikowana i zweryfikowana:
- Otwórz Platformę uwierzytelniania Google
- Wybieranie lub tworzenie projektu dla aplikacji
- W menu kliknij Odbiorcy.
- Sprawdź, czy Stan publikacji to W produkcji.
- W menu kliknij Centrum weryfikacji.
Sprawdź, czy Stan weryfikacji to Zweryfikowano.
Więcej informacji znajdziesz w Centrum pomocy dotyczącego weryfikacji aplikacji OAuth.
Aby włączyć roszczenie auth_time:
- Otwórz Platformę uwierzytelniania Google
- Wybieranie lub tworzenie projektu dla aplikacji
- W menu kliknij Ustawienia.
- W sekcji Ustawienia zaawansowane wybierz Deklaracje dotyczące wieku sesji, aby włączyć tę funkcję.
auth_time
Obsługiwane funkcje
W tej sekcji opisujemy poszczególne funkcje wchodzące w skład pakietu zabezpieczeń.
auth_time
auth_timeRoszczenie jest standardową częścią protokołu OpenID Connect, która zawiera informacje o tym, kiedy użytkownik końcowy ostatnio uwierzytelnił się w Google. Jest to liczba JSON reprezentująca liczbę sekund, które upłynęły od epoki uniksowej (1 stycznia 1970 r., 00:00:00 UTC). Jest to czas ostatniego uwierzytelnienia użytkownika. Jest to sygnatura czasowa wskazująca ostatnie logowanie użytkownika na konto Google na bieżącym urządzeniu lub w przeglądarce.
To roszczenie jest zawarte w tokenie identyfikatora, czyli tokenie internetowym JSON (JWT), który zawiera zweryfikowane informacje o uwierzytelnianiu i użytkowniku.
Roszczenie auth_time jest przydatne w Twojej aplikacji, ponieważ pozwala określić, jak niedawno użytkownik aktywnie zalogował się na konto Google na używanym urządzeniu lub w przeglądarce. Może to być szczególnie ważne ze względów bezpieczeństwa, np.:
Podejmowanie świadomych decyzji o tym, czy przed wykonaniem przez użytkownika działań wymagających większego poziomu bezpieczeństwa, takich jak usunięcie konta, zmiana metod kontaktu z kontem czy dokonanie płatności, aplikacja powinna wyświetlić dodatkowy test zabezpieczający. Google nie obsługuje próśb o ponowne uwierzytelnienie konta Google.
wykorzystywanie aktualności i stabilności sesji na koncie Google użytkownika jako sygnału zaufania; Ogólnie rzecz biorąc, niedawna wartość
auth_timewskazuje na aktualność, a starsza wartość – na stabilność.
W przypadku aplikacji internetowych sesję stanowi połączenie przeglądarki i systemu operacyjnego użytkownika po zalogowaniu się na konto Google.
Niezależnie od tego Twoja witryna utrzymuje też osobną sesję użytkownika. Nowsza
auth_time wartość oznacza, że użytkownik niedawno zalogował się na swoje konto Google.
Często jest to oznaka aktywnego i zaangażowanego użytkownika, którą można interpretować jako sygnał mniejszego ryzyka.
Na platformach mobilnych, takich jak Android, użytkownicy zwykle logują się bezpośrednio na urządzeniu za pomocą metod biometrycznych, takich jak skanowanie odcisku palca lub twarzy, oraz kodu PIN lub wzoru odblokowywania urządzenia. Aplikacje i platformy mobilne często korzystają z tych metod uwierzytelniania opartych na platformie zamiast tworzyć nową sesję w Google. W rezultacie rzadko dochodzi do logowania na konto Google i odpowiednich aktualizacji auth_time. Ostatnia wartość auth_time może sygnalizować zmianę w długotrwałej sesji na koncie Google, a tym samym zwiększone ryzyko.
Wskaźniki zaufania to złożony temat. auth_time ma być używany wraz z innymi sygnałami, takimi jak włączenie uwierzytelniania wielopoziomowego (MFA), użyta metoda uwierzytelniania i czas trwania sesji użytkownika między aplikacją a platformą.
Żądanie auth_time
Konkretna metoda używana do żądania roszczenia auth_time różni się w zależności od używanego interfejsu API, ale każdy interfejs API zawiera opcjonalny parametr claims do żądania auth_time.
Protokół OIDC
Jeśli korzystasz bezpośrednio z platformy OAuth, poproś o auth_time, dodając go do parametru żądania opcjonalnych roszczeń. Ustaw wartość pola id_token obiektu JSON roszczeń na {"auth_time":{"essential":true}}. Na przykład:
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}}}
Więcej informacji znajdziesz w artykule OpenID Connect.
GIS w internecie
Biblioteka Logowanie przez Google na stronach internetowych ma 2 interfejsy API: HTML i JavaScript, które umożliwiają wysyłanie żądań dodatkowych informacji. Na przykład poproś o auth_time za pomocą interfejsu 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",
});
google.accounts.id.renderButton(
document.getElementById("buttonDiv"),
{ type: "standard", size: "large" }
);
}
</script>
<div id="buttonDiv"></div>
</body>
</html>Więcej informacji znajdziesz w artykule Logowanie się za pomocą Google w internecie.
GIS na Androida
Do wysyłania żądań auth_time używane są metoda setClaims i obiekt Claim.
Zaktualizuj zależności kompilacji, aby używać najnowszych wersji bibliotek androidx.credentials:credentials-play-services-auth i com.google.android.libraries.identity.googleid:googleid.
Utwórz instancję obiektu Claim typu auth_time, używając setClaims, aby dodać opcje logowania:
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder() .setAutoSelectEnabled(true) .setFilterByAuthorizedAccounts(true) .setServerClientId(WEB_CLIENT_ID) .setNonce("NONCE") .setClaims(ImmutableList.of(new Claim("auth_time", true))) .build()
Więcej informacji znajdziesz w artykule Uwierzytelnianie użytkowników za pomocą funkcji Zaloguj się przez Google.
Odpowiedź auth_time
Gdy roszczenie auth_time jest zawarte w żądaniu, pojawia się w odpowiedzi z ładunkiem tokena identyfikacyjnego wraz z innymi standardowymi roszczeniami, takimi jak iss (wystawca), sub (podmiot), aud (odbiorca) i exp (czas wygaśnięcia). Wartość roszczenia auth_time to liczba JSON reprezentująca liczbę sekund, które upłynęły od epoki uniksowej (1 stycznia 1970 r., 00:00:00 UTC) do momentu ostatniego uwierzytelnienia użytkownika. To przykład zdekodowanego tokena identyfikatora
zawierającego roszczenie auth_time:
{ "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" }
Token tożsamości zawiera też deklarację iat (issued at), która wskazuje czas wystawienia tokena JWT. Porównując deklaracje iat i auth_time, możesz określić czas, który upłynął od ostatniego uwierzytelnienia użytkownika do momentu utworzenia konkretnego tokena identyfikatora. Jeśli na przykład wartość iat to 1748881189, a wartość auth_time to 1748875426, różnica wynosi 5763 sekundy, czyli 1 godzinę, 36 minut i 3 sekundy.