Skip to content

Commit

Permalink
IM-457 Fix error and clean code
Browse files Browse the repository at this point in the history
fix: Delete static methos from WebSecurity
  • Loading branch information
kristinaBc3 committed Nov 26, 2024
1 parent 5e502e7 commit 2f77434
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 49 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.integratedmodelling.klab.api.auth.KlabHttpHeaders;
import org.integratedmodelling.klab.api.auth.Roles;
import org.integratedmodelling.klab.api.runtime.ISession;
import org.integratedmodelling.klab.engine.rest.utils.EngineHttpUtils;
import org.integratedmodelling.klab.engine.runtime.Session;
import org.integratedmodelling.klab.exceptions.KlabInternalErrorException;
import org.integratedmodelling.klab.rest.SessionReference;
Expand Down Expand Up @@ -47,9 +48,7 @@ public class EngineSessionController {
@RequestMapping(value = API.ENGINE.SESSION.INFO, method = RequestMethod.GET, produces = "application/json")
@ResponseBody
public SessionReference describeObservation(Principal principal, HttpServletRequest httpRequest) {

Map<String, String> headers = Collections.list(httpRequest.getHeaderNames()).stream()
.collect(Collectors.toMap(h -> h, httpRequest::getHeader));
;
ISession session = getSession(principal);
return ((Session) session).getSessionReference();
}
Expand All @@ -60,8 +59,8 @@ public static ISession getSession(Principal principal) {
return (ISession) ((PreAuthenticatedAuthenticationToken) principal).getPrincipal();
}

if (getCurrentHttpRequest() != null) {
String klabAuth = getCurrentHttpRequest().getHeader(KlabHttpHeaders.KLAB_AUTHORIZATION);
if (EngineHttpUtils.getCurrentHttpRequest() != null) {
String klabAuth = EngineHttpUtils.getCurrentHttpRequest().getHeader(KlabHttpHeaders.KLAB_AUTHORIZATION);

if (klabAuth != null) {
// send anything already known downstream
Expand All @@ -85,14 +84,6 @@ public static ISession getSession(Principal principal) {

}

private static HttpServletRequest getCurrentHttpRequest() {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes instanceof ServletRequestAttributes) {
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
return request;
}
logger.debug("Not called in the context of an HTTP request");
return null;
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,6 @@ public class PreauthenticationFilter extends AbstractPreAuthenticatedProcessingF
@Override
protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {

HttpServletRequest httpRequest = (HttpServletRequest) request;

Map<String, String> headers = Collections.list(httpRequest.getHeaderNames())
.stream()
.collect(Collectors.toMap(h -> h, httpRequest::getHeader));
String auth = request.getHeader(HttpHeaders.AUTHORIZATION);
String klabAuth = request.getHeader(KlabHttpHeaders.KLAB_AUTHORIZATION);

Expand All @@ -31,7 +26,6 @@ protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) {
if (Authentication.INSTANCE.getIdentity(auth, IIdentity.class) != null) {
return auth;
}

}

if (klabAuth != null ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import javax.servlet.ServletException;
Expand All @@ -18,7 +16,7 @@
import org.integratedmodelling.klab.api.auth.IIdentity;
import org.integratedmodelling.klab.api.auth.KlabHttpHeaders;
import org.integratedmodelling.klab.api.auth.Roles;
import org.integratedmodelling.klab.engine.runtime.Session;
import org.integratedmodelling.klab.engine.rest.utils.EngineHttpUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down Expand Up @@ -68,7 +66,7 @@ AuthoritiesConverter realmRolesAuthoritiesConverter() {

roles.ifPresent(role -> role.add(Roles.PUBLIC));

HttpServletRequest request = getCurrentHttpRequest();
HttpServletRequest request = EngineHttpUtils.getCurrentHttpRequest();

String klabAuth = request.getHeader(KlabHttpHeaders.KLAB_AUTHORIZATION);

Expand Down Expand Up @@ -102,7 +100,6 @@ protected void configure(HttpSecurity http) throws Exception {
.authorizeHttpRequests(authorize -> authorize.mvcMatchers("/api/**").authenticated()
.mvcMatchers("/**").permitAll())
.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt);

}

@Bean
Expand Down Expand Up @@ -134,16 +131,6 @@ UserDetailsByNameServiceWrapper<PreAuthenticatedAuthenticationToken> userDetails
return wrapper;
}

public static HttpServletRequest getCurrentHttpRequest() {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes instanceof ServletRequestAttributes) {
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
return request;
}
// logger.debug("Not called in the context of an HTTP request");
return null;
}

}

@Profile("engine.local")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.integratedmodelling.klab.engine.rest.utils;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

public class EngineHttpUtils {

private static final Logger logger = LoggerFactory.getLogger(EngineHttpUtils.class);

public static HttpServletRequest getCurrentHttpRequest() {
RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
if (requestAttributes instanceof ServletRequestAttributes) {
HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest();
return request;
}
logger.debug("Not called in the context of an HTTP request");
return null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -90,21 +90,8 @@ public class HubUserService implements RemoteUserService {
profile.setAuthToken(authToken);

RemoteUserLoginResponse response = getLoginResponse(profile, null);

// Add ROLE_SESSION to OAuth2 securityContext
response.setAuthorization(authToken);
Collection<SimpleGrantedAuthority> oldAuthorities = (Collection<SimpleGrantedAuthority>)SecurityContextHolder.getContext().getAuthentication().getAuthorities();
SimpleGrantedAuthority authority = new SimpleGrantedAuthority(Roles.SESSION);
List<SimpleGrantedAuthority> updatedAuthorities = new ArrayList<SimpleGrantedAuthority>();
updatedAuthorities.add(authority);
updatedAuthorities.addAll(oldAuthorities);

SecurityContextHolder.getContext().setAuthentication(
new UsernamePasswordAuthenticationToken(
SecurityContextHolder.getContext().getAuthentication().getPrincipal(),
SecurityContextHolder.getContext().getAuthentication().getCredentials(),
updatedAuthorities)
);

return ResponseEntity.status(HttpStatus.ACCEPTED).body(response);
} else {
throw new KlabAuthorizationException("Failed to login user: " + login.getUsername());
Expand Down

0 comments on commit 2f77434

Please sign in to comment.