|
15 | 15 | */
|
16 | 16 | package org.springframework.security.test.web.servlet.request;
|
17 | 17 |
|
18 |
| -import java.util.Arrays; |
| 18 | +import java.time.Instant; |
19 | 19 | import java.util.List;
|
| 20 | +import java.util.Map; |
| 21 | +import java.util.HashMap; |
| 22 | +import java.util.Arrays; |
| 23 | +import java.util.Collections; |
| 24 | + |
20 | 25 | import javax.servlet.http.HttpServletResponse;
|
21 | 26 |
|
22 | 27 | import org.junit.After;
|
|
34 | 39 | import org.springframework.security.core.GrantedAuthority;
|
35 | 40 | import org.springframework.security.core.authority.SimpleGrantedAuthority;
|
36 | 41 | import org.springframework.security.core.context.SecurityContext;
|
| 42 | +import org.springframework.security.oauth2.core.oidc.IdTokenClaimNames; |
| 43 | +import org.springframework.security.oauth2.jwt.Jwt; |
37 | 44 | import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
|
38 | 45 | import org.springframework.security.test.context.TestSecurityContextHolder;
|
39 | 46 | import org.springframework.security.test.web.support.WebTestUtils;
|
@@ -154,4 +161,22 @@ public void jwtWhenProvidingGrantedAuthoritiesThenProducesJwtAuthentication() {
|
154 | 161 | assertThat((List<GrantedAuthority>) context.getAuthentication().getAuthorities())
|
155 | 162 | .containsOnly(this.authority1);
|
156 | 163 | }
|
| 164 | + |
| 165 | + @Test |
| 166 | + public void jwtWhenProvidingPreparedJwtThenUsesItForAuthentication() { |
| 167 | + Map<String, Object> claims = new HashMap<>(); |
| 168 | + claims.put(IdTokenClaimNames.SUB, "some_user"); |
| 169 | + Jwt originalToken = new Jwt("token123", Instant.now(), Instant.now().plusSeconds(3600), |
| 170 | + Collections.singletonMap("header1", "value1"), claims); |
| 171 | + jwt(originalToken).postProcessRequest(this.request); |
| 172 | + |
| 173 | + |
| 174 | + verify(this.repository).saveContext(this.contextCaptor.capture(), eq(this.request), |
| 175 | + any(HttpServletResponse.class)); |
| 176 | + SecurityContext context = this.contextCaptor.getValue(); |
| 177 | + JwtAuthenticationToken retrievedToken = (JwtAuthenticationToken) context.getAuthentication(); |
| 178 | + assertThat(retrievedToken.getToken().getSubject()).isEqualTo("some_user"); |
| 179 | + assertThat(retrievedToken.getToken().getTokenValue()).isEqualTo("token123"); |
| 180 | + assertThat(retrievedToken.getToken().getHeaders().get("header1")).isEqualTo("value1"); |
| 181 | + } |
157 | 182 | }
|
0 commit comments