gpt4 book ai didi

keycloak - Spring Security 有没有办法缓存 token 自省(introspection)结果?

转载 作者:行者123 更新时间:2023-12-05 02:08:37 39 4
gpt4 key购买 nike

我有一个由 Keycloak 和 Spring Security 保护的 Spring boot REST API。

我找不到是否有办法防止对每个请求进行 token 自省(introspection)(即短时间缓存自省(introspection)结果)。每次我点击 API 时,都会在 Keycloak 上检查 token ,这对性能来说不是很好:(

感谢您的任何建议。

最佳答案

这是您在使用不透明 token (需要自省(introspection))时做出的权衡。

使用不透明标记:

  • OAuth 2.0 客户端看不到内容
  • 授权服务器可以随时撤销 token

权衡是您需要在每次请求时检查授权服务器以确保 token 没有失效。

使用 JWT:

  • OAuth 2.0 客户端可以检查 token 的内容
  • JWT 带有自己的过期信息

JWT 的性能优势换来的是它不能失效,只能过期。

所以,这不是您的确切问题,而是您询问的是性能,而 JWT 是解决不透明 token 的性能影响的一种非常常用的方法。

您可能还会问自己,是否需要为应用程序中的每个路径使用不透明 token 的额外安全优势。您能否对某些路径使用 JWT 并检查授权服务器以获得更高安全性的路径?

不管怎样,你问的是缓存。是的,Spring Boot 为您发布了一个 OpaqueTokenIntrospector 实例,您可以用缓存的实例覆盖它:

@Component
public class CachingOpaqueTokenIntrospector
implements OpaqueTokenIntrospector {

private final NimbusOpaqueTokenIntrospector introspector =
// ... construct

@Override
public OAuth2AuthenticatedPrincipal introspect(String token) {
// call delegate introspector and cache
}
}

例如,您可以在 introspect 方法上使用 @Cacheable 注释。

关于keycloak - Spring Security 有没有办法缓存 token 自省(introspection)结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60673828/

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