Skip to content

Commit 6465558

Browse files
committed
Merge pull request 'Fix #24275: use HTTP session for storing OIDC Authorized clients' (#30) from bugfix/24275 into develop
2 parents 527fb66 + 4b20ee3 commit 6465558

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/main/java/eu/openanalytics/containerproxy/auth/impl/OpenIDAuthenticationBackend.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@
5353
import org.springframework.security.oauth2.client.registration.ClientRegistration;
5454
import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository;
5555
import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository;
56+
import org.springframework.security.oauth2.client.web.HttpSessionOAuth2AuthorizedClientRepository;
5657
import org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestRedirectFilter;
58+
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
5759
import org.springframework.security.oauth2.core.AuthorizationGrantType;
5860
import org.springframework.security.oauth2.core.OAuth2AuthenticationException;
5961
import org.springframework.security.oauth2.core.OAuth2Error;
@@ -71,6 +73,8 @@
7173
import net.minidev.json.JSONArray;
7274
import net.minidev.json.parser.JSONParser;
7375
import net.minidev.json.parser.ParseException;
76+
import org.springframework.web.context.request.RequestContextHolder;
77+
import org.springframework.web.context.request.ServletRequestAttributes;
7478
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
7579

7680
public class OpenIDAuthenticationBackend implements IAuthenticationBackend {
@@ -82,7 +86,7 @@ public class OpenIDAuthenticationBackend implements IAuthenticationBackend {
8286

8387
private Logger log = LogManager.getLogger(OpenIDAuthenticationBackend.class);
8488

85-
private OAuth2AuthorizedClientService authorizedClientService;
89+
private OAuth2AuthorizedClientRepository oAuth2AuthorizedClientRepository;
8690

8791
@Inject
8892
private Environment environment;
@@ -100,15 +104,15 @@ public boolean hasAuthorization() {
100104
@Override
101105
public void configureHttpSecurity(HttpSecurity http, AuthorizedUrl anyRequestConfigurer) throws Exception {
102106
ClientRegistrationRepository clientRegistrationRepo = createClientRepo();
103-
authorizedClientService = new InMemoryOAuth2AuthorizedClientService(clientRegistrationRepo);
104-
107+
oAuth2AuthorizedClientRepository = new HttpSessionOAuth2AuthorizedClientRepository();
108+
105109
anyRequestConfigurer.authenticated();
106110

107111
http
108112
.oauth2Login()
109113
.loginPage("/login")
110114
.clientRegistrationRepository(clientRegistrationRepo)
111-
.authorizedClientService(authorizedClientService)
115+
.authorizedClientRepository(oAuth2AuthorizedClientRepository)
112116
.authorizationEndpoint()
113117
.authorizationRequestResolver(new FixedDefaultOAuth2AuthorizationRequestResolver(clientRegistrationRepo, OAuth2AuthorizationRequestRedirectFilter.DEFAULT_AUTHORIZATION_REQUEST_BASE_URI))
114118
.and()
@@ -151,7 +155,8 @@ public void customizeContainerEnv(List<String> env) {
151155
if (auth == null) return;
152156

153157
OidcUser user = (OidcUser) auth.getPrincipal();
154-
OAuth2AuthorizedClient client = authorizedClientService.loadAuthorizedClient(REG_ID, user.getName());
158+
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
159+
OAuth2AuthorizedClient client = oAuth2AuthorizedClientRepository.loadAuthorizedClient(REG_ID, auth, request);
155160
if (client == null || client.getAccessToken() == null) return;
156161

157162
env.add(ENV_TOKEN_NAME + "=" + client.getAccessToken().getTokenValue());

0 commit comments

Comments
 (0)