|
|
|
@ -98,6 +98,19 @@ import org.springframework.util.StringUtils; |
|
|
|
@ImportRuntimeHints(JdbcOAuth2AuthorizationService.JdbcOAuth2AuthorizationServiceRuntimeHintsRegistrar.class) |
|
|
|
@ImportRuntimeHints(JdbcOAuth2AuthorizationService.JdbcOAuth2AuthorizationServiceRuntimeHintsRegistrar.class) |
|
|
|
public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationService { |
|
|
|
public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final String REFRESH_TOKEN_VALUE = "refresh_token_value"; |
|
|
|
|
|
|
|
private static final String AUTHORIZATION_CODE_VALUE = "authorization_code_value"; |
|
|
|
|
|
|
|
private static final String ACCESS_TOKEN_VALUE = "access_token_value"; |
|
|
|
|
|
|
|
private static final String OIDC_ID_TOKEN_VALUE = "oidc_id_token_value"; |
|
|
|
|
|
|
|
private static final String USER_CODE_VALUE = "user_code_value"; |
|
|
|
|
|
|
|
private static final String DEVICE_CODE_VALUE = "device_code_value"; |
|
|
|
|
|
|
|
private static final String AUTHORIZATION_CODE_METADATA = "authorization_code_metadata"; |
|
|
|
|
|
|
|
private static final String ACCESS_TOKEN_METADATA = "access_token_metadata"; |
|
|
|
|
|
|
|
private static final String OIDC_ID_TOKEN_METADATA = "oidc_id_token_metadata"; |
|
|
|
|
|
|
|
private static final String REFRESH_TOKEN_METADATA = "refresh_token_metadata"; |
|
|
|
|
|
|
|
private static final String USER_CODE_METADATA = "user_code_metadata"; |
|
|
|
|
|
|
|
private static final String DEVICE_CODE_METADATA = "device_code_metadata"; |
|
|
|
|
|
|
|
|
|
|
|
// @formatter:off
|
|
|
|
// @formatter:off
|
|
|
|
private static final String COLUMN_NAMES = "id, " |
|
|
|
private static final String COLUMN_NAMES = "id, " |
|
|
|
+ "registered_client_id, " |
|
|
|
+ "registered_client_id, " |
|
|
|
@ -279,12 +292,12 @@ public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationServic |
|
|
|
List<SqlParameterValue> parameters = new ArrayList<>(); |
|
|
|
List<SqlParameterValue> parameters = new ArrayList<>(); |
|
|
|
if (tokenType == null) { |
|
|
|
if (tokenType == null) { |
|
|
|
parameters.add(new SqlParameterValue(Types.VARCHAR, token)); |
|
|
|
parameters.add(new SqlParameterValue(Types.VARCHAR, token)); |
|
|
|
parameters.add(mapToSqlParameter("authorization_code_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(AUTHORIZATION_CODE_VALUE, token)); |
|
|
|
parameters.add(mapToSqlParameter("access_token_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(ACCESS_TOKEN_VALUE, token)); |
|
|
|
parameters.add(mapToSqlParameter("oidc_id_token_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(OIDC_ID_TOKEN_VALUE, token)); |
|
|
|
parameters.add(mapToSqlParameter("refresh_token_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(REFRESH_TOKEN_VALUE, token)); |
|
|
|
parameters.add(mapToSqlParameter("user_code_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(USER_CODE_VALUE, token)); |
|
|
|
parameters.add(mapToSqlParameter("device_code_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(DEVICE_CODE_VALUE, token)); |
|
|
|
return findBy(UNKNOWN_TOKEN_TYPE_FILTER, parameters); |
|
|
|
return findBy(UNKNOWN_TOKEN_TYPE_FILTER, parameters); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (OAuth2ParameterNames.STATE.equals(tokenType.getValue())) { |
|
|
|
else if (OAuth2ParameterNames.STATE.equals(tokenType.getValue())) { |
|
|
|
@ -292,27 +305,27 @@ public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationServic |
|
|
|
return findBy(STATE_FILTER, parameters); |
|
|
|
return findBy(STATE_FILTER, parameters); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (OAuth2ParameterNames.CODE.equals(tokenType.getValue())) { |
|
|
|
else if (OAuth2ParameterNames.CODE.equals(tokenType.getValue())) { |
|
|
|
parameters.add(mapToSqlParameter("authorization_code_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(AUTHORIZATION_CODE_VALUE, token)); |
|
|
|
return findBy(AUTHORIZATION_CODE_FILTER, parameters); |
|
|
|
return findBy(AUTHORIZATION_CODE_FILTER, parameters); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (OAuth2TokenType.ACCESS_TOKEN.equals(tokenType)) { |
|
|
|
else if (OAuth2TokenType.ACCESS_TOKEN.equals(tokenType)) { |
|
|
|
parameters.add(mapToSqlParameter("access_token_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(ACCESS_TOKEN_VALUE, token)); |
|
|
|
return findBy(ACCESS_TOKEN_FILTER, parameters); |
|
|
|
return findBy(ACCESS_TOKEN_FILTER, parameters); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (OidcParameterNames.ID_TOKEN.equals(tokenType.getValue())) { |
|
|
|
else if (OidcParameterNames.ID_TOKEN.equals(tokenType.getValue())) { |
|
|
|
parameters.add(mapToSqlParameter("oidc_id_token_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(OIDC_ID_TOKEN_VALUE, token)); |
|
|
|
return findBy(ID_TOKEN_FILTER, parameters); |
|
|
|
return findBy(ID_TOKEN_FILTER, parameters); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (OAuth2TokenType.REFRESH_TOKEN.equals(tokenType)) { |
|
|
|
else if (OAuth2TokenType.REFRESH_TOKEN.equals(tokenType)) { |
|
|
|
parameters.add(mapToSqlParameter("refresh_token_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(REFRESH_TOKEN_VALUE, token)); |
|
|
|
return findBy(REFRESH_TOKEN_FILTER, parameters); |
|
|
|
return findBy(REFRESH_TOKEN_FILTER, parameters); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (OAuth2ParameterNames.USER_CODE.equals(tokenType.getValue())) { |
|
|
|
else if (OAuth2ParameterNames.USER_CODE.equals(tokenType.getValue())) { |
|
|
|
parameters.add(mapToSqlParameter("user_code_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(USER_CODE_VALUE, token)); |
|
|
|
return findBy(USER_CODE_FILTER, parameters); |
|
|
|
return findBy(USER_CODE_FILTER, parameters); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (OAuth2ParameterNames.DEVICE_CODE.equals(tokenType.getValue())) { |
|
|
|
else if (OAuth2ParameterNames.DEVICE_CODE.equals(tokenType.getValue())) { |
|
|
|
parameters.add(mapToSqlParameter("device_code_value", token)); |
|
|
|
parameters.add(mapToSqlParameter(DEVICE_CODE_VALUE, token)); |
|
|
|
return findBy(DEVICE_CODE_FILTER, parameters); |
|
|
|
return findBy(DEVICE_CODE_FILTER, parameters); |
|
|
|
} |
|
|
|
} |
|
|
|
return null; |
|
|
|
return null; |
|
|
|
@ -375,29 +388,29 @@ public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationServic |
|
|
|
|
|
|
|
|
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "attributes", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "attributes", Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "authorization_code_value", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, AUTHORIZATION_CODE_VALUE, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "authorization_code_metadata", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, AUTHORIZATION_CODE_METADATA, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "access_token_value", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, ACCESS_TOKEN_VALUE, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "access_token_metadata", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, ACCESS_TOKEN_METADATA, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "oidc_id_token_value", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, OIDC_ID_TOKEN_VALUE, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "oidc_id_token_metadata", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, OIDC_ID_TOKEN_METADATA, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "refresh_token_value", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, REFRESH_TOKEN_VALUE, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "refresh_token_metadata", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, REFRESH_TOKEN_METADATA, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "user_code_value", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, USER_CODE_VALUE, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "user_code_metadata", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, USER_CODE_METADATA, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "device_code_value", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, DEVICE_CODE_VALUE, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, "device_code_metadata", Types.BLOB); |
|
|
|
columnMetadata = getColumnMetadata(jdbcOperations, DEVICE_CODE_METADATA, Types.BLOB); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -490,24 +503,24 @@ public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationServic |
|
|
|
|
|
|
|
|
|
|
|
Instant tokenIssuedAt; |
|
|
|
Instant tokenIssuedAt; |
|
|
|
Instant tokenExpiresAt; |
|
|
|
Instant tokenExpiresAt; |
|
|
|
String authorizationCodeValue = getLobValue(rs, "authorization_code_value"); |
|
|
|
String authorizationCodeValue = getLobValue(rs, AUTHORIZATION_CODE_VALUE); |
|
|
|
|
|
|
|
|
|
|
|
if (StringUtils.hasText(authorizationCodeValue)) { |
|
|
|
if (StringUtils.hasText(authorizationCodeValue)) { |
|
|
|
tokenIssuedAt = rs.getTimestamp("authorization_code_issued_at").toInstant(); |
|
|
|
tokenIssuedAt = rs.getTimestamp("authorization_code_issued_at").toInstant(); |
|
|
|
tokenExpiresAt = rs.getTimestamp("authorization_code_expires_at").toInstant(); |
|
|
|
tokenExpiresAt = rs.getTimestamp("authorization_code_expires_at").toInstant(); |
|
|
|
Map<String, Object> authorizationCodeMetadata = parseMap( |
|
|
|
Map<String, Object> authorizationCodeMetadata = parseMap( |
|
|
|
getLobValue(rs, "authorization_code_metadata")); |
|
|
|
getLobValue(rs, AUTHORIZATION_CODE_METADATA)); |
|
|
|
|
|
|
|
|
|
|
|
OAuth2AuthorizationCode authorizationCode = new OAuth2AuthorizationCode(authorizationCodeValue, |
|
|
|
OAuth2AuthorizationCode authorizationCode = new OAuth2AuthorizationCode(authorizationCodeValue, |
|
|
|
tokenIssuedAt, tokenExpiresAt); |
|
|
|
tokenIssuedAt, tokenExpiresAt); |
|
|
|
builder.token(authorizationCode, (metadata) -> metadata.putAll(authorizationCodeMetadata)); |
|
|
|
builder.token(authorizationCode, (metadata) -> metadata.putAll(authorizationCodeMetadata)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
String accessTokenValue = getLobValue(rs, "access_token_value"); |
|
|
|
String accessTokenValue = getLobValue(rs, ACCESS_TOKEN_VALUE); |
|
|
|
if (StringUtils.hasText(accessTokenValue)) { |
|
|
|
if (StringUtils.hasText(accessTokenValue)) { |
|
|
|
tokenIssuedAt = rs.getTimestamp("access_token_issued_at").toInstant(); |
|
|
|
tokenIssuedAt = rs.getTimestamp("access_token_issued_at").toInstant(); |
|
|
|
tokenExpiresAt = rs.getTimestamp("access_token_expires_at").toInstant(); |
|
|
|
tokenExpiresAt = rs.getTimestamp("access_token_expires_at").toInstant(); |
|
|
|
Map<String, Object> accessTokenMetadata = parseMap(getLobValue(rs, "access_token_metadata")); |
|
|
|
Map<String, Object> accessTokenMetadata = parseMap(getLobValue(rs, ACCESS_TOKEN_METADATA)); |
|
|
|
OAuth2AccessToken.TokenType tokenType = null; |
|
|
|
OAuth2AccessToken.TokenType tokenType = null; |
|
|
|
if (OAuth2AccessToken.TokenType.BEARER.getValue().equalsIgnoreCase(rs.getString("access_token_type"))) { |
|
|
|
if (OAuth2AccessToken.TokenType.BEARER.getValue().equalsIgnoreCase(rs.getString("access_token_type"))) { |
|
|
|
tokenType = OAuth2AccessToken.TokenType.BEARER; |
|
|
|
tokenType = OAuth2AccessToken.TokenType.BEARER; |
|
|
|
@ -527,18 +540,18 @@ public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationServic |
|
|
|
builder.token(accessToken, (metadata) -> metadata.putAll(accessTokenMetadata)); |
|
|
|
builder.token(accessToken, (metadata) -> metadata.putAll(accessTokenMetadata)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
String oidcIdTokenValue = getLobValue(rs, "oidc_id_token_value"); |
|
|
|
String oidcIdTokenValue = getLobValue(rs, OIDC_ID_TOKEN_VALUE); |
|
|
|
if (StringUtils.hasText(oidcIdTokenValue)) { |
|
|
|
if (StringUtils.hasText(oidcIdTokenValue)) { |
|
|
|
tokenIssuedAt = rs.getTimestamp("oidc_id_token_issued_at").toInstant(); |
|
|
|
tokenIssuedAt = rs.getTimestamp("oidc_id_token_issued_at").toInstant(); |
|
|
|
tokenExpiresAt = rs.getTimestamp("oidc_id_token_expires_at").toInstant(); |
|
|
|
tokenExpiresAt = rs.getTimestamp("oidc_id_token_expires_at").toInstant(); |
|
|
|
Map<String, Object> oidcTokenMetadata = parseMap(getLobValue(rs, "oidc_id_token_metadata")); |
|
|
|
Map<String, Object> oidcTokenMetadata = parseMap(getLobValue(rs, OIDC_ID_TOKEN_METADATA)); |
|
|
|
|
|
|
|
|
|
|
|
OidcIdToken oidcToken = new OidcIdToken(oidcIdTokenValue, tokenIssuedAt, tokenExpiresAt, |
|
|
|
OidcIdToken oidcToken = new OidcIdToken(oidcIdTokenValue, tokenIssuedAt, tokenExpiresAt, |
|
|
|
(Map<String, Object>) oidcTokenMetadata.get(OAuth2Authorization.Token.CLAIMS_METADATA_NAME)); |
|
|
|
(Map<String, Object>) oidcTokenMetadata.get(OAuth2Authorization.Token.CLAIMS_METADATA_NAME)); |
|
|
|
builder.token(oidcToken, (metadata) -> metadata.putAll(oidcTokenMetadata)); |
|
|
|
builder.token(oidcToken, (metadata) -> metadata.putAll(oidcTokenMetadata)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
String refreshTokenValue = getLobValue(rs, "refresh_token_value"); |
|
|
|
String refreshTokenValue = getLobValue(rs, REFRESH_TOKEN_VALUE); |
|
|
|
if (StringUtils.hasText(refreshTokenValue)) { |
|
|
|
if (StringUtils.hasText(refreshTokenValue)) { |
|
|
|
tokenIssuedAt = rs.getTimestamp("refresh_token_issued_at").toInstant(); |
|
|
|
tokenIssuedAt = rs.getTimestamp("refresh_token_issued_at").toInstant(); |
|
|
|
tokenExpiresAt = null; |
|
|
|
tokenExpiresAt = null; |
|
|
|
@ -546,28 +559,28 @@ public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationServic |
|
|
|
if (refreshTokenExpiresAt != null) { |
|
|
|
if (refreshTokenExpiresAt != null) { |
|
|
|
tokenExpiresAt = refreshTokenExpiresAt.toInstant(); |
|
|
|
tokenExpiresAt = refreshTokenExpiresAt.toInstant(); |
|
|
|
} |
|
|
|
} |
|
|
|
Map<String, Object> refreshTokenMetadata = parseMap(getLobValue(rs, "refresh_token_metadata")); |
|
|
|
Map<String, Object> refreshTokenMetadata = parseMap(getLobValue(rs, REFRESH_TOKEN_METADATA)); |
|
|
|
|
|
|
|
|
|
|
|
OAuth2RefreshToken refreshToken = new OAuth2RefreshToken(refreshTokenValue, tokenIssuedAt, |
|
|
|
OAuth2RefreshToken refreshToken = new OAuth2RefreshToken(refreshTokenValue, tokenIssuedAt, |
|
|
|
tokenExpiresAt); |
|
|
|
tokenExpiresAt); |
|
|
|
builder.token(refreshToken, (metadata) -> metadata.putAll(refreshTokenMetadata)); |
|
|
|
builder.token(refreshToken, (metadata) -> metadata.putAll(refreshTokenMetadata)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
String userCodeValue = getLobValue(rs, "user_code_value"); |
|
|
|
String userCodeValue = getLobValue(rs, USER_CODE_VALUE); |
|
|
|
if (StringUtils.hasText(userCodeValue)) { |
|
|
|
if (StringUtils.hasText(userCodeValue)) { |
|
|
|
tokenIssuedAt = rs.getTimestamp("user_code_issued_at").toInstant(); |
|
|
|
tokenIssuedAt = rs.getTimestamp("user_code_issued_at").toInstant(); |
|
|
|
tokenExpiresAt = rs.getTimestamp("user_code_expires_at").toInstant(); |
|
|
|
tokenExpiresAt = rs.getTimestamp("user_code_expires_at").toInstant(); |
|
|
|
Map<String, Object> userCodeMetadata = parseMap(getLobValue(rs, "user_code_metadata")); |
|
|
|
Map<String, Object> userCodeMetadata = parseMap(getLobValue(rs, USER_CODE_METADATA)); |
|
|
|
|
|
|
|
|
|
|
|
OAuth2UserCode userCode = new OAuth2UserCode(userCodeValue, tokenIssuedAt, tokenExpiresAt); |
|
|
|
OAuth2UserCode userCode = new OAuth2UserCode(userCodeValue, tokenIssuedAt, tokenExpiresAt); |
|
|
|
builder.token(userCode, (metadata) -> metadata.putAll(userCodeMetadata)); |
|
|
|
builder.token(userCode, (metadata) -> metadata.putAll(userCodeMetadata)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
String deviceCodeValue = getLobValue(rs, "device_code_value"); |
|
|
|
String deviceCodeValue = getLobValue(rs, DEVICE_CODE_VALUE); |
|
|
|
if (StringUtils.hasText(deviceCodeValue)) { |
|
|
|
if (StringUtils.hasText(deviceCodeValue)) { |
|
|
|
tokenIssuedAt = rs.getTimestamp("device_code_issued_at").toInstant(); |
|
|
|
tokenIssuedAt = rs.getTimestamp("device_code_issued_at").toInstant(); |
|
|
|
tokenExpiresAt = rs.getTimestamp("device_code_expires_at").toInstant(); |
|
|
|
tokenExpiresAt = rs.getTimestamp("device_code_expires_at").toInstant(); |
|
|
|
Map<String, Object> deviceCodeMetadata = parseMap(getLobValue(rs, "device_code_metadata")); |
|
|
|
Map<String, Object> deviceCodeMetadata = parseMap(getLobValue(rs, DEVICE_CODE_METADATA)); |
|
|
|
|
|
|
|
|
|
|
|
OAuth2DeviceCode deviceCode = new OAuth2DeviceCode(deviceCodeValue, tokenIssuedAt, tokenExpiresAt); |
|
|
|
OAuth2DeviceCode deviceCode = new OAuth2DeviceCode(deviceCodeValue, tokenIssuedAt, tokenExpiresAt); |
|
|
|
builder.token(deviceCode, (metadata) -> metadata.putAll(deviceCodeMetadata)); |
|
|
|
builder.token(deviceCode, (metadata) -> metadata.putAll(deviceCodeMetadata)); |
|
|
|
@ -670,13 +683,13 @@ public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationServic |
|
|
|
|
|
|
|
|
|
|
|
OAuth2Authorization.Token<OAuth2AuthorizationCode> authorizationCode = authorization |
|
|
|
OAuth2Authorization.Token<OAuth2AuthorizationCode> authorizationCode = authorization |
|
|
|
.getToken(OAuth2AuthorizationCode.class); |
|
|
|
.getToken(OAuth2AuthorizationCode.class); |
|
|
|
List<SqlParameterValue> authorizationCodeSqlParameters = toSqlParameterList("authorization_code_value", |
|
|
|
List<SqlParameterValue> authorizationCodeSqlParameters = toSqlParameterList(AUTHORIZATION_CODE_VALUE, |
|
|
|
"authorization_code_metadata", authorizationCode); |
|
|
|
AUTHORIZATION_CODE_METADATA, authorizationCode); |
|
|
|
parameters.addAll(authorizationCodeSqlParameters); |
|
|
|
parameters.addAll(authorizationCodeSqlParameters); |
|
|
|
|
|
|
|
|
|
|
|
OAuth2Authorization.Token<OAuth2AccessToken> accessToken = authorization.getToken(OAuth2AccessToken.class); |
|
|
|
OAuth2Authorization.Token<OAuth2AccessToken> accessToken = authorization.getToken(OAuth2AccessToken.class); |
|
|
|
List<SqlParameterValue> accessTokenSqlParameters = toSqlParameterList("access_token_value", |
|
|
|
List<SqlParameterValue> accessTokenSqlParameters = toSqlParameterList(ACCESS_TOKEN_VALUE, |
|
|
|
"access_token_metadata", accessToken); |
|
|
|
ACCESS_TOKEN_METADATA, accessToken); |
|
|
|
parameters.addAll(accessTokenSqlParameters); |
|
|
|
parameters.addAll(accessTokenSqlParameters); |
|
|
|
String accessTokenType = null; |
|
|
|
String accessTokenType = null; |
|
|
|
String accessTokenScopes = null; |
|
|
|
String accessTokenScopes = null; |
|
|
|
@ -691,23 +704,23 @@ public class JdbcOAuth2AuthorizationService implements OAuth2AuthorizationServic |
|
|
|
parameters.add(new SqlParameterValue(Types.VARCHAR, accessTokenScopes)); |
|
|
|
parameters.add(new SqlParameterValue(Types.VARCHAR, accessTokenScopes)); |
|
|
|
|
|
|
|
|
|
|
|
OAuth2Authorization.Token<OidcIdToken> oidcIdToken = authorization.getToken(OidcIdToken.class); |
|
|
|
OAuth2Authorization.Token<OidcIdToken> oidcIdToken = authorization.getToken(OidcIdToken.class); |
|
|
|
List<SqlParameterValue> oidcIdTokenSqlParameters = toSqlParameterList("oidc_id_token_value", |
|
|
|
List<SqlParameterValue> oidcIdTokenSqlParameters = toSqlParameterList(OIDC_ID_TOKEN_VALUE, |
|
|
|
"oidc_id_token_metadata", oidcIdToken); |
|
|
|
OIDC_ID_TOKEN_METADATA, oidcIdToken); |
|
|
|
parameters.addAll(oidcIdTokenSqlParameters); |
|
|
|
parameters.addAll(oidcIdTokenSqlParameters); |
|
|
|
|
|
|
|
|
|
|
|
OAuth2Authorization.Token<OAuth2RefreshToken> refreshToken = authorization.getRefreshToken(); |
|
|
|
OAuth2Authorization.Token<OAuth2RefreshToken> refreshToken = authorization.getRefreshToken(); |
|
|
|
List<SqlParameterValue> refreshTokenSqlParameters = toSqlParameterList("refresh_token_value", |
|
|
|
List<SqlParameterValue> refreshTokenSqlParameters = toSqlParameterList(REFRESH_TOKEN_VALUE, |
|
|
|
"refresh_token_metadata", refreshToken); |
|
|
|
REFRESH_TOKEN_METADATA, refreshToken); |
|
|
|
parameters.addAll(refreshTokenSqlParameters); |
|
|
|
parameters.addAll(refreshTokenSqlParameters); |
|
|
|
|
|
|
|
|
|
|
|
OAuth2Authorization.Token<OAuth2UserCode> userCode = authorization.getToken(OAuth2UserCode.class); |
|
|
|
OAuth2Authorization.Token<OAuth2UserCode> userCode = authorization.getToken(OAuth2UserCode.class); |
|
|
|
List<SqlParameterValue> userCodeSqlParameters = toSqlParameterList("user_code_value", "user_code_metadata", |
|
|
|
List<SqlParameterValue> userCodeSqlParameters = toSqlParameterList(USER_CODE_VALUE, USER_CODE_METADATA, |
|
|
|
userCode); |
|
|
|
userCode); |
|
|
|
parameters.addAll(userCodeSqlParameters); |
|
|
|
parameters.addAll(userCodeSqlParameters); |
|
|
|
|
|
|
|
|
|
|
|
OAuth2Authorization.Token<OAuth2DeviceCode> deviceCode = authorization.getToken(OAuth2DeviceCode.class); |
|
|
|
OAuth2Authorization.Token<OAuth2DeviceCode> deviceCode = authorization.getToken(OAuth2DeviceCode.class); |
|
|
|
List<SqlParameterValue> deviceCodeSqlParameters = toSqlParameterList("device_code_value", |
|
|
|
List<SqlParameterValue> deviceCodeSqlParameters = toSqlParameterList(DEVICE_CODE_VALUE, |
|
|
|
"device_code_metadata", deviceCode); |
|
|
|
DEVICE_CODE_METADATA, deviceCode); |
|
|
|
parameters.addAll(deviceCodeSqlParameters); |
|
|
|
parameters.addAll(deviceCodeSqlParameters); |
|
|
|
|
|
|
|
|
|
|
|
return parameters; |
|
|
|
return parameters; |
|
|
|
|