![](/img/trans.png)
[英]Spring-Security OAuth2 StackOverflowError using Java config
[英]oauth2 spring-security success and failure handler
我正在使用帶有 OAuth2 的 Spring Security。 除了登錄成功和失敗處理程序外,它工作正常。
就像 spring 網絡安全 OAuth2 沒有明確定義的成功和失敗處理程序掛鈎來更新數據庫並相應地設置響應。
我需要擴展什么過濾器,它在 Spring Security 過濾器鏈中的位置應該是什么?
為oauth2login
方法指定successHandler
和failureHandler
:
@Configuration
@EnableWebSecurity
class SecurityConfig extends WebSecurityConfigurerAdapter {
@Value("${successUrl}")
private String successUrl;
@Value("${failureUrl}")
private String failureUrl;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.oauth2Login()
.successHandler(successHandler())
.failureHandler(failureHandler());
}
@Bean
SimpleUrlAuthenticationSuccessHandler successHandler() {
return new SimpleUrlAuthenticationSuccessHandler(successUrl);
}
@Bean
SimpleUrlAuthenticationFailureHandler failureHandler() {
return new SimpleUrlAuthenticationFailureHandler(failureUrl);
}
}
已針對 Spring Security 5.0.6 進行測試
我個人使用
@Component
public class MyAuthenticationSuccessListener implements ApplicationListener<AuthenticationSuccessEvent> {
@Override
public void onApplicationEvent(AuthenticationSuccessEvent event) {
System.out.println("Authenticated");
}
}
響應中的附加信息可以由CustomTokenEnhancer設置
這是一個關於如何在 oauth2 中使用 spring boot 的很好的教程。 他們展示了如何手動配置 sso 過濾器:
private Filter ssoFilter(OAuth2Configuration client, String path) {
OAuth2ClientAuthenticationProcessingFilter filter = new OAuth2ClientAuthenticationProcessingFilter(path);
OAuth2RestTemplate template = new OAuth2RestTemplate(client.getClient(), oauth2ClientContext);
filter.setRestTemplate(template);
filter.setTokenServices(new UserInfoTokenServices(
client.getResource().getUserInfoUri(), client.getClient().getClientId()));
//THIS IS THE PLACE YOU CAN SET THE HANDLER
filter.setAuthenticationSuccessHandler(savedRequestAwareAuthenticationSuccessHandler());
return filter;
}
他們沒有提供您需要的線路,在這里。
成功處理程序和失敗處理程序在表單登錄中定義(如果您使用 Spring 的 XML)。 它與任何其他 spring-security 定義沒有什么不同:
<security:form-login
login-page="/login/login.htm"
authentication-success-handler-ref="authenticationSuccessHandler"
authentication-failure-url="/login/login.htm?login_error=1" />
你可以在這里找到處理程序。
“故障處理程序”非常相似。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.