OpenID Connect 发现(/.well-known/openid-configuration)和 OAuth 授权服务器元数据(RFC 8414)以 jwks_uri 发布该 URL;密钥集包含当前所有可用于验证的密钥,每个密钥都带有 kid。验证者会缓存密钥集,选择 kid 与令牌头部一致的密钥,检查该密钥的 kty 和 alg 是否符合预期算法,并在遇到未知 kid 时重新获取(同时做速率限制)。
轮换的做法是:先添加新密钥,再用它签名;只有在用旧密钥签名的所有令牌都过期之后,才移除旧密钥。需要留意的问题:误发布了私有成员(d)、kid 值重复、缺少 alg 的密钥被宽松的库配上错误的算法使用,以及从不刷新的缓存。JWKS 检测可以针对这些问题审查线上端点。