作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个由 Keycloak 和 Spring Security 保护的 Spring boot REST API。
我找不到是否有办法防止对每个请求进行 token 自省(introspection)(即短时间缓存自省(introspection)结果)。每次我点击 API 时,都会在 Keycloak 上检查 token ,这对性能来说不是很好:(
感谢您的任何建议。
最佳答案
这是您在使用不透明 token (需要自省(introspection))时做出的权衡。
使用不透明标记:
权衡是您需要在每次请求时检查授权服务器以确保 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/
我是一名优秀的程序员,十分优秀!