Skip to content

Commit f195488

Browse files
committed
Polish JdbcRegisteredClientRepository
Issue spring-projectsgh-291
1 parent 998acb4 commit f195488

File tree

8 files changed

+395
-400
lines changed

8 files changed

+395
-400
lines changed

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

Lines changed: 145 additions & 162 deletions
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
* Copyright 2020-2021 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.springframework.security.oauth2.server.authorization.jackson2;
17+
18+
import java.time.Duration;
19+
20+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
21+
import com.fasterxml.jackson.annotation.JsonCreator;
22+
import com.fasterxml.jackson.annotation.JsonGetter;
23+
import com.fasterxml.jackson.annotation.JsonProperty;
24+
import com.fasterxml.jackson.annotation.JsonTypeInfo;
25+
26+
/**
27+
* This mixin class is used to serialize/deserialize {@link Duration}.
28+
*
29+
* @author Joe Grandja
30+
* @since 0.1.2
31+
* @see Duration
32+
*/
33+
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
34+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE,
35+
isGetterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE,
36+
creatorVisibility = JsonAutoDetect.Visibility.NONE)
37+
abstract class DurationMixin {
38+
39+
@JsonCreator
40+
static void ofSeconds(@JsonProperty("seconds") long seconds, @JsonProperty("nano") long nanoAdjustment) {
41+
}
42+
43+
@JsonGetter("seconds")
44+
abstract long getSeconds();
45+
46+
@JsonGetter("nano")
47+
abstract int getNano();
48+
49+
}

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

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

18+
import java.time.Duration;
1819
import java.util.Collections;
1920
import java.util.HashSet;
2021

@@ -23,6 +24,7 @@
2324

2425
import org.springframework.security.jackson2.SecurityJackson2Modules;
2526
import org.springframework.security.oauth2.core.endpoint.OAuth2AuthorizationRequest;
27+
import org.springframework.security.oauth2.jose.jws.SignatureAlgorithm;
2628

2729
/**
2830
* Jackson {@code Module} for {@code spring-authorization-server}, that registers the
@@ -32,6 +34,8 @@
3234
* <li>{@link UnmodifiableMapMixin}</li>
3335
* <li>{@link HashSetMixin}</li>
3436
* <li>{@link OAuth2AuthorizationRequestMixin}</li>
37+
* <li>{@link DurationMixin}</li>
38+
* <li>{@link SignatureAlgorithmMixin}</li>
3539
* </ul>
3640
*
3741
* If not already enabled, default typing will be automatically enabled as type info is
@@ -52,6 +56,8 @@
5256
* @see UnmodifiableMapMixin
5357
* @see HashSetMixin
5458
* @see OAuth2AuthorizationRequestMixin
59+
* @see DurationMixin
60+
* @see SignatureAlgorithmMixin
5561
*/
5662
public class OAuth2AuthorizationServerJackson2Module extends SimpleModule {
5763

@@ -66,6 +72,8 @@ public void setupModule(SetupContext context) {
6672
UnmodifiableMapMixin.class);
6773
context.setMixInAnnotations(HashSet.class, HashSetMixin.class);
6874
context.setMixInAnnotations(OAuth2AuthorizationRequest.class, OAuth2AuthorizationRequestMixin.class);
75+
context.setMixInAnnotations(Duration.class, DurationMixin.class);
76+
context.setMixInAnnotations(SignatureAlgorithm.class, SignatureAlgorithmMixin.class);
6977
}
7078

7179
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* Copyright 2020-2021 the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package org.springframework.security.oauth2.server.authorization.jackson2;
17+
18+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
19+
import com.fasterxml.jackson.annotation.JsonTypeInfo;
20+
21+
import org.springframework.security.oauth2.jose.jws.SignatureAlgorithm;
22+
23+
/**
24+
* This mixin class is used to serialize/deserialize {@link SignatureAlgorithm}.
25+
*
26+
* @author Joe Grandja
27+
* @since 0.1.2
28+
* @see SignatureAlgorithm
29+
*/
30+
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
31+
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE,
32+
isGetterVisibility = JsonAutoDetect.Visibility.NONE)
33+
abstract class SignatureAlgorithmMixin {
34+
}

oauth2-authorization-server/src/main/resources/org/springframework/security/oauth2/server/authorization/client/oauth2-registered-client-schema.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ CREATE TABLE oauth2_registered_client (
44
client_id_issued_at timestamp DEFAULT CURRENT_TIMESTAMP NOT NULL,
55
client_secret varchar(200) DEFAULT NULL,
66
client_secret_expires_at timestamp DEFAULT NULL,
7-
client_name varchar(200),
7+
client_name varchar(200) NOT NULL,
88
client_authentication_methods varchar(1000) NOT NULL,
99
authorization_grant_types varchar(1000) NOT NULL,
10-
redirect_uris varchar(1000) NOT NULL,
10+
redirect_uris varchar(1000) DEFAULT NULL,
1111
scopes varchar(1000) NOT NULL,
12-
client_settings varchar(1000) DEFAULT NULL,
13-
token_settings varchar(1000) DEFAULT NULL,
12+
client_settings varchar(2000) NOT NULL,
13+
token_settings varchar(2000) NOT NULL,
1414
PRIMARY KEY (id)
1515
);

0 commit comments

Comments
 (0)