在IntelliJ中调试注册关闭挂钩的应用程序时,如果单击绿色的"重新启动"圆形箭头按钮,则不会调用关闭挂钩,也不会单击红色方块"停止"按钮.在这两种情况下,看起来app-under-debug都会被立即强行终止.
(注意这不是重复的如何停止在intelliJ中运行的处理,以便它调用关闭钩子?)
当我"手动"向调试器进程发送来自Mac终端的INT信号时,我的关机挂钩当然会按预期运行.但我无法在IDE中发现任何引发所需行为的配置设置或控件.
我有一个配置了@EnableOAuth2Sso和的客户端应用程序@EnableZuulProxy,以及配置的资源服务器(单独的应用程序)@EnableOAuth2Resource.我可以看到客户端正确地向资源服务器验证Authorization: Bearer {access_token here},但是一旦访问令牌到期,代理资源服务器请求将永久失败.
将帖子
我通过提供一个自定义RemoteTokenServices bean来修改我的资源服务器,该bean使用OpenAM的/ tokeninfo端点来决定access_token是否仍然有效.(Spring提供的RemoteTokenServices bean尝试POST,从OpenAM获得405).当我检测到access_token无效时,我从中抛出InvalidTokenException my.spring.oauth2.OpenAMRemoteTokenServices#loadAuthentication.现在,我的资源服务器(我认为正确)在客户端响应时发送HTTP 401,在access_token已过期的情况下.
但是,客户端并未尝试刷新令牌.
也许我的心理模型是错的.我希望客户端在过期的access_token的情况下自动使用refresh_token来获取新的.我不知道我是否认为它应该主动刷新access_token(在到期时间之前的某个epsilon内),或者等待下游请求失败并尝试刷新.但是我的客户似乎都没做,我不知道为什么不这样做.