spring-boot-admin - 我想更改 Spring Boot Admin 中默认按钮的注销 URL,仅此而已
问题描述
更改 Spring Boot Admin 的默认注销行为的最佳方法是什么?目前,其他一切都运行良好。我正在使用 OAuth2 安全提供程序,并且登录工作正常。目前我对所有东西都使用标准的 Spring Boot Admin 默认值,除了我的 application.properties 看起来像这样:
spring.cloud.kubernetes.discovery.all-namespaces=false
spring.security.oauth2.client.provider.---.jwk-set-uri=https://...
spring.security.oauth2.client.provider.---.issuer-uri=https://...
spring.security.oauth2.client.registration.---.client-id=client-id
spring.security.oauth2.client.registration.---.client-secret=secrect
spring.security.oauth2.client.registration.---.client-name=client-name
spring.security.oauth2.client.registration.---.scope=openid,client-name
注销按钮当前执行对 base_path/logout 的 POST 请求,该请求以 403 失败。(Sidetrack:如果它是 GET,它将成功注销 Spring Boot Admin,但这并不是我想要的,因为它不会注销安全提供者。)我想要的是它引导我到我的 OAuth2 安全提供者的注销 url。
除了注销按钮将我引导到的 url 之外,最好的方法是什么?
我已经尝试了一些东西,(尽管我认为大多数东西都不起作用,因为它们不起作用),包括
@Configuration
public class SBAdminSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.logout(logout -> logout.logoutUrl(
"{oauth2 logout URL placeholder}?post_logout_redirect_uri={sba base url placeholder}%2Flogout"));
}
}
这不起作用,因为它删除了所有其他安全配置,包括已经在幕后配置的任何默认 WebSecurityConfigurerAdapter。有了这个,当我尝试去我的 Spring Boot Admin 应用程序时,根本没有安全性。
我怀疑解决此问题的一种方法是将导入的库正在执行的任何现有配置复制到我自己的 WebSecurityConfigurerAdapter 中并稍微编辑它以更改注销 URL。但是,我无法找到任何东西来告诉我这个现有配置在哪里或它可能是什么。
解决方案
一种方法是先从 Spring Boot 应用程序注销,然后将注销成功 url 重定向到 OAuth2 安全提供程序注销 url。
示例配置
@Configuration
public class ProjectConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.logout()
.logoutSuccessUrl("/oauth2/logouturl/here");
}
}
推荐阅读
- amazon-web-services - 拒绝除一个角色之外的所有角色的 AWS Secrets Manager 资源策略
- r - 替换包含转义字符的文件头
- c - 在 C 中的编译指示宏中插入双引号
- angular - 仅在可观察发射期间使用 NgIf 有条件地显示元素
- java - 在android studio中将文件下载代码添加到webview应用程序时无法解决错误
- pandas - 熊猫 groupby()、transform() 和 ffill()
- xamarin.forms - 如何为非商店 UWP 应用程序获取受信任的代码签名证书 (.pfx)?
- excel - 如何分配公式中的单元格?
- javascript - MongoDB在第一次尝试时没有获得价值
- linux - 二进制可执行文件的读取权限的含义?