I’m new to Vaadin and using version 24.8.3 mit Spring Boot 3.5.3. When I try to access “https://localhost:8443,” Vaadin takes forever to load (the progress bar at the top of the browser window keeps restarting).
I appreciate any help. I just can’t get any further.
Here now my code:
Vaadin MainView
import com.vaadin.flow.component.button.Button;
import com.vaadin.flow.component.notification.Notification;
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.server.auth.AnonymousAllowed;
import com.vaadin.flow.router.Route;
import jakarta.annotation.security.PermitAll;
@Route("")
@PermitAll
@AnonymousAllowed
public class MainView extends VerticalLayout {
public MainView() {
Button button = new Button("Click me", event ->
Notification.show("Hello, World!")
);
add(button);
}
}
My SecurityConfig
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper;
import org.springframework.security.oauth2.client.oidc.web.logout.OidcClientInitiatedLogoutSuccessHandler;
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import com.github.sm_a.bewmgm_server_spring.spring_sec.zitadel.ZitadelGrantedAuthoritiesMapper;
import com.vaadin.flow.spring.security.VaadinWebSecurity;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends VaadinWebSecurity {
@Autowired
private ClientRegistrationRepository clientRegistrationRepository;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(authorize -> authorize
.requestMatchers("/stripe_static/**",
"/stripepay/**",
"/").permitAll()
.requestMatchers("/api/**", "/graphql").authenticated()
)
.oauth2Login(oauth2Login -> oauth2Login
.userInfoEndpoint(userInfo -> userInfo.userAuthoritiesMapper(this.userAuthoritiesMapper())))
.logout(logout -> logout.logoutSuccessHandler(this.oidcLogoutSuccessHandler()));
// Call Vaadin's configuration last
super. Configure(http);
// Optional: set a custom login view for Vaadin
//setLoginView(http, "/login");
}
private GrantedAuthoritiesMapper userAuthoritiesMapper() {
return new ZitadelGrantedAuthoritiesMapper();
}
private LogoutSuccessHandler oidcLogoutSuccessHandler() {
OidcClientInitiatedLogoutSuccessHandler oidcLogoutSuccessHandler =
new OidcClientInitiatedLogoutSuccessHandler(this.clientRegistrationRepository);
oidcLogoutSuccessHandler.setPostLogoutRedirectUri("{baseUrl}");
return oidcLogoutSuccessHandler;
}
}
