Skip to content

Commit 6ad328f

Browse files
l1nn3ncummiisa000
authored andcommitted
Add Clock Skew Tests
Fixes gh-7511 Co-authored-by: Isaac Cummings <[email protected]>
1 parent 264daec commit 6ad328f

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/ClientCredentialsOAuth2AuthorizedClientProviderTests.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,4 +153,22 @@ public void authorizeWhenClientCredentialsAndTokenNotExpiredThenNotReauthorize()
153153
.build();
154154
assertThat(this.authorizedClientProvider.authorize(authorizationContext)).isNull();
155155
}
156+
157+
@Test
158+
public void authorizeWhenClientCredentialsAndTokenNotExpiredByClockSkewThenNotReauthorize() {
159+
ClientCredentialsOAuth2AuthorizedClientProvider authorizedClientProvider =
160+
new ClientCredentialsOAuth2AuthorizedClientProvider();
161+
authorizedClientProvider.setClockSkew(Duration.ofHours(24));
162+
Instant issuedAt = Instant.now().minus(Duration.ofDays(1));
163+
OAuth2AccessToken expiredToken = new OAuth2AccessToken(OAuth2AccessToken.TokenType.BEARER, "token",
164+
issuedAt, issuedAt.plus(Duration.ofHours(1)));
165+
OAuth2AuthorizedClient authorizedClient = new OAuth2AuthorizedClient(
166+
this.clientRegistration, this.principal.getName(), expiredToken);
167+
168+
OAuth2AuthorizationContext authorizationContext =
169+
OAuth2AuthorizationContext.withAuthorizedClient(authorizedClient)
170+
.principal(this.principal)
171+
.build();
172+
assertThat(authorizedClientProvider.authorize(authorizationContext)).isNull();
173+
}
156174
}

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/PasswordOAuth2AuthorizedClientProviderTests.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,4 +187,25 @@ public void authorizeWhenPasswordAndAuthorizedWithRefreshTokenAndTokenExpiredThe
187187
.build();
188188
assertThat(this.authorizedClientProvider.authorize(authorizationContext)).isNull();
189189
}
190+
191+
@Test
192+
public void authorizeWhenPasswordAndAuthorizedWithoutRefreshTokenAndTokenNotExpiredByClockSkewThenNotReauthorize() {
193+
PasswordOAuth2AuthorizedClientProvider authorizedClientProvider =
194+
new PasswordOAuth2AuthorizedClientProvider();
195+
authorizedClientProvider.setClockSkew(Duration.ofHours(24));
196+
Instant issuedAt = Instant.now().minus(Duration.ofDays(1));
197+
Instant expiresAt = issuedAt.plus(Duration.ofMinutes(60));
198+
OAuth2AccessToken accessToken = new OAuth2AccessToken(
199+
OAuth2AccessToken.TokenType.BEARER, "access-token-expired", issuedAt, expiresAt);
200+
OAuth2AuthorizedClient authorizedClient = new OAuth2AuthorizedClient(
201+
this.clientRegistration, this.principal.getName(), accessToken); // without refresh token
202+
203+
OAuth2AuthorizationContext authorizationContext =
204+
OAuth2AuthorizationContext.withAuthorizedClient(authorizedClient)
205+
.attribute(OAuth2AuthorizationContext.USERNAME_ATTRIBUTE_NAME, "username")
206+
.attribute(OAuth2AuthorizationContext.PASSWORD_ATTRIBUTE_NAME, "password")
207+
.principal(this.principal)
208+
.build();
209+
assertThat(authorizedClientProvider.authorize(authorizationContext)).isNull();
210+
}
190211
}

oauth2/oauth2-client/src/test/java/org/springframework/security/oauth2/client/RefreshTokenReactiveOAuth2AuthorizedClientProviderTests.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,21 @@ public void authorizeWhenAuthorizedAndAccessTokenNotExpiredThenNotReauthorize()
135135
assertThat(this.authorizedClientProvider.authorize(authorizationContext).block()).isNull();
136136
}
137137

138+
@Test
139+
public void authorizeWhenAuthorizedAndAccessTokenNotExpiredByClockSkewThenNotReauthorize() {
140+
RefreshTokenReactiveOAuth2AuthorizedClientProvider authorizedClientProvider
141+
= new RefreshTokenReactiveOAuth2AuthorizedClientProvider();
142+
authorizedClientProvider.setClockSkew(Duration.ofHours(24));
143+
OAuth2AuthorizedClient authorizedClient = new OAuth2AuthorizedClient(this.clientRegistration, this.principal.getName(),
144+
this.authorizedClient.getAccessToken(), this.authorizedClient.getRefreshToken());
145+
146+
OAuth2AuthorizationContext authorizationContext =
147+
OAuth2AuthorizationContext.withAuthorizedClient(authorizedClient)
148+
.principal(this.principal)
149+
.build();
150+
assertThat(authorizedClientProvider.authorize(authorizationContext).block()).isNull();
151+
}
152+
138153
@Test
139154
public void authorizeWhenAuthorizedAndAccessTokenExpiredThenReauthorize() {
140155
OAuth2AccessTokenResponse accessTokenResponse = TestOAuth2AccessTokenResponses.accessTokenResponse()

0 commit comments

Comments
 (0)