验证(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 存在的原因:它们把这些令牌相互绑定在一起。