Validierung (OpenID Connect Core §3.1.3.7): Prüfe die Signatur mit einem Schlüssel aus dem JWKS des Anbieters und mit dem Algorithmus, den der Client registriert hat (standardmäßig RS256); prüfe, dass iss der Aussteller-Kennung des Anbieters entspricht, aud die Client-ID enthält (bei mehreren Audiences zusätzlich azp), exp in der Zukunft liegt und nonce mit dem Wert übereinstimmt, den der Client gesendet hat; optional prüfst du auth_time, acr und amr. Die stabile Kennung des Benutzers ist das Paar aus iss und sub, nicht die E-Mail-Adresse.
Ein ID-Token ist für den Client bestimmt, nicht für APIs: Es als Access Token an einen Ressourcenserver zu senden, ist ein verbreitetes Anti-Pattern, denn seine Audience ist der Client. Der Hybrid Flow und der Implicit Flow liefern ID-Tokens über den Browser aus; deshalb gibt es at_hash und c_hash, die die Tokens aneinander binden.