我通过封装并通过Azure API管理对其进行缓存,从而在下面为发现终结点设置了缓存。
https://openid-connect-eu.onelogin.com/oidc/.well-known/openid-configuration
因此下面的新链接进行了缓存:
https://my.azure-api.net/sso/.well-known/openid-configuration?subscription-key=mykey
以下是令牌验证的政策:
<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://my.azure-api.net/sso/.well-known/openid-configuration?subscription-key=mykey" />
<audiences>
<audience>id</audience>
</audiences>
<issuers>
<issuer>https://openid-connect-eu.onelogin.com/oidc</issuer>
</issuers>
</validate-jwt>
我的问题是,我是否需要缓存下面的发现文档中用于验证的JWKS链接?如果是这样,我该如何缓存它?
答案 0 :(得分:0)
您将需要将JWKS端点的内容缓存在试图验证发出请求的JWT的服务中。缓存这些密钥的一种好方法是使用缓存库,该库将在服务级别缓存密钥达指定的时间。我在服务中使用的库被Ben Mames称为as.Date
,可以在here中找到。这是一个简单的示例,说明如何将JWK缓存30分钟:
caffeine
您的服务然后可以每30分钟从端点重新获取密钥以刷新缓存。
答案 1 :(得分:0)
我不知道您缓存此文档的原因,但是元数据端点(https://openid-connect-eu.onelogin.com/oidc/.well-known/openid-configuration)和 APIM从validate-jwt策略中获取密钥集端点(https://openid-connect-eu.onelogin.com/oidc/certs)。
答案 2 :(得分:0)
返回的html主体上的url被修改,并替换为通过APIM缓存的新url。