spring-security - Spring Authorization Server 和 Spring Resource Server 合二为一
问题描述
有没有人尝试在 1 个项目和 1 个服务器中同时使用新发布的 Spring Authorization Server 0.1.0 和常规 Spring Resource Server,例如:
资源服务器在http://localhost:8080,授权服务器也在http://localhost:8080?关于如何做的任何想法?
问题是在启动时,资源服务器会检查授权服务器/.well-known/openid-configuration
,这显然是不可用的。
解决方案
代替issuer-uri
,您可以指定jwk-set-uri
,它在启动时不被 ping 。
或者,由于授权服务器和资源服务器将使用内存空间来存储密钥,因此您可以构建自己的 Nimbus JWTProcessor
,以便跳过内部 HTTP 请求:
@Bean
JwtDecoder jwtDecoder() {
JWKSource<SecurityContext> source = // ... some internal store for the public keys, e.g. not RemoteJWKSet
ConfigurableJWTProcessor<SecurityContext> processor = new DefaultJWTProcessor<>();
JWSKeySelector<SecurityContext> selector = new JWSVerificationKeySelector(
JWSAlgorithm.RS256, source);
processor.setJWSKeySelector(selector);
NimbusJwtDecoder decoder = new NimbusJwtDecoder(processor);
decoder.setJwtValidator(... add any validation rules ...);
return decoder;
}
推荐阅读
- javascript - 如何自动关闭自定义的 vue toast 组件
- xamarin.forms - 如何在 Xamarin.Forms 中使用 PKPaymentButton
- c# - AdaptiveSubmitAction 不适用于移动应用
- python - 为什么我的 API 注释会返回模型中的所有项目?
- python-3.x - 预测(棋子分类)
- vue.js - Vuex registerModule 方法注册一个空模块
- python - 我无法打开 snowsql,因为它收到 ModuleNotFoundError 之类的错误
- python - 无法正确读取 json 文件
- javascript - querySelectorAll 和具有相同类的多个元素
- c# - 如何从 TabControl 获取所选 TabItem 的文本块名称