This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects
Commit 716fc9a6 authored by Michael Breu's avatar Michael Breu
Browse files

Just prettier

parent 713224fa
2 merge requests!132Bringing July Release to production,!128Fixing #315 and #319
......@@ -12,7 +12,6 @@ import at.ac.uibk.gitsearch.security.oauth2.UserDetailsFetcher;
import at.ac.uibk.gitsearch.service.UserService;
import at.ac.uibk.gitsearch.service.dto.AdminUserDTO;
import at.ac.uibk.gitsearch.service.mapper.UserMapper;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URI;
......@@ -24,7 +23,6 @@ import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import javax.servlet.DispatcherType;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Value;
......@@ -109,7 +107,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
private final CorsFilter corsFilter;
private final SecurityProblemSupport problemSupport;
private final UserDetailsFetcher userDetailsFetcher;
public SecurityConfiguration(
TokenProvider tokenProvider,
CorsFilter corsFilter,
......@@ -240,55 +238,61 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
http.oauth2Login().tokenEndpoint().accessTokenResponseClient(accessTokenResponseClient());
// .apply(securityConfigurerAdapter())
// @formatter:on
}
/**
* this method postprocesses OAuth2LoginAuthenticationFilter and assigns an AuthenticationResultConverter.
* The AuthenticationResultConverter is needed to convey the original referer-URL from the original
* The AuthenticationResultConverter is needed to convey the original referer-URL from the original
*/
private final ObjectPostProcessor<OAuth2LoginAuthenticationFilter> authenticationFilterPostProcessor =
new ObjectPostProcessor<OAuth2LoginAuthenticationFilter>() {
@Override
public <O extends OAuth2LoginAuthenticationFilter> O postProcess(O object) {
if (object instanceof OAuth2LoginAuthenticationFilter) {
OAuth2LoginAuthenticationFilter oAuthLoginFilter = (OAuth2LoginAuthenticationFilter) object;
oAuthLoginFilter.setAuthenticationResultConverter((OAuth2LoginAuthenticationToken authenticationResult) -> {
OAuth2AuthenticationToken authToken = new GitSearchOAuth2AuthenticationToken(authenticationResult);
return authToken;
});
}
return object;
}};
Converter<org.springframework.security.oauth2.jwt.Jwt, AbstractAuthenticationToken> authenticationConverter() {
private final ObjectPostProcessor<OAuth2LoginAuthenticationFilter> authenticationFilterPostProcessor = new ObjectPostProcessor<OAuth2LoginAuthenticationFilter>() {
@Override
public <O extends OAuth2LoginAuthenticationFilter> O postProcess(O object) {
if (object instanceof OAuth2LoginAuthenticationFilter) {
OAuth2LoginAuthenticationFilter oAuthLoginFilter = (OAuth2LoginAuthenticationFilter) object;
oAuthLoginFilter.setAuthenticationResultConverter((OAuth2LoginAuthenticationToken authenticationResult) -> {
OAuth2AuthenticationToken authToken = new GitSearchOAuth2AuthenticationToken(authenticationResult);
return authToken;
});
}
return object;
}
};
Converter<org.springframework.security.oauth2.jwt.Jwt, AbstractAuthenticationToken> authenticationConverter() {
JwtAuthenticationConverter jwtAuthenticationConverter = new JwtAuthenticationConverter();
jwtAuthenticationConverter.setJwtGrantedAuthoritiesConverter(
new at.ac.uibk.gitsearch.security.oauth2.JwtGrantedAuthorityConverter()
);
return jwtAuthenticationConverter;
}
/**
* this is unfortunately an hard core access to the oauth2 Login Authentication Filter.
* This is required in order to set the Authentication Converter, which is not available via OAuth2LoginConfigurer.
* If you have a better idea, you are welcome.
*
*
* @param c the OAuth2LoginConfigurer
* @return the Filter (if accessible)
*/
private static final Optional<OAuth2LoginAuthenticationFilter> getOAuth2AuthenticationFilterFromConfig(OAuth2LoginConfigurer<HttpSecurity> c) {
try {
final Method getFilterMethod = AbstractAuthenticationFilterConfigurer.class.getDeclaredMethod("getAuthenticationFilter");
getFilterMethod.setAccessible(true);
return Optional.ofNullable((OAuth2LoginAuthenticationFilter) getFilterMethod.invoke(c));
} catch (NullPointerException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) {
logger.warn("Cannot get OAuth2LoginAuthenticationFilter :-(" , e);
return Optional.empty();
}
private static final Optional<OAuth2LoginAuthenticationFilter> getOAuth2AuthenticationFilterFromConfig(
OAuth2LoginConfigurer<HttpSecurity> c
) {
try {
final Method getFilterMethod = AbstractAuthenticationFilterConfigurer.class.getDeclaredMethod("getAuthenticationFilter");
getFilterMethod.setAccessible(true);
return Optional.ofNullable((OAuth2LoginAuthenticationFilter) getFilterMethod.invoke(c));
} catch (
NullPointerException
| IllegalAccessException
| IllegalArgumentException
| InvocationTargetException
| NoSuchMethodException
| SecurityException e
) {
logger.warn("Cannot get OAuth2LoginAuthenticationFilter :-(", e);
return Optional.empty();
}
}
private JWTConfigurer securityConfigurerAdapter() {
......@@ -317,7 +321,7 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
}
};
}
/**
* not used by OidcAuthorizationCodeAuthenticationProvider :-(
* @return
......
......@@ -5,22 +5,28 @@ import org.springframework.security.oauth2.client.authentication.OAuth2LoginAuth
public class GitSearchOAuth2AuthenticationToken extends OAuth2AuthenticationToken {
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
private String redirectURL;
public GitSearchOAuth2AuthenticationToken(OAuth2LoginAuthenticationToken authenticationResult) {
super(authenticationResult.getPrincipal(), authenticationResult.getAuthorities(),
authenticationResult.getClientRegistration().getRegistrationId());
redirectURL = authenticationResult.getAuthorizationExchange().getAuthorizationRequest().getAttribute(GitSearchOAuth2AuthorizationRequestRepository.REFERER_ATTRIBUTE);
if(redirectURL == null)
redirectURL = "/";
}
/**
* serialVersionUID
*/
private static final long serialVersionUID = 1L;
public String getRedirectURL() {
return redirectURL;
}
}
\ No newline at end of file
private String redirectURL;
public GitSearchOAuth2AuthenticationToken(OAuth2LoginAuthenticationToken authenticationResult) {
super(
authenticationResult.getPrincipal(),
authenticationResult.getAuthorities(),
authenticationResult.getClientRegistration().getRegistrationId()
);
redirectURL =
authenticationResult
.getAuthorizationExchange()
.getAuthorizationRequest()
.getAttribute(GitSearchOAuth2AuthorizationRequestRepository.REFERER_ATTRIBUTE);
if (redirectURL == null) redirectURL = "/";
}
public String getRedirectURL() {
return redirectURL;
}
}
......@@ -18,7 +18,7 @@ import org.springframework.util.Assert;
public class GitSearchOAuth2AuthorizationRequestRepository implements AuthorizationRequestRepository<OAuth2AuthorizationRequest> {
public static final String REFERER_ATTRIBUTE = "referer";
/**
/**
* TODO this should be persisted in the database!
*/
private final Map<String, OAuth2AuthorizationRequest> authorizationRequests = new ConcurrentHashMap<>();
......@@ -49,12 +49,13 @@ public class GitSearchOAuth2AuthorizationRequestRepository implements Authorizat
String state = authorizationRequest.getState();
Assert.hasText(state, "authorizationRequest.state cannot be empty");
String referer = request.getHeader(REFERER_ATTRIBUTE);
final Map<String, Object> requestAttributes = new HashMap<>(
authorizationRequest.getAttributes());
requestAttributes.put(REFERER_ATTRIBUTE, referer);
OAuth2AuthorizationRequest extendedAuthorizationRequest =
OAuth2AuthorizationRequest.from(authorizationRequest).attributes(requestAttributes).build();
// authorizationRequest.getAttributes().put("referer", referrer);
final Map<String, Object> requestAttributes = new HashMap<>(authorizationRequest.getAttributes());
requestAttributes.put(REFERER_ATTRIBUTE, referer);
OAuth2AuthorizationRequest extendedAuthorizationRequest = OAuth2AuthorizationRequest
.from(authorizationRequest)
.attributes(requestAttributes)
.build();
// authorizationRequest.getAttributes().put("referer", referrer);
// Map<String, OAuth2AuthorizationRequest> authorizationRequests = this.getAuthorizationRequests(request);
authorizationRequests.put(state, extendedAuthorizationRequest);
// request.getSession().setAttribute(this.sessionAttributeName, authorizationRequests);
......
......@@ -75,10 +75,10 @@ public class SavedRequestAwareAuthenticationSuccessHandlerWithJWTSupport extends
@Override
protected String determineTargetUrl(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
if (authentication instanceof GitSearchOAuth2AuthenticationToken) {
GitSearchOAuth2AuthenticationToken gitSearchToken = (GitSearchOAuth2AuthenticationToken) authentication;
return gitSearchToken.getRedirectURL();
}
if (authentication instanceof GitSearchOAuth2AuthenticationToken) {
GitSearchOAuth2AuthenticationToken gitSearchToken = (GitSearchOAuth2AuthenticationToken) authentication;
return gitSearchToken.getRedirectURL();
}
return super.determineTargetUrl(request, response, authentication);
}
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment