Skip to content

Commit 00e1c8e

Browse files
author
Rujun Chen
authored
Fix bug: OAuth2AuthorizedClient not saved for ClientNeedConsentWhenLogin (Azure#18715)
1 parent 980e148 commit 00e1c8e

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

sdk/spring/azure-spring-boot/src/main/java/com/azure/spring/aad/webapp/AADOAuth2AuthorizedClientRepository.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,17 @@
44
package com.azure.spring.aad.webapp;
55

66
import com.azure.spring.aad.AADClientRegistrationRepository;
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
79
import org.springframework.security.core.Authentication;
810
import org.springframework.security.oauth2.client.OAuth2AuthorizationContext;
911
import org.springframework.security.oauth2.client.OAuth2AuthorizedClient;
1012
import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProvider;
1113
import org.springframework.security.oauth2.client.RefreshTokenOAuth2AuthorizedClientProvider;
1214
import org.springframework.security.oauth2.client.web.OAuth2AuthorizedClientRepository;
1315
import org.springframework.security.oauth2.core.OAuth2AccessToken;
16+
import org.springframework.web.context.request.RequestContextHolder;
17+
import org.springframework.web.context.request.ServletRequestAttributes;
1418

1519
import javax.servlet.http.HttpServletRequest;
1620
import javax.servlet.http.HttpServletResponse;
@@ -24,6 +28,8 @@
2428
*/
2529
public class AADOAuth2AuthorizedClientRepository implements OAuth2AuthorizedClientRepository {
2630

31+
private static final Logger LOGGER = LoggerFactory.getLogger(AADOAuth2AuthorizedClientRepository.class);
32+
2733
private final AADWebAppClientRegistrationRepository repo;
2834
private final OAuth2AuthorizedClientRepository delegate;
2935
private final OAuth2AuthorizedClientProvider provider;
@@ -73,7 +79,15 @@ public <T extends OAuth2AuthorizedClient> T loadAuthorizedClient(String id,
7379
.principal(principal)
7480
.attributes(getAttributesConsumer(scopes))
7581
.build();
76-
return (T) provider.authorize(context);
82+
OAuth2AuthorizedClient clientGotByRefreshToken = provider.authorize(context);
83+
try {
84+
ServletRequestAttributes attributes =
85+
(ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
86+
delegate.saveAuthorizedClient(clientGotByRefreshToken, principal, request, attributes.getResponse());
87+
} catch (IllegalStateException exception) {
88+
LOGGER.warn("Can not save OAuth2AuthorizedClient.", exception);
89+
}
90+
return (T) clientGotByRefreshToken;
7791
}
7892
return null;
7993
}

0 commit comments

Comments
 (0)