gpt4 book ai didi

azure - JWT验证: Caching JWKS derived from cached discovery document via Azure API Management

转载 作者:行者123 更新时间:2023-12-03 04:13:49 34 4
gpt4 key购买 nike

我通过包装并通过 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

以下是 token 验证策略:

 <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 链接?如果是这样,我该如何缓存它?

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

最佳答案

您需要将 JWKS 端点的内容缓存在您尝试验证请求 JWT 的服务中的某个位置。缓存这些 key 的一个好方法是使用缓存库,它将在服务级别缓存 key 指定的时间。我在服务中使用的库被 Ben Mames 称为 caffeine,可以在 here 找到。 。以下是如何将 JWK 缓存 30 分钟的简单示例:

cache = Caffeine.newBuilder()
.maximumSize(5)
.expireAfterWrite(30, TimeUnit.MINUTES)
.build(k -> jwksMap.get(k));

然后,您的服务可以每 30 分钟从端点重新获取 key 以刷新缓存。

关于azure - JWT验证: Caching JWKS derived from cached discovery document via Azure API Management,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54928172/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com