検証手順は OpenID Connect Core §3.1.3.7 に定められています。プロバイダーの JWKS から取得した鍵と、クライアントが登録したアルゴリズム(デフォルトは RS256)で署名を検証し、iss がプロバイダーの発行者と一致すること、aud にクライアント ID が含まれること(オーディエンスが複数ある場合は azp も)、exp が未来の時刻であること、nonce がクライアントの送った値と一致することを確認します。必要に応じて auth_time、acr、amr も確認します。ユーザーを安定して識別できるのは iss と sub の組であり、メールアドレスではありません。
ID トークンはクライアントのためのものであり、API 向けではありません。オーディエンスはクライアントなので、アクセストークンとしてリソースサーバーに送るのはよくあるアンチパターンです。ハイブリッドフローとインプリシットフローはブラウザーを経由して ID トークンを返すため、トークン同士を結び付ける at_hash と c_hash が用意されています。