Порядок проверки (OpenID Connect Core, § 3.1.3.7): проверьте подпись ключом из JWKS поставщика и алгоритмом, указанным при регистрации клиента (по умолчанию RS256); убедитесь, что iss совпадает с идентификатором издателя поставщика, aud содержит идентификатор клиента (а при нескольких аудиториях проверьте и azp), exp указывает на момент в будущем, а nonce совпадает со значением, которое отправил клиент; при необходимости проверьте auth_time, acr и amr. Стабильный идентификатор пользователя — пара iss и sub, а не адрес электронной почты.
ID-токен предназначен для клиента, а не для API: отправлять его серверу ресурсов как токен доступа — распространённый антипаттерн, ведь его аудитория — клиент. Гибридный и неявный потоки (hybrid и implicit flow) возвращают ID-токены через браузер, поэтому и существуют at_hash и c_hash, которые связывают токены между собой.