Skip to content

Commit 43fbafe

Browse files
committed
Merge branch '1.1.x' into 1.2.x
2 parents 9be1438 + 00e7d67 commit 43fbafe

File tree

158 files changed

+1594
-1617
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

158 files changed

+1594
-1617
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0"?>
2+
<!DOCTYPE suppressions PUBLIC
3+
"-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
4+
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
5+
<suppressions>
6+
<suppress files=".*" checks="JavadocStyle" />
7+
<suppress files="SpringAuthorizationServerVersion\.java" checks="HideUtilityClassConstructor"/>
8+
</suppressions>

etc/checkstyle/checkstyle.xml

Lines changed: 12 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,18 @@
11
<?xml version="1.0"?>
2-
<!DOCTYPE module PUBLIC "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
3-
"https://www.puppycrawl.com/dtds/configuration_1_3.dtd">
4-
<module name="Checker">
5-
<!-- Suppressions -->
2+
<!DOCTYPE module PUBLIC
3+
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
4+
"https://checkstyle.org/dtds/configuration_1_3.dtd">
5+
<module name="com.puppycrawl.tools.checkstyle.Checker">
66
<module name="SuppressionFilter">
7-
<property name="file" value="${config_loc}/suppressions.xml"/>
7+
<property name="file"
8+
value="${config_loc}/checkstyle-suppressions.xml" />
89
</module>
9-
10-
<!-- Root Checks -->
11-
<module name="RegexpHeader">
12-
<property name="headerFile" value="${config_loc}/header.txt"/>
13-
<property name="fileExtensions" value="java"/>
10+
<module name="com.puppycrawl.tools.checkstyle.checks.header.RegexpHeaderCheck">
11+
<property name="headerFile" value="${config_loc}/header.txt" />
12+
<property name="fileExtensions" value="java" />
1413
</module>
15-
16-
<!-- Root Checks -->
17-
<module name="TreeWalker">
18-
<!-- Annotations -->
19-
<module name="MissingOverrideCheck" />
20-
21-
<!-- Coding -->
22-
<module name="EmptyStatementCheck" />
23-
<module name="RedundantModifier" />
24-
25-
<!-- Imports -->
26-
<module name="UnusedImportsCheck">
27-
<property name="processJavadoc" value="true" />
28-
</module>
29-
30-
<!-- Regexp -->
31-
<module name="RegexpSinglelineJava">
32-
<property name="format" value="^\t* +\t*\S"/>
33-
<property name="message" value="Line has leading space characters; indentation should be performed with tabs only."/>
34-
<property name="ignoreComments" value="true"/>
35-
</module>
36-
<module name="RegexpSinglelineJava">
37-
<property name="maximum" value="0"/>
38-
<property name="format" value="org\.junit\.Assert\.assert"/>
39-
<property name="message" value="Please use AssertJ imports."/>
40-
<property name="ignoreComments" value="true"/>
41-
</module>
42-
<module name="Regexp">
43-
<property name="format" value="[ \t]+$"/>
44-
<property name="illegalPattern" value="true"/>
45-
<property name="message" value="Trailing whitespace"/>
46-
</module>
47-
48-
<!-- Whitespace -->
49-
<module name="WhitespaceAfterCheck" />
14+
<module name="io.spring.javaformat.checkstyle.SpringChecks">
15+
<property name="excludes" value="io.spring.javaformat.checkstyle.check.SpringHeaderCheck" />
16+
<property name="excludes" value="com.puppycrawl.tools.checkstyle.checks.javadoc.JavadocPackageCheck" />
5017
</module>
5118
</module>

etc/checkstyle/header.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
^\Q/*\E$
2-
^\Q * Copyright\E (\d{4}(\-\d{4})? the original author or authors\.|(\d{4}, )*(\d{4}) Acegi Technology Pty Limited)$
2+
^\Q * Copyright \E20\d\d\-20\d\d\Q the original author or authors.\E$
33
^\Q *\E$
44
^\Q * Licensed under the Apache License, Version 2.0 (the "License");\E$
55
^\Q * you may not use this file except in compliance with the License.\E$

etc/checkstyle/suppressions.xml

Lines changed: 0 additions & 20 deletions
This file was deleted.

oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/AbstractOAuth2AuthorizationServerMetadata.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
* describes about its configuration.
3636
*
3737
* @author Daniel Garnier-Moiroux
38-
* @see OAuth2AuthorizationServerMetadataClaimAccessor
3938
* @since 0.1.1
39+
* @see OAuth2AuthorizationServerMetadataClaimAccessor
4040
* @see <a target="_blank" href="https://tools.ietf.org/html/rfc8414#section-3.2">3.2.
4141
* Authorization Server Metadata Response</a>
4242
* @see <a target="_blank" href=
@@ -68,8 +68,11 @@ public Map<String, Object> getClaims() {
6868

6969
/**
7070
* A builder for subclasses of {@link AbstractOAuth2AuthorizationServerMetadata}.
71+
*
72+
* @param <T> the type of object
73+
* @param <B> the type of the builder
7174
*/
72-
protected static abstract class AbstractBuilder<T extends AbstractOAuth2AuthorizationServerMetadata, B extends AbstractBuilder<T, B>> {
75+
protected abstract static class AbstractBuilder<T extends AbstractOAuth2AuthorizationServerMetadata, B extends AbstractBuilder<T, B>> {
7376

7477
private final Map<String, Object> claims = new LinkedHashMap<>();
7578

@@ -492,15 +495,15 @@ protected void validate() {
492495
private void addClaimToClaimList(String name, String value) {
493496
Assert.hasText(name, "name cannot be empty");
494497
Assert.notNull(value, "value cannot be null");
495-
getClaims().computeIfAbsent(name, k -> new LinkedList<String>());
498+
getClaims().computeIfAbsent(name, (k) -> new LinkedList<String>());
496499
((List<String>) getClaims().get(name)).add(value);
497500
}
498501

499502
@SuppressWarnings("unchecked")
500503
private void acceptClaimValues(String name, Consumer<List<String>> valuesConsumer) {
501504
Assert.hasText(name, "name cannot be empty");
502505
Assert.notNull(valuesConsumer, "valuesConsumer cannot be null");
503-
getClaims().computeIfAbsent(name, k -> new LinkedList<String>());
506+
getClaims().computeIfAbsent(name, (k) -> new LinkedList<String>());
504507
List<String> values = (List<String>) getClaims().get(name);
505508
valuesConsumer.accept(values);
506509
}

oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/InMemoryOAuth2AuthorizationConsentService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public InMemoryOAuth2AuthorizationConsentService(OAuth2AuthorizationConsent... a
6363
*/
6464
public InMemoryOAuth2AuthorizationConsentService(List<OAuth2AuthorizationConsent> authorizationConsents) {
6565
Assert.notNull(authorizationConsents, "authorizationConsents cannot be null");
66-
authorizationConsents.forEach(authorizationConsent -> {
66+
authorizationConsents.forEach((authorizationConsent) -> {
6767
Assert.notNull(authorizationConsent, "authorizationConsent cannot be null");
6868
int id = getId(authorizationConsent);
6969
Assert.isTrue(!this.authorizationConsents.containsKey(id),

oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/InMemoryOAuth2AuthorizationService.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ public InMemoryOAuth2AuthorizationService(OAuth2Authorization... authorizations)
9494
*/
9595
public InMemoryOAuth2AuthorizationService(List<OAuth2Authorization> authorizations) {
9696
Assert.notNull(authorizations, "authorizations cannot be null");
97-
authorizations.forEach(authorization -> {
97+
authorizations.forEach((authorization) -> {
9898
Assert.notNull(authorization, "authorization cannot be null");
9999
Assert.isTrue(!this.authorizations.containsKey(authorization.getId()),
100100
"The authorization must be unique. Found duplicate identifier: " + authorization.getId());
@@ -129,7 +129,7 @@ public void remove(OAuth2Authorization authorization) {
129129
public OAuth2Authorization findById(String id) {
130130
Assert.hasText(id, "id cannot be empty");
131131
OAuth2Authorization authorization = this.authorizations.get(id);
132-
return authorization != null ? authorization : this.initializedAuthorizations.get(id);
132+
return (authorization != null) ? authorization : this.initializedAuthorizations.get(id);
133133
}
134134

135135
@Nullable
@@ -164,19 +164,26 @@ private static boolean hasToken(OAuth2Authorization authorization, String token,
164164
matchesRefreshToken(authorization, token) ||
165165
matchesDeviceCode(authorization, token) ||
166166
matchesUserCode(authorization, token);
167-
} else if (OAuth2ParameterNames.STATE.equals(tokenType.getValue())) {
167+
}
168+
else if (OAuth2ParameterNames.STATE.equals(tokenType.getValue())) {
168169
return matchesState(authorization, token);
169-
} else if (OAuth2ParameterNames.CODE.equals(tokenType.getValue())) {
170+
}
171+
else if (OAuth2ParameterNames.CODE.equals(tokenType.getValue())) {
170172
return matchesAuthorizationCode(authorization, token);
171-
} else if (OAuth2TokenType.ACCESS_TOKEN.equals(tokenType)) {
173+
}
174+
else if (OAuth2TokenType.ACCESS_TOKEN.equals(tokenType)) {
172175
return matchesAccessToken(authorization, token);
173-
} else if (OidcParameterNames.ID_TOKEN.equals(tokenType.getValue())) {
176+
}
177+
else if (OidcParameterNames.ID_TOKEN.equals(tokenType.getValue())) {
174178
return matchesIdToken(authorization, token);
175-
} else if (OAuth2TokenType.REFRESH_TOKEN.equals(tokenType)) {
179+
}
180+
else if (OAuth2TokenType.REFRESH_TOKEN.equals(tokenType)) {
176181
return matchesRefreshToken(authorization, token);
177-
} else if (OAuth2ParameterNames.DEVICE_CODE.equals(tokenType.getValue())) {
182+
}
183+
else if (OAuth2ParameterNames.DEVICE_CODE.equals(tokenType.getValue())) {
178184
return matchesDeviceCode(authorization, token);
179-
} else if (OAuth2ParameterNames.USER_CODE.equals(tokenType.getValue())) {
185+
}
186+
else if (OAuth2ParameterNames.USER_CODE.equals(tokenType.getValue())) {
180187
return matchesUserCode(authorization, token);
181188
}
182189
// @formatter:on

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

Lines changed: 64 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,70 @@ protected final Function<OAuth2Authorization, List<SqlParameterValue>> getAuthor
379379
return this.authorizationParametersMapper;
380380
}
381381

382+
private static void initColumnMetadata(JdbcOperations jdbcOperations) {
383+
columnMetadataMap = new HashMap<>();
384+
ColumnMetadata columnMetadata;
385+
386+
columnMetadata = getColumnMetadata(jdbcOperations, "attributes", Types.BLOB);
387+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
388+
columnMetadata = getColumnMetadata(jdbcOperations, "authorization_code_value", Types.BLOB);
389+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
390+
columnMetadata = getColumnMetadata(jdbcOperations, "authorization_code_metadata", Types.BLOB);
391+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
392+
columnMetadata = getColumnMetadata(jdbcOperations, "access_token_value", Types.BLOB);
393+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
394+
columnMetadata = getColumnMetadata(jdbcOperations, "access_token_metadata", Types.BLOB);
395+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
396+
columnMetadata = getColumnMetadata(jdbcOperations, "oidc_id_token_value", Types.BLOB);
397+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
398+
columnMetadata = getColumnMetadata(jdbcOperations, "oidc_id_token_metadata", Types.BLOB);
399+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
400+
columnMetadata = getColumnMetadata(jdbcOperations, "refresh_token_value", Types.BLOB);
401+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
402+
columnMetadata = getColumnMetadata(jdbcOperations, "refresh_token_metadata", Types.BLOB);
403+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
404+
columnMetadata = getColumnMetadata(jdbcOperations, "user_code_value", Types.BLOB);
405+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
406+
columnMetadata = getColumnMetadata(jdbcOperations, "user_code_metadata", Types.BLOB);
407+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
408+
columnMetadata = getColumnMetadata(jdbcOperations, "device_code_value", Types.BLOB);
409+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
410+
columnMetadata = getColumnMetadata(jdbcOperations, "device_code_metadata", Types.BLOB);
411+
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
412+
}
413+
414+
private static ColumnMetadata getColumnMetadata(JdbcOperations jdbcOperations, String columnName,
415+
int defaultDataType) {
416+
Integer dataType = jdbcOperations.execute((ConnectionCallback<Integer>) (conn) -> {
417+
DatabaseMetaData databaseMetaData = conn.getMetaData();
418+
ResultSet rs = databaseMetaData.getColumns(null, null, TABLE_NAME, columnName);
419+
if (rs.next()) {
420+
return rs.getInt("DATA_TYPE");
421+
}
422+
// NOTE: (Applies to HSQL)
423+
// When a database object is created with one of the CREATE statements or
424+
// renamed with the ALTER statement,
425+
// if the name is enclosed in double quotes, the exact name is used as the
426+
// case-normal form.
427+
// But if it is not enclosed in double quotes,
428+
// the name is converted to uppercase and this uppercase version is stored in
429+
// the database as the case-normal form.
430+
rs = databaseMetaData.getColumns(null, null, TABLE_NAME.toUpperCase(), columnName.toUpperCase());
431+
if (rs.next()) {
432+
return rs.getInt("DATA_TYPE");
433+
}
434+
return null;
435+
});
436+
return new ColumnMetadata(columnName, (dataType != null) ? dataType : defaultDataType);
437+
}
438+
439+
private static SqlParameterValue mapToSqlParameter(String columnName, String value) {
440+
ColumnMetadata columnMetadata = columnMetadataMap.get(columnName);
441+
return (Types.BLOB == columnMetadata.getDataType() && StringUtils.hasText(value))
442+
? new SqlParameterValue(Types.BLOB, value.getBytes(StandardCharsets.UTF_8))
443+
: new SqlParameterValue(columnMetadata.getDataType(), value);
444+
}
445+
382446
/**
383447
* The default {@link RowMapper} that maps the current row in
384448
* {@code java.sql.ResultSet} to {@link OAuth2Authorization}.
@@ -758,68 +822,4 @@ private int getDataType() {
758822

759823
}
760824

761-
private static void initColumnMetadata(JdbcOperations jdbcOperations) {
762-
columnMetadataMap = new HashMap<>();
763-
ColumnMetadata columnMetadata;
764-
765-
columnMetadata = getColumnMetadata(jdbcOperations, "attributes", Types.BLOB);
766-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
767-
columnMetadata = getColumnMetadata(jdbcOperations, "authorization_code_value", Types.BLOB);
768-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
769-
columnMetadata = getColumnMetadata(jdbcOperations, "authorization_code_metadata", Types.BLOB);
770-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
771-
columnMetadata = getColumnMetadata(jdbcOperations, "access_token_value", Types.BLOB);
772-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
773-
columnMetadata = getColumnMetadata(jdbcOperations, "access_token_metadata", Types.BLOB);
774-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
775-
columnMetadata = getColumnMetadata(jdbcOperations, "oidc_id_token_value", Types.BLOB);
776-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
777-
columnMetadata = getColumnMetadata(jdbcOperations, "oidc_id_token_metadata", Types.BLOB);
778-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
779-
columnMetadata = getColumnMetadata(jdbcOperations, "refresh_token_value", Types.BLOB);
780-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
781-
columnMetadata = getColumnMetadata(jdbcOperations, "refresh_token_metadata", Types.BLOB);
782-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
783-
columnMetadata = getColumnMetadata(jdbcOperations, "user_code_value", Types.BLOB);
784-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
785-
columnMetadata = getColumnMetadata(jdbcOperations, "user_code_metadata", Types.BLOB);
786-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
787-
columnMetadata = getColumnMetadata(jdbcOperations, "device_code_value", Types.BLOB);
788-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
789-
columnMetadata = getColumnMetadata(jdbcOperations, "device_code_metadata", Types.BLOB);
790-
columnMetadataMap.put(columnMetadata.getColumnName(), columnMetadata);
791-
}
792-
793-
private static ColumnMetadata getColumnMetadata(JdbcOperations jdbcOperations, String columnName,
794-
int defaultDataType) {
795-
Integer dataType = jdbcOperations.execute((ConnectionCallback<Integer>) conn -> {
796-
DatabaseMetaData databaseMetaData = conn.getMetaData();
797-
ResultSet rs = databaseMetaData.getColumns(null, null, TABLE_NAME, columnName);
798-
if (rs.next()) {
799-
return rs.getInt("DATA_TYPE");
800-
}
801-
// NOTE: (Applies to HSQL)
802-
// When a database object is created with one of the CREATE statements or
803-
// renamed with the ALTER statement,
804-
// if the name is enclosed in double quotes, the exact name is used as the
805-
// case-normal form.
806-
// But if it is not enclosed in double quotes,
807-
// the name is converted to uppercase and this uppercase version is stored in
808-
// the database as the case-normal form.
809-
rs = databaseMetaData.getColumns(null, null, TABLE_NAME.toUpperCase(), columnName.toUpperCase());
810-
if (rs.next()) {
811-
return rs.getInt("DATA_TYPE");
812-
}
813-
return null;
814-
});
815-
return new ColumnMetadata(columnName, dataType != null ? dataType : defaultDataType);
816-
}
817-
818-
private static SqlParameterValue mapToSqlParameter(String columnName, String value) {
819-
ColumnMetadata columnMetadata = columnMetadataMap.get(columnName);
820-
return Types.BLOB == columnMetadata.getDataType() && StringUtils.hasText(value)
821-
? new SqlParameterValue(Types.BLOB, value.getBytes(StandardCharsets.UTF_8))
822-
: new SqlParameterValue(columnMetadata.getDataType(), value);
823-
}
824-
825825
}

oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/OAuth2Authorization.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ public Token<OAuth2RefreshToken> getRefreshToken() {
144144
public <T extends OAuth2Token> Token<T> getToken(Class<T> tokenType) {
145145
Assert.notNull(tokenType, "tokenType cannot be null");
146146
Token<?> token = this.tokens.get(tokenType);
147-
return token != null ? (Token<T>) token : null;
147+
return (token != null) ? (Token<T>) token : null;
148148
}
149149

150150
/**
@@ -234,12 +234,13 @@ public static Builder from(OAuth2Authorization authorization) {
234234
.authorizationGrantType(authorization.getAuthorizationGrantType())
235235
.authorizedScopes(authorization.getAuthorizedScopes())
236236
.tokens(authorization.tokens)
237-
.attributes(attrs -> attrs.putAll(authorization.getAttributes()));
237+
.attributes((attrs) -> attrs.putAll(authorization.getAttributes()));
238238
}
239239

240240
/**
241241
* A holder of an OAuth 2.0 Token and it's associated metadata.
242242
*
243+
* @param <T> the type of the {@link OAuth2Token}
243244
* @author Joe Grandja
244245
* @since 0.1.0
245246
*/

oauth2-authorization-server/src/main/java/org/springframework/security/oauth2/server/authorization/OAuth2AuthorizationConsentService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
*/
1616
package org.springframework.security.oauth2.server.authorization;
1717

18+
import java.security.Principal;
19+
1820
import org.springframework.lang.Nullable;
1921
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
2022

21-
import java.security.Principal;
22-
2323
/**
2424
* Implementations of this interface are responsible for the management of
2525
* {@link OAuth2AuthorizationConsent OAuth 2.0 Authorization Consent(s)}.

0 commit comments

Comments
 (0)