Sign in with Google は、バックエンドが受け取る ID トークンに OpenID Connect(OIDC)標準のセッションメタデータクレームを追加した。Google アカウントとの認証セッションの鮮度と認証手段をアプリ側で参照し、リスクベースのアクセス制御やステップアップ認証の判断に使える。個人 Gmail と Google Workspace 管理アカウントのいずれにも適用され、Android・iOS・Web のクライアント/サーバーアプリで利用できる。

追加されるクレームは次のとおり。

  • auth_time: ユーザーが Google アカウントで最後に認証した時刻(Unix epoch からの秒数)。ID トークンやアクセストークンの発行時刻とは別で、Google セッションの鮮度を示す
  • amr: 上記セッションで使われた認証手段を表す文字列の JSON 配列。pwd(パスワード)、mfa(多要素認証)、hwk(ハードウェアセキュリティキー)、swk(ソフトウェアキー/パスキー)、tel(電話)、sms(SMS)を返しうる

Google セッションとアプリセッションは別物である。ユーザーが Google にサインインした時点の認証情報が auth_time と amr に載り、アプリはそれをもとにセッション管理や権限付与を調整できる。例として、auth_time の経過に応じて機密操作前に追加認証を求める、amr に mfa や hwk が含まれない場合は管理機能へのアクセスを拒否する、監査ログに認証手段を記録する、といった用途が想定される。

利用条件は次のとおり。

  • Google Auth Platform で公開済みかつ検証済みのアプリであること
  • Advanced Settings で Session age claims(auth_time)と Authentication strength claims(amr)を有効化すること
  • 認証リクエストの OIDC claims パラメータで各クレームを essential: true として要求すること

既存の Sign in with Google(OIDC)フローを大きく変えず、リクエストにクレーム指定を足す形で導入できる。

console
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=RANDOM_VALUE&
claims={ "id_token": {
    "amr": { "essential": true },
    "auth_time": { "essential": true }
  }
}

#参考文献