Sign in with Google Security Bundle gives security teams a practical way to reason about missing ID token claims.

Use the Sign in with Google Security Bundle checklist before changing your OAuth request or token parser.

When the Sign in with Google Security Bundle is enabled, verify the Google ID token amr claim and auth_time claim independently.

The Sign in with Google Security Bundle also depends on publishing and verification, not just adding parameters to the authorization URL.

Document Sign in with Google Security Bundle behaviour so support teams can explain why a valid login may still omit optional claims.

Test Sign in with Google Security Bundle flows in production-like environments and log claim presence without storing unnecessary user data.

Sign in with Google Security Bundle illustration
Google Identity / OAuth Verification

Your sign-in request asks for amr and auth_time. The request succeeds. The ID token comes back — and neither claim is there. Nothing errored, so the team starts upgrading SDK versions. That is almost never the problem.

Google groups a small set of extra ID token claims under what it calls the Security Bundle for Sign in with Google. These claims tell your risk engine how and when the user last authenticated to their Google Account — signals that are genuinely useful for step-up authentication, fraud scoring and session decisions.

They are also, per Google's own documentation, switched off by default and only returned once your OAuth app is published to production and verified. That single sentence is where most integrations quietly stall.

Sign in with Google Security Bundle: what it returns

amr — Authentication Methods References

A JSON array describing how the user last signed in to Google. Google supports pwd, swk (passkey or software key), hwk (hardware security key), sms, tel and mfa. The presence of mfa confirms the sign-in met Google's multi-factor requirements.

auth_time — last authentication timestamp

A Unix timestamp for when the user most recently authenticated to their Google Account. Compared against the token's iat, it tells you how stale that Google session is before you allow a sensitive action.

Cross-Account Protection (RISC)

A separate, optional service that pushes signed security event tokens to an endpoint you host — session revocations, token revocations, account disabled for hijacking. Google explicitly recommends enabling it alongside the bundle.

The Sign in with Google Security Bundle explains when Google includes the amr and auth_time claims in an ID token. These claims help applications make safer session and risk decisions.

For the Sign in with Google Security Bundle, verify that the OAuth app is published, production-ready, and approved before debugging token parsing.

Why the claims silently go missing

Google's documentation is blunt about the failure mode: missing claims are likely because the app is not verified, or because the additional settings are disabled — and disabled is the default state. There is no error, no warning, and no difference in the shape of a successful response. You simply get an ID token without those two fields.

The diagnostic trap: because the request returns HTTP 200 with a perfectly valid ID token, every layer of your stack reports success. Teams typically burn days on SDK upgrades, claims-parameter encoding and nonce handling before anyone checks the OAuth app's publishing and verification status.

The gate, in order

1

Publishing status must be In production. An app sitting in Testing does not qualify. Moving to production is also what removes the test-user cap and the unverified-app warning screen — see Internal vs External user type for why that dropdown decides whether verification applies to you at all.

2

Verification status must read Verified. This is the full OAuth app verification path in the Google Auth Platform Verification Center — brand review, scope justification, demo video, privacy policy and, for restricted scopes, an annual security assessment. Our Google OAuth verification guide covers what reviewers actually check.

3

The advanced settings must be switched on. Session age claims enable auth_time; authentication strength claims enable amr. Both are opt-in and both are off until someone turns them on.

4

Then the claims must be requested correctly per platform. The mechanism differs across the OIDC endpoint, the Web library, Android and iOS. Even with the gate cleared, a request built for the wrong surface returns a token without the claims — indistinguishable from the unverified case.

The part that catches product teams, not developers

Steps 3 and 4 are configuration. Step 2 is a review process with a queue, a rejection path and dependencies on assets you may not control yet — your verified domain, your published privacy policy, your brand assets and your scope list. If any of your scopes fall into the sensitive or restricted tier, the timeline and the evidence burden change substantially; which tier your scopes land in is decided by Google, not by you.

So a feature that looks like a two-line SDK change is, in practice, blocked behind an approval that can take weeks and can be sent back for reasons that have nothing to do with your sign-in code.

Where these projects commonly get stuck

  • App still in Testing. The integration was built and demoed in testing mode, so nobody noticed the claims were never arriving in the first place.
  • Verification rejected on brand grounds. App name, logo or homepage do not match the verified domain, so the app never reaches Verified and the claims stay off.
  • Advanced settings never enabled. Verification passes, everyone celebrates, and the claims are still absent because the two toggles were never touched.
  • Wrong platform request shape. The claims parameter works on the web flow but the Android or iOS request was never updated, so mobile users silently get a reduced token.
  • Workspace assumptions. Cross-Account Protection does not currently send security events for Google Workspace users, which breaks risk models built on the assumption that every account emits events.
  • RISC endpoint rejected. The receiver must be HTTPS and must sit on one of the project's authorized domains, or registration fails outright.

What it is worth once it works

Step-up decisionsChallenge only when the Google session is stale, instead of challenging everyone.
MFA-aware onboardingTreat an account that signed in with a passkey or hardware key differently at sign-up.
Faster revocationEnd sessions when Google reports a hijacked or disabled account, rather than waiting for a support ticket.

The honest summary

The Security Bundle is not a hard technical problem. It is an approval problem wearing a technical disguise. The code changes are small; the blocker is getting the OAuth app through publication and verification cleanly, with scopes, brand assets and policy pages that hold up to review — and then knowing which of the four gates is the one actually failing.

That diagnosis is the expensive part, because every failure mode looks identical from the outside: a valid token with two fields missing. If your app is stuck somewhere in that sequence, or verification has come back rejected more than once, this is exactly the kind of review preparation and policy-alignment work we handle for Google OAuth and API verification projects. Outcomes depend on Google's review and on your app meeting their published requirements — no specific result can be promised — but the path is well mapped, and most of the delay comes from fixable submission problems rather than from the platform itself.

All requirements described here are from Google's official Sign in with Google Security Bundle and Cross-Account Protection documentation, current as of August 2026. Google changes these settings and their locations periodically — always confirm against the live documentation before you build.

Google’s official OpenID Connect documentation explains ID token claims, authentication context, and validation requirements for Sign in with Google.

Need Us to Get Your Google / YouTube API 100% Approved?

Stop losing weeks to OAuth verification back-and-forth and quota audits. With 500+ apps approved, we handle your entire submission from start to finish. You get 100% Approval or a 100% Refund — and for your complete safety, you can hire us directly through Upwork or Fiverr Escrow (or use the WhatsApp / Calendar buttons in the header & footer).

Chat on WhatsApp

Frequently Asked Questions about Google OAuth verification

Why do Sign In with Google apps get rejected?

Rejections usually come from branding that doesn't match the homepage, unverified domains, a privacy policy without Google user data language, or requests for scopes beyond basic sign-in without a clear reason.

How long does Google OAuth verification usually take?

It usually takes ~2–3 days for preparation and submission, followed by the platform's review queue — typically 7–15 days (often faster on platforms like X, or longer depending on platform review volume and any follow-up rounds).

Is there a guarantee?

We work on a 100% Approval or 100% Refund basis: if we can't get your valid use case approved, you get a full refund.

How can I hire you safely?

You can hire us through Upwork or Fiverr, so your payment stays in Escrow and is only released when the work is delivered. We've been doing this for 10+ years, with 500+ apps approved and 10,000+ permissions granted.