我正在开发一个使用Azure AD作为我的OAuth2.0提供程序的应用程序。 Azure有一个带有多个公钥的Jwks端点,其中一个对应的私钥用于签名我的令牌。我的应用程序通过检查授权标头中的keyid并通过在缓存中查找令牌来确定使用哪个密钥对令牌进行签名,从而解决了签名密钥解析问题。
我的应用程序每5分钟从端点获取一次密钥,并将其存储在缓存中,直到发生下一次获取。假设用户获得了一个用Key#1签名的令牌。如果在Jwks端点上将键#1换成键#2,并且我的应用程序获取键#2-对其进行缓存,然后尝试验证用键#1签名的令牌的签名,那么令牌验证显然会失败。
我如何允许在Jwks端点上不再用键签名的令牌仍然用于验证令牌,直到达到令牌的自然到期时间?