首页 > 解决方案 > 使用 Azure API 管理从身份提供者缓存 JWKS 以验证 JWT

问题描述

下面的代码通过在每次验证之后的每个请求时下载 JWKS 来验证 JWT令牌

    <validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Error: expired token or invalid token" require-expiration-time="true" require-scheme="Bearer" require-signed-tokens="true">
        <openid-config url="https://IdentityProvider/oidc/.well-known/openid-configuration" />
        <audiences>
            <audience>aud id</audience>
        </audiences>
    </validate-jwt>

我的问题是如何从下面的示例链接中缓存 JWKS 以避免每次都下载它,并且无需对 JWKS 进行硬编码,因为它会定期轮换。

https://demo.identityserver.io/.well-known/openid-configuration/jwks

https://openid-connect-eu.onelogin.com/oidc/certs

任何用于缓存和验证 JWT 的代码示例和链接将不胜感激。

下面似乎是相关的,但不是一个完整的例子。

https://docs.microsoft.com/en-us/azure/api-management/api-management-sample-cache-by-key

更新

为了清楚起见,我想缓存上面链接的 JWKS 中的内容以提高性能。

标签: azureazure-api-management

解决方案


APIM 不会为每个请求下载 open id 配置。如果我没记错的话,它会每隔一小时定期下载、缓存和自动刷新。


推荐阅读