更改的默认注销行为的最佳方法是什么?目前,其他一切都很完美。我使用的是OAuth2安全提供程序,登录很好。目前,我使用的是标准的Spring默认值,除了我的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失败。(侧道:如果是GET,它将成功地注销Spring,但这不是我想要的,因为它没有退出安全提供程序。)我想要的是它为我的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。这样,当我尝试使用我的应用程序时,根本就没有安全可言。
我怀疑解决这一问题的一种方法是将导入库所做的任何现有配置复制到我自己的WebSecurityConfigurerAdapter中,并稍微编辑它以更改注销URL。然而,我没有找到任何东西来告诉我这个现有的配置在哪里,或者它可能是什么。
发布于 2021-11-05 07:32:24
一种方法是先从Spring应用程序中注销,然后将注销成功url重定向到OAuth2安全提供者注销url。
样本配置
@Configuration
public class ProjectConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.logout()
.logoutSuccessUrl("/oauth2/logouturl/here");
}
}https://stackoverflow.com/questions/69790526
复制相似问题