mramirezg 4 months ago
parent
commit
24782e5626
4 changed files with 31 additions and 9 deletions
  1. +19
    -7
      src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java
  2. +7
    -0
      src/main/java/mx/gob/jumapacelaya/api/SecurityService.java
  3. +4
    -1
      src/main/java/mx/gob/jumapacelaya/services/UserService.java
  4. +1
    -1
      src/main/java/mx/gob/jumapacelaya/views/login/LoginView.java

+ 19
- 7
src/main/java/mx/gob/jumapacelaya/api/SecurityConfig.java View File

@ -3,6 +3,8 @@ package mx.gob.jumapacelaya.api;
import com.vaadin.flow.spring.security.VaadinWebSecurity; import com.vaadin.flow.spring.security.VaadinWebSecurity;
import mx.gob.jumapacelaya.services.UserService; import mx.gob.jumapacelaya.services.UserService;
import mx.gob.jumapacelaya.views.login.LoginView; import mx.gob.jumapacelaya.views.login.LoginView;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
@ -11,6 +13,7 @@ import org.springframework.http.HttpMethod;
import org.springframework.ldap.core.support.LdapContextSource; import org.springframework.ldap.core.support.LdapContextSource;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider; import org.springframework.security.ldap.authentication.ad.ActiveDirectoryLdapAuthenticationProvider;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher; import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
@ -18,14 +21,21 @@ import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
@EnableWebSecurity @EnableWebSecurity
@Configuration @Configuration
public class SecurityConfig extends VaadinWebSecurity { public class SecurityConfig extends VaadinWebSecurity {
private static final Logger log = LoggerFactory.getLogger(SecurityConfig.class);
private UserService userService; private UserService userService;
public void setUserService(UserService userService) { public void setUserService(UserService userService) {
this.userService = userService; this.userService = userService;
} }
@Override
public void configure(WebSecurity web) throws Exception {
// Customize your WebSecurity configuration.
super.configure(web);
}
@Override @Override
protected void configure(HttpSecurity http) throws Exception { protected void configure(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(auth -> auth http.authorizeHttpRequests(auth -> auth
@ -39,14 +49,16 @@ public class SecurityConfig extends VaadinWebSecurity {
) )
.formLogin(formLogin -> formLogin .formLogin(formLogin -> formLogin
.loginPage("/login") .loginPage("/login")
.successHandler((request, response, authentication) -> {
String username = authentication.getName();
/*.successHandler((request, response, authentication) -> {
//String username = authentication.getName();
log.debug("Configure:loginSuccess: {}", authentication.getName());
if (userService.getAuthenticatedRedmineUser() == null) { if (userService.getAuthenticatedRedmineUser() == null) {
log.debug("Configure:getAuthenticatedRedmineUser Error: {}", authentication.getName());
response.sendRedirect("/login"); response.sendRedirect("/login");
} else {
response.sendRedirect("");
}
})
} //else {
//response.sendRedirect("");
//}
})*/
.failureUrl("/login?error=true") // Corrigiendo la URL de fallo .failureUrl("/login?error=true") // Corrigiendo la URL de fallo
); );
super.configure(http); super.configure(http);


+ 7
- 0
src/main/java/mx/gob/jumapacelaya/api/SecurityService.java View File

@ -1,12 +1,16 @@
package mx.gob.jumapacelaya.api; package mx.gob.jumapacelaya.api;
import com.vaadin.flow.spring.security.AuthenticationContext; import com.vaadin.flow.spring.security.AuthenticationContext;
import mx.gob.jumapacelaya.views.login.LoginView;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@Component @Component
public class SecurityService { public class SecurityService {
private static final Logger log = LoggerFactory.getLogger(SecurityService.class);
private final AuthenticationContext authenticationContext; private final AuthenticationContext authenticationContext;
@ -16,6 +20,9 @@ public class SecurityService {
public String getAuthenticatedUser() { public String getAuthenticatedUser() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
log.debug("Authentication: {}", authentication.getName());
if (authentication != null) { if (authentication != null) {
return authentication.getName(); return authentication.getName();
} }


+ 4
- 1
src/main/java/mx/gob/jumapacelaya/services/UserService.java View File

@ -32,7 +32,7 @@ public class UserService {
public RedmineUser getAuthenticatedRedmineUser() { public RedmineUser getAuthenticatedRedmineUser() {
try { try {
String username = securityService.getAuthenticatedUser(); String username = securityService.getAuthenticatedUser();
logger.info("Usuario autenticado: " + username);
logger.debug("Usuario autenticado: {}", username);
if (username != null) { if (username != null) {
RedmineUser user = redmineClient.getUserByUsername(username); RedmineUser user = redmineClient.getUserByUsername(username);
if (user == null) { if (user == null) {
@ -88,6 +88,9 @@ public class UserService {
VaadinService.getCurrentRequest().getWrappedSession().setAttribute("myaccount", myAccount); VaadinService.getCurrentRequest().getWrappedSession().setAttribute("myaccount", myAccount);
} }
} }
}else{
logger.error("No se pudo obtener al usuario autenticado en Redmine");
securityService.logout();
} }
} }
return userclient; return userclient;


+ 1
- 1
src/main/java/mx/gob/jumapacelaya/views/login/LoginView.java View File

@ -25,7 +25,7 @@ public class LoginView extends VerticalLayout implements BeforeEnterObserver {
private static final Logger log = LoggerFactory.getLogger(LoginView.class); private static final Logger log = LoggerFactory.getLogger(LoginView.class);
private final LoginForm login = new LoginForm(); private final LoginForm login = new LoginForm();
public LoginView(UserService userService, RedmineClient redmineClient) {
public LoginView() {
login.addClassName("special"); login.addClassName("special");
// Configuración de la vista // Configuración de la vista


Loading…
Cancel
Save