Skip to content

Commit bbca6b0

Browse files
arefbehboudijgrandja
authored andcommitted
Polish JdbcOAuth2AuthorizationService
Closes gh-1908 Signed-off-by: arefbehboudi <[email protected]>
1 parent 5bd47b6 commit bbca6b0

File tree

1 file changed

+60
-47
lines changed

1 file changed

+60
-47
lines changed

Diff for: oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/JdbcOAuth2AuthorizationService.java

+60-47
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,19 @@
9898
@ImportRuntimeHints(JdbcOAuth2AuthorizationService.JdbcOAuth2AuthorizationServiceRuntimeHintsRegistrar.class)
9999
public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationService {
100100

101+
private static final String REFRESH_TOKEN_VALUE = "refresh_token_value";
102+
private static final String AUTHORIZATION_CODE_VALUE = "authorization_code_value";
103+
private static final String ACCESS_TOKEN_VALUE = "access_token_value";
104+
private static final String OIDC_ID_TOKEN_VALUE = "oidc_id_token_value";
105+
private static final String USER_CODE_VALUE = "user_code_value";
106+
private static final String DEVICE_CODE_VALUE = "device_code_value";
107+
private static final String AUTHORIZATION_CODE_METADATA = "authorization_code_metadata";
108+
private static final String ACCESS_TOKEN_METADATA = "access_token_metadata";
109+
private static final String OIDC_ID_TOKEN_METADATA = "oidc_id_token_metadata";
110+
private static final String REFRESH_TOKEN_METADATA = "refresh_token_metadata";
111+
private static final String USER_CODE_METADATA = "user_code_metadata";
112+
private static final String DEVICE_CODE_METADATA = "device_code_metadata";
113+
101114
// @formatter:off
102115
private static final String COLUMN_NAMES = "id, "
103116
+ "registered_client_id, "
@@ -279,40 +292,40 @@ public OAuth2Authorization findByToken(String token, @Nullable OAuth2TokenType t
279292
List<SqlParameterValue> parameters = new ArrayList<>();
280293
if (tokenType == null) {
281294
parameters.add(new SqlParameterValue(Types.VARCHAR, token));
282-
parameters.add(mapToSqlParameter("authorization_code_value", token));
283-
parameters.add(mapToSqlParameter("access_token_value", token));
284-
parameters.add(mapToSqlParameter("oidc_id_token_value", token));
285-
parameters.add(mapToSqlParameter("refresh_token_value", token));
286-
parameters.add(mapToSqlParameter("user_code_value", token));
287-
parameters.add(mapToSqlParameter("device_code_value", token));
295+
parameters.add(mapToSqlParameter(AUTHORIZATION_CODE_VALUE, token));
296+
parameters.add(mapToSqlParameter(ACCESS_TOKEN_VALUE, token));
297+
parameters.add(mapToSqlParameter(OIDC_ID_TOKEN_VALUE, token));
298+
parameters.add(mapToSqlParameter(REFRESH_TOKEN_VALUE, token));
299+
parameters.add(mapToSqlParameter(USER_CODE_VALUE, token));
300+
parameters.add(mapToSqlParameter(DEVICE_CODE_VALUE, token));
288301
return findBy(UNKNOWN_TOKEN_TYPE_FILTER, parameters);
289302
}
290303
else if (OAuth2ParameterNames.STATE.equals(tokenType.getValue())) {
291304
parameters.add(new SqlParameterValue(Types.VARCHAR, token));
292305
return findBy(STATE_FILTER, parameters);
293306
}
294307
else if (OAuth2ParameterNames.CODE.equals(tokenType.getValue())) {
295-
parameters.add(mapToSqlParameter("authorization_code_value", token));
308+
parameters.add(mapToSqlParameter(AUTHORIZATION_CODE_VALUE, token));
296309
return findBy(AUTHORIZATION_CODE_FILTER, parameters);
297310
}
298311
else if (OAuth2TokenType.ACCESS_TOKEN.equals(tokenType)) {
299-
parameters.add(mapToSqlParameter("access_token_value", token));
312+
parameters.add(mapToSqlParameter(ACCESS_TOKEN_VALUE, token));
300313
return findBy(ACCESS_TOKEN_FILTER, parameters);
301314
}
302315
else if (OidcParameterNames.ID_TOKEN.equals(tokenType.getValue())) {
303-
parameters.add(mapToSqlParameter("oidc_id_token_value", token));
316+
parameters.add(mapToSqlParameter(OIDC_ID_TOKEN_VALUE, token));
304317
return findBy(ID_TOKEN_FILTER, parameters);
305318
}
306319
else if (OAuth2TokenType.REFRESH_TOKEN.equals(tokenType)) {
307-
parameters.add(mapToSqlParameter("refresh_token_value", token));
320+
parameters.add(mapToSqlParameter(REFRESH_TOKEN_VALUE, token));
308321
return findBy(REFRESH_TOKEN_FILTER, parameters);
309322
}
310323
else if (OAuth2ParameterNames.USER_CODE.equals(tokenType.getValue())) {
311-
parameters.add(mapToSqlParameter("user_code_value", token));
324+
parameters.add(mapToSqlParameter(USER_CODE_VALUE, token));
312325
return findBy(USER_CODE_FILTER, parameters);
313326
}
314327
else if (OAuth2ParameterNames.DEVICE_CODE.equals(tokenType.getValue())) {
315-
parameters.add(mapToSqlParameter("device_code_value", token));
328+
parameters.add(mapToSqlParameter(DEVICE_CODE_VALUE, token));
316329
return findBy(DEVICE_CODE_FILTER, parameters);
317330
}
318331
return null;
@@ -375,29 +388,29 @@ private static void initColumnMetadata(JdbcOperations jdbcOperations) {
375388

376389
columnMetadata = getColumnMetadata(jdbcOperations, "attributes", Types.BLOB);
377390
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
378-
columnMetadata = getColumnMetadata(jdbcOperations, "authorization_code_value", Types.BLOB);
391+
columnMetadata = getColumnMetadata(jdbcOperations, AUTHORIZATION_CODE_VALUE, Types.BLOB);
379392
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
380-
columnMetadata = getColumnMetadata(jdbcOperations, "authorization_code_metadata", Types.BLOB);
393+
columnMetadata = getColumnMetadata(jdbcOperations, AUTHORIZATION_CODE_METADATA, Types.BLOB);
381394
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
382-
columnMetadata = getColumnMetadata(jdbcOperations, "access_token_value", Types.BLOB);
395+
columnMetadata = getColumnMetadata(jdbcOperations, ACCESS_TOKEN_VALUE, Types.BLOB);
383396
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
384-
columnMetadata = getColumnMetadata(jdbcOperations, "access_token_metadata", Types.BLOB);
397+
columnMetadata = getColumnMetadata(jdbcOperations, ACCESS_TOKEN_METADATA, Types.BLOB);
385398
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
386-
columnMetadata = getColumnMetadata(jdbcOperations, "oidc_id_token_value", Types.BLOB);
399+
columnMetadata = getColumnMetadata(jdbcOperations, OIDC_ID_TOKEN_VALUE, Types.BLOB);
387400
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
388-
columnMetadata = getColumnMetadata(jdbcOperations, "oidc_id_token_metadata", Types.BLOB);
401+
columnMetadata = getColumnMetadata(jdbcOperations, OIDC_ID_TOKEN_METADATA, Types.BLOB);
389402
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
390-
columnMetadata = getColumnMetadata(jdbcOperations, "refresh_token_value", Types.BLOB);
403+
columnMetadata = getColumnMetadata(jdbcOperations, REFRESH_TOKEN_VALUE, Types.BLOB);
391404
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
392-
columnMetadata = getColumnMetadata(jdbcOperations, "refresh_token_metadata", Types.BLOB);
405+
columnMetadata = getColumnMetadata(jdbcOperations, REFRESH_TOKEN_METADATA, Types.BLOB);
393406
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
394-
columnMetadata = getColumnMetadata(jdbcOperations, "user_code_value", Types.BLOB);
407+
columnMetadata = getColumnMetadata(jdbcOperations, USER_CODE_VALUE, Types.BLOB);
395408
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
396-
columnMetadata = getColumnMetadata(jdbcOperations, "user_code_metadata", Types.BLOB);
409+
columnMetadata = getColumnMetadata(jdbcOperations, USER_CODE_METADATA, Types.BLOB);
397410
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
398-
columnMetadata = getColumnMetadata(jdbcOperations, "device_code_value", Types.BLOB);
411+
columnMetadata = getColumnMetadata(jdbcOperations, DEVICE_CODE_VALUE, Types.BLOB);
399412
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
400-
columnMetadata = getColumnMetadata(jdbcOperations, "device_code_metadata", Types.BLOB);
413+
columnMetadata = getColumnMetadata(jdbcOperations, DEVICE_CODE_METADATA, Types.BLOB);
401414
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
402415
}
403416

@@ -490,24 +503,24 @@ public OAuth2Authorization mapRow(ResultSet rs, int rowNum) throws SQLException
490503

491504
Instant tokenIssuedAt;
492505
Instant tokenExpiresAt;
493-
String authorizationCodeValue = getLobValue(rs, "authorization_code_value");
506+
String authorizationCodeValue = getLobValue(rs, AUTHORIZATION_CODE_VALUE);
494507

495508
if (StringUtils.hasText(authorizationCodeValue)) {
496509
tokenIssuedAt = rs.getTimestamp("authorization_code_issued_at").toInstant();
497510
tokenExpiresAt = rs.getTimestamp("authorization_code_expires_at").toInstant();
498511
Map<String, Object> authorizationCodeMetadata = parseMap(
499-
getLobValue(rs, "authorization_code_metadata"));
512+
getLobValue(rs, AUTHORIZATION_CODE_METADATA));
500513

501514
OAuth2AuthorizationCode authorizationCode = new OAuth2AuthorizationCode(authorizationCodeValue,
502515
tokenIssuedAt, tokenExpiresAt);
503516
builder.token(authorizationCode, (metadata) -> metadata.putAll(authorizationCodeMetadata));
504517
}
505518

506-
String accessTokenValue = getLobValue(rs, "access_token_value");
519+
String accessTokenValue = getLobValue(rs, ACCESS_TOKEN_VALUE);
507520
if (StringUtils.hasText(accessTokenValue)) {
508521
tokenIssuedAt = rs.getTimestamp("access_token_issued_at").toInstant();
509522
tokenExpiresAt = rs.getTimestamp("access_token_expires_at").toInstant();
510-
Map<String, Object> accessTokenMetadata = parseMap(getLobValue(rs, "access_token_metadata"));
523+
Map<String, Object> accessTokenMetadata = parseMap(getLobValue(rs, ACCESS_TOKEN_METADATA));
511524
OAuth2AccessToken.TokenType tokenType = null;
512525
if (OAuth2AccessToken.TokenType.BEARER.getValue().equalsIgnoreCase(rs.getString("access_token_type"))) {
513526
tokenType = OAuth2AccessToken.TokenType.BEARER;
@@ -527,47 +540,47 @@ else if (OAuth2AccessToken.TokenType.DPOP.getValue()
527540
builder.token(accessToken, (metadata) -> metadata.putAll(accessTokenMetadata));
528541
}
529542

530-
String oidcIdTokenValue = getLobValue(rs, "oidc_id_token_value");
543+
String oidcIdTokenValue = getLobValue(rs, OIDC_ID_TOKEN_VALUE);
531544
if (StringUtils.hasText(oidcIdTokenValue)) {
532545
tokenIssuedAt = rs.getTimestamp("oidc_id_token_issued_at").toInstant();
533546
tokenExpiresAt = rs.getTimestamp("oidc_id_token_expires_at").toInstant();
534-
Map<String, Object> oidcTokenMetadata = parseMap(getLobValue(rs, "oidc_id_token_metadata"));
547+
Map<String, Object> oidcTokenMetadata = parseMap(getLobValue(rs, OIDC_ID_TOKEN_METADATA));
535548

536549
OidcIdToken oidcToken = new OidcIdToken(oidcIdTokenValue, tokenIssuedAt, tokenExpiresAt,
537550
(Map<String, Object>) oidcTokenMetadata.get(OAuth2Authorization.Token.CLAIMS_METADATA_NAME));
538551
builder.token(oidcToken, (metadata) -> metadata.putAll(oidcTokenMetadata));
539552
}
540553

541-
String refreshTokenValue = getLobValue(rs, "refresh_token_value");
554+
String refreshTokenValue = getLobValue(rs, REFRESH_TOKEN_VALUE);
542555
if (StringUtils.hasText(refreshTokenValue)) {
543556
tokenIssuedAt = rs.getTimestamp("refresh_token_issued_at").toInstant();
544557
tokenExpiresAt = null;
545558
Timestamp refreshTokenExpiresAt = rs.getTimestamp("refresh_token_expires_at");
546559
if (refreshTokenExpiresAt != null) {
547560
tokenExpiresAt = refreshTokenExpiresAt.toInstant();
548561
}
549-
Map<String, Object> refreshTokenMetadata = parseMap(getLobValue(rs, "refresh_token_metadata"));
562+
Map<String, Object> refreshTokenMetadata = parseMap(getLobValue(rs, REFRESH_TOKEN_METADATA));
550563

551564
OAuth2RefreshToken refreshToken = new OAuth2RefreshToken(refreshTokenValue, tokenIssuedAt,
552565
tokenExpiresAt);
553566
builder.token(refreshToken, (metadata) -> metadata.putAll(refreshTokenMetadata));
554567
}
555568

556-
String userCodeValue = getLobValue(rs, "user_code_value");
569+
String userCodeValue = getLobValue(rs, USER_CODE_VALUE);
557570
if (StringUtils.hasText(userCodeValue)) {
558571
tokenIssuedAt = rs.getTimestamp("user_code_issued_at").toInstant();
559572
tokenExpiresAt = rs.getTimestamp("user_code_expires_at").toInstant();
560-
Map<String, Object> userCodeMetadata = parseMap(getLobValue(rs, "user_code_metadata"));
573+
Map<String, Object> userCodeMetadata = parseMap(getLobValue(rs, USER_CODE_METADATA));
561574

562575
OAuth2UserCode userCode = new OAuth2UserCode(userCodeValue, tokenIssuedAt, tokenExpiresAt);
563576
builder.token(userCode, (metadata) -> metadata.putAll(userCodeMetadata));
564577
}
565578

566-
String deviceCodeValue = getLobValue(rs, "device_code_value");
579+
String deviceCodeValue = getLobValue(rs, DEVICE_CODE_VALUE);
567580
if (StringUtils.hasText(deviceCodeValue)) {
568581
tokenIssuedAt = rs.getTimestamp("device_code_issued_at").toInstant();
569582
tokenExpiresAt = rs.getTimestamp("device_code_expires_at").toInstant();
570-
Map<String, Object> deviceCodeMetadata = parseMap(getLobValue(rs, "device_code_metadata"));
583+
Map<String, Object> deviceCodeMetadata = parseMap(getLobValue(rs, DEVICE_CODE_METADATA));
571584

572585
OAuth2DeviceCode deviceCode = new OAuth2DeviceCode(deviceCodeValue, tokenIssuedAt, tokenExpiresAt);
573586
builder.token(deviceCode, (metadata) -> metadata.putAll(deviceCodeMetadata));
@@ -670,13 +683,13 @@ public List<SqlParameterValue> apply(OAuth2Authorization authorization) {
670683

671684
OAuth2Authorization.Token<OAuth2AuthorizationCode> authorizationCode = authorization
672685
.getToken(OAuth2AuthorizationCode.class);
673-
List<SqlParameterValue> authorizationCodeSqlParameters = toSqlParameterList("authorization_code_value",
674-
"authorization_code_metadata", authorizationCode);
686+
List<SqlParameterValue> authorizationCodeSqlParameters = toSqlParameterList(AUTHORIZATION_CODE_VALUE,
687+
AUTHORIZATION_CODE_METADATA, authorizationCode);
675688
parameters.addAll(authorizationCodeSqlParameters);
676689

677690
OAuth2Authorization.Token<OAuth2AccessToken> accessToken = authorization.getToken(OAuth2AccessToken.class);
678-
List<SqlParameterValue> accessTokenSqlParameters = toSqlParameterList("access_token_value",
679-
"access_token_metadata", accessToken);
691+
List<SqlParameterValue> accessTokenSqlParameters = toSqlParameterList(ACCESS_TOKEN_VALUE,
692+
ACCESS_TOKEN_METADATA, accessToken);
680693
parameters.addAll(accessTokenSqlParameters);
681694
String accessTokenType = null;
682695
String accessTokenScopes = null;
@@ -691,23 +704,23 @@ public List<SqlParameterValue> apply(OAuth2Authorization authorization) {
691704
parameters.add(new SqlParameterValue(Types.VARCHAR, accessTokenScopes));
692705

693706
OAuth2Authorization.Token<OidcIdToken> oidcIdToken = authorization.getToken(OidcIdToken.class);
694-
List<SqlParameterValue> oidcIdTokenSqlParameters = toSqlParameterList("oidc_id_token_value",
695-
"oidc_id_token_metadata", oidcIdToken);
707+
List<SqlParameterValue> oidcIdTokenSqlParameters = toSqlParameterList(OIDC_ID_TOKEN_VALUE,
708+
OIDC_ID_TOKEN_METADATA, oidcIdToken);
696709
parameters.addAll(oidcIdTokenSqlParameters);
697710

698711
OAuth2Authorization.Token<OAuth2RefreshToken> refreshToken = authorization.getRefreshToken();
699-
List<SqlParameterValue> refreshTokenSqlParameters = toSqlParameterList("refresh_token_value",
700-
"refresh_token_metadata", refreshToken);
712+
List<SqlParameterValue> refreshTokenSqlParameters = toSqlParameterList(REFRESH_TOKEN_VALUE,
713+
REFRESH_TOKEN_METADATA, refreshToken);
701714
parameters.addAll(refreshTokenSqlParameters);
702715

703716
OAuth2Authorization.Token<OAuth2UserCode> userCode = authorization.getToken(OAuth2UserCode.class);
704-
List<SqlParameterValue> userCodeSqlParameters = toSqlParameterList("user_code_value", "user_code_metadata",
717+
List<SqlParameterValue> userCodeSqlParameters = toSqlParameterList(USER_CODE_VALUE, USER_CODE_METADATA,
705718
userCode);
706719
parameters.addAll(userCodeSqlParameters);
707720

708721
OAuth2Authorization.Token<OAuth2DeviceCode> deviceCode = authorization.getToken(OAuth2DeviceCode.class);
709-
List<SqlParameterValue> deviceCodeSqlParameters = toSqlParameterList("device_code_value",
710-
"device_code_metadata", deviceCode);
722+
List<SqlParameterValue> deviceCodeSqlParameters = toSqlParameterList(DEVICE_CODE_VALUE,
723+
DEVICE_CODE_METADATA, deviceCode);
711724
parameters.addAll(deviceCodeSqlParameters);
712725

713726
return parameters;

0 commit comments

Comments
 (0)