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

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

First working version

parent 4eb0a1e1
2 merge requests!132Bringing July Release to production,!128Fixing #315 and #319
...@@ -15,6 +15,7 @@ import at.ac.uibk.gitsearch.service.mapper.UserMapper; ...@@ -15,6 +15,7 @@ import at.ac.uibk.gitsearch.service.mapper.UserMapper;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.net.URI; import java.net.URI;
import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
...@@ -72,6 +73,7 @@ import org.springframework.security.oauth2.core.endpoint.PkceParameterNames; ...@@ -72,6 +73,7 @@ import org.springframework.security.oauth2.core.endpoint.PkceParameterNames;
import org.springframework.security.oauth2.core.oidc.OidcUserInfo; import org.springframework.security.oauth2.core.oidc.OidcUserInfo;
import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser; import org.springframework.security.oauth2.core.oidc.user.DefaultOidcUser;
import org.springframework.security.oauth2.core.oidc.user.OidcUser; import org.springframework.security.oauth2.core.oidc.user.OidcUser;
import org.springframework.security.oauth2.core.user.OAuth2User;
import org.springframework.security.oauth2.jwt.JwtDecoder; import org.springframework.security.oauth2.jwt.JwtDecoder;
import org.springframework.security.oauth2.jwt.JwtDecoders; import org.springframework.security.oauth2.jwt.JwtDecoders;
import org.springframework.security.oauth2.jwt.JwtValidators; import org.springframework.security.oauth2.jwt.JwtValidators;
...@@ -303,11 +305,37 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter { ...@@ -303,11 +305,37 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
return null; return null;
} }
}; };
}
public static 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 = "/";
}
public String getRedirectURL() {
return redirectURL;
}
} }
private Converter<OAuth2LoginAuthenticationToken, OAuth2AuthenticationToken> oauth2Tokenconverter = (OAuth2LoginAuthenticationToken authenticationResult) -> { private Converter<OAuth2LoginAuthenticationToken, OAuth2AuthenticationToken> oauth2Tokenconverter = (OAuth2LoginAuthenticationToken authenticationResult) -> {
return new OAuth2AuthenticationToken(authenticationResult.getPrincipal(), authenticationResult.getAuthorities(), OAuth2AuthenticationToken authToken = new GitSearchOAuth2AuthenticationToken(authenticationResult);
authenticationResult.getClientRegistration().getRegistrationId()); return authToken;
}; };
/** /**
......
...@@ -17,7 +17,8 @@ import org.springframework.util.Assert; ...@@ -17,7 +17,8 @@ import org.springframework.util.Assert;
*/ */
public class GitSearchOAuth2AuthorizationRequestRepository implements AuthorizationRequestRepository<OAuth2AuthorizationRequest> { public class GitSearchOAuth2AuthorizationRequestRepository implements AuthorizationRequestRepository<OAuth2AuthorizationRequest> {
/** public static final String REFERER_ATTRIBUTE = "referer";
/**
* TODO this should be persisted in the database! * TODO this should be persisted in the database!
*/ */
private final Map<String, OAuth2AuthorizationRequest> authorizationRequests = new ConcurrentHashMap<>(); private final Map<String, OAuth2AuthorizationRequest> authorizationRequests = new ConcurrentHashMap<>();
...@@ -47,10 +48,10 @@ public class GitSearchOAuth2AuthorizationRequestRepository implements Authorizat ...@@ -47,10 +48,10 @@ public class GitSearchOAuth2AuthorizationRequestRepository implements Authorizat
} }
String state = authorizationRequest.getState(); String state = authorizationRequest.getState();
Assert.hasText(state, "authorizationRequest.state cannot be empty"); Assert.hasText(state, "authorizationRequest.state cannot be empty");
String referrer = request.getHeader("referer"); String referer = request.getHeader(REFERER_ATTRIBUTE);
final Map<String, Object> requestAttributes = new HashMap<>( final Map<String, Object> requestAttributes = new HashMap<>(
authorizationRequest.getAttributes()); authorizationRequest.getAttributes());
requestAttributes.put("referer", referrer); requestAttributes.put(REFERER_ATTRIBUTE, referer);
OAuth2AuthorizationRequest extendedAuthorizationRequest = OAuth2AuthorizationRequest extendedAuthorizationRequest =
OAuth2AuthorizationRequest.from(authorizationRequest).attributes(requestAttributes).build(); OAuth2AuthorizationRequest.from(authorizationRequest).attributes(requestAttributes).build();
// authorizationRequest.getAttributes().put("referer", referrer); // authorizationRequest.getAttributes().put("referer", referrer);
......
package at.ac.uibk.gitsearch.security.oauth2; package at.ac.uibk.gitsearch.security.oauth2;
import at.ac.uibk.gitsearch.config.SecurityConfiguration.GitSearchOAuth2AuthenticationToken;
import at.ac.uibk.gitsearch.security.jwt.TokenProvider; import at.ac.uibk.gitsearch.security.jwt.TokenProvider;
import java.io.IOException; import java.io.IOException;
import java.security.Principal; import java.security.Principal;
...@@ -75,6 +76,10 @@ public class SavedRequestAwareAuthenticationSuccessHandlerWithJWTSupport extends ...@@ -75,6 +76,10 @@ public class SavedRequestAwareAuthenticationSuccessHandlerWithJWTSupport extends
@Override @Override
protected String determineTargetUrl(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { protected String determineTargetUrl(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
if (authentication instanceof GitSearchOAuth2AuthenticationToken) {
GitSearchOAuth2AuthenticationToken gitSearchToken = (GitSearchOAuth2AuthenticationToken) authentication;
return gitSearchToken.getRedirectURL();
}
return super.determineTargetUrl(request, response, authentication); 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