5353import org .springframework .security .oauth2 .client .registration .ClientRegistration ;
5454import org .springframework .security .oauth2 .client .registration .ClientRegistrationRepository ;
5555import org .springframework .security .oauth2 .client .registration .InMemoryClientRegistrationRepository ;
56+ import org .springframework .security .oauth2 .client .web .HttpSessionOAuth2AuthorizedClientRepository ;
5657import org .springframework .security .oauth2 .client .web .OAuth2AuthorizationRequestRedirectFilter ;
58+ import org .springframework .security .oauth2 .client .web .OAuth2AuthorizedClientRepository ;
5759import org .springframework .security .oauth2 .core .AuthorizationGrantType ;
5860import org .springframework .security .oauth2 .core .OAuth2AuthenticationException ;
5961import org .springframework .security .oauth2 .core .OAuth2Error ;
7173import net .minidev .json .JSONArray ;
7274import net .minidev .json .parser .JSONParser ;
7375import net .minidev .json .parser .ParseException ;
76+ import org .springframework .web .context .request .RequestContextHolder ;
77+ import org .springframework .web .context .request .ServletRequestAttributes ;
7478import org .springframework .web .servlet .support .ServletUriComponentsBuilder ;
7579
7680public 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