Skip to content

Commit 84125e0

Browse files
authored
Update Embedded Widget Sample for Springboot 3.x and thymeleaf-extras-springsecurity6 (#520)
1 parent 4c6e8c0 commit 84125e0

File tree

5 files changed

+39
-9
lines changed

5 files changed

+39
-9
lines changed

pom.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@
176176
<groupId>org.apache.tomcat.embed</groupId>
177177
<artifactId>tomcat-embed-core</artifactId>
178178
<version>11.0.9</version>
179+
<!-- use 10.1.34 if running the embedded Widget sample -->
180+
<!--version>10.1.34</version-->
179181
</dependency>
180182
</dependencies>
181183
</dependencyManagement>

samples/embedded-sign-in-widget/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,12 @@
8585
<dependency>
8686
<groupId>org.thymeleaf</groupId>
8787
<artifactId>thymeleaf</artifactId>
88-
<version>3.1.2.RELEASE</version>
88+
<version>3.1.3.RELEASE</version>
8989
</dependency>
9090
<dependency>
9191
<groupId>org.thymeleaf.extras</groupId>
92-
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
93-
<version>3.1.2.RELEASE</version>
92+
<artifactId>thymeleaf-extras-springsecurity6</artifactId>
93+
<version>3.1.3.RELEASE</version>
9494
</dependency>
9595
<dependency>
9696
<groupId>org.springframework.boot</groupId>

samples/embedded-sign-in-widget/src/main/java/com/okta/spring/example/CustomAuthenticationProcessingFilter.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,11 @@
3939
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
4040
import org.springframework.security.oauth2.core.user.DefaultOAuth2User;
4141
import org.springframework.security.oauth2.core.user.OAuth2User;
42+
import org.springframework.security.core.context.SecurityContextHolder;
43+
import org.springframework.security.core.context.SecurityContext;
4244
import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;
4345
import org.springframework.security.web.util.UrlUtils;
46+
import org.springframework.security.web.context.HttpSessionSecurityContextRepository;
4447
import org.springframework.util.MultiValueMap;
4548
import org.springframework.web.context.request.RequestContextHolder;
4649
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -53,11 +56,12 @@
5356
import java.util.Collection;
5457
import java.util.Map;
5558

59+
60+
5661
@SuppressWarnings("PMD")
5762
public class CustomAuthenticationProcessingFilter extends AbstractAuthenticationProcessingFilter {
5863

59-
private final AuthorizationRequestRepository<OAuth2AuthorizationRequest> authorizationRequestRepository =
60-
new HttpSessionOAuth2AuthorizationRequestRepository();
64+
private final AuthorizationRequestRepository<OAuth2AuthorizationRequest> authorizationRequestRepository = new HttpSessionOAuth2AuthorizationRequestRepository();
6165

6266
private ClientRegistrationRepository clientRegistrationRepository;
6367

@@ -139,10 +143,21 @@ public Authentication attemptAuthentication(final HttpServletRequest request,
139143
oauth2User, authenticationResult.getAuthorities(),
140144
authenticationResult.getClientRegistration().getRegistrationId());
141145
oauth2Authentication.setDetails(authenticationDetails);
146+
147+
SecurityContext context = SecurityContextHolder.createEmptyContext();
148+
context.setAuthentication(oauth2Authentication);
149+
SecurityContextHolder.setContext(context);
150+
request.getSession().setAttribute(HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY, SecurityContextHolder.getContext());
151+
request.getSession().setAttribute("SPRING_SECURITY_CONTEXT", SecurityContextHolder.getContext());
152+
142153
return oauth2Authentication;
143154
}
144155

145156
public void setClientRegistrationRepository(final ClientRegistrationRepository clientRegistrationRepository) {
146157
this.clientRegistrationRepository = clientRegistrationRepository;
147158
}
159+
160+
public AuthorizationRequestRepository getAuthorizationRequestRepository() {
161+
return this.authorizationRequestRepository;
162+
}
148163
}

samples/embedded-sign-in-widget/src/main/java/com/okta/spring/example/HostedLoginCodeFlowExampleApplication.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import java.util.Arrays;
3737
import java.util.HashSet;
3838

39+
3940
/**
4041
* This example renders a self-hosted login page (hosted within this application). You can use a standard login with less
4142
* code (if you don't need to customize the login page) see the 'basic' example at the root of this repository.

samples/embedded-sign-in-widget/src/main/java/com/okta/spring/example/OAuth2SecurityConfigurerAdapter.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@
2727
import org.springframework.security.web.SecurityFilterChain;
2828
import org.springframework.security.web.authentication.WebAuthenticationDetailsSource;
2929

30+
31+
//import org.springframework.security.oauth2.client.web.*;
32+
//import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest;
33+
3034
@Configuration
3135
public class OAuth2SecurityConfigurerAdapter {
3236

@@ -41,18 +45,26 @@ public AuthenticationManager authenticationManager(AuthenticationConfiguration a
4145
@Bean
4246
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
4347

48+
CustomAuthenticationProcessingFilter customAuthenticationProcessingFilter = customAuthenticationProcessingFilter(http);;
49+
4450
http
4551
.exceptionHandling(ex -> ex.accessDeniedHandler((req, res, e) -> res.sendRedirect("/403")))
4652
.addFilterBefore(customAuthenticationProcessingFilter(http), OAuth2LoginAuthenticationFilter.class)
4753
.authorizeHttpRequests((authz) -> authz
48-
.requestMatchers("/logout").permitAll()
49-
.requestMatchers("/home").permitAll()
50-
.requestMatchers("/hello").permitAll()
54+
.requestMatchers("/", "/custom-login", "/magic-link/callback", "/css/**", "/logout").permitAll()
5155
.anyRequest().authenticated()
5256
)
5357
.logout((logout) -> logout.logoutSuccessUrl("/"))
5458
.oauth2Client(Customizer.withDefaults())
55-
.oauth2Login(r -> r.redirectionEndpoint(re -> re.baseUri("/authorization-code/callback*")));
59+
//.oauth2Login(r -> r.redirectionEndpoint(re -> re.baseUri("/authorization-code/callback*")));
60+
.oauth2Login(r -> r
61+
.redirectionEndpoint(re -> re
62+
.baseUri("/authorization-code/callback*")
63+
)
64+
.authorizationEndpoint(authorization -> authorization
65+
.authorizationRequestRepository(customAuthenticationProcessingFilter.getAuthorizationRequestRepository())
66+
)
67+
);
5668

5769
return http.build();
5870
}

0 commit comments

Comments
 (0)