Skip to content

Commit 8823a12

Browse files
committed
Polish
- Added JavaDoc @SInCE attribute - Added Predicate based test - Adjusted test names Issue gh-13427
1 parent d66f995 commit 8823a12

File tree

4 files changed

+69
-7
lines changed

4 files changed

+69
-7
lines changed

oauth2/oauth2-resource-server/src/main/java/org/springframework/security/oauth2/server/resource/authentication/JwtIssuerAuthenticationManagerResolver.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ public JwtIssuerAuthenticationManagerResolver(Collection<String> trustedIssuers)
9191
* Construct a {@link JwtIssuerAuthenticationManagerResolver} using the provided
9292
* parameters
9393
* @param trustedIssuers an array of trusted issuers
94+
* @since 6.2
9495
*/
9596
public static JwtIssuerAuthenticationManagerResolver fromTrustedIssuers(String... trustedIssuers) {
9697
return fromTrustedIssuers(Set.of(trustedIssuers));
@@ -100,6 +101,7 @@ public static JwtIssuerAuthenticationManagerResolver fromTrustedIssuers(String..
100101
* Construct a {@link JwtIssuerAuthenticationManagerResolver} using the provided
101102
* parameters
102103
* @param trustedIssuers a collection of trusted issuers
104+
* @since 6.2
103105
*/
104106
public static JwtIssuerAuthenticationManagerResolver fromTrustedIssuers(Collection<String> trustedIssuers) {
105107
Assert.notEmpty(trustedIssuers, "trustedIssuers cannot be empty");
@@ -110,6 +112,7 @@ public static JwtIssuerAuthenticationManagerResolver fromTrustedIssuers(Collecti
110112
* Construct a {@link JwtIssuerAuthenticationManagerResolver} using the provided
111113
* parameters
112114
* @param trustedIssuers a predicate to validate issuers
115+
* @since 6.2
113116
*/
114117
public static JwtIssuerAuthenticationManagerResolver fromTrustedIssuers(Predicate<String> trustedIssuers) {
115118
Assert.notNull(trustedIssuers, "trustedIssuers cannot be null");
@@ -225,7 +228,7 @@ public AuthenticationManager resolve(String issuer) {
225228
}
226229
else {
227230
this.logger.debug(LogMessage
228-
.format("Did not resolve AuthenticationManager since issuer '%s' is not trusted", issuer));
231+
.format("Did not resolve AuthenticationManager since issuer is not trusted", issuer));
229232
}
230233
return null;
231234
}

oauth2/oauth2-resource-server/src/main/java/org/springframework/security/oauth2/server/resource/authentication/JwtIssuerReactiveAuthenticationManagerResolver.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ public JwtIssuerReactiveAuthenticationManagerResolver(Collection<String> trusted
9595
* Construct a {@link JwtIssuerReactiveAuthenticationManagerResolver} using the
9696
* provided parameters
9797
* @param trustedIssuers an array of trusted issuers
98+
* @since 6.2
9899
*/
99100
public static JwtIssuerReactiveAuthenticationManagerResolver fromTrustedIssuers(String... trustedIssuers) {
100101
return fromTrustedIssuers(Set.of(trustedIssuers));
@@ -104,6 +105,7 @@ public static JwtIssuerReactiveAuthenticationManagerResolver fromTrustedIssuers(
104105
* Construct a {@link JwtIssuerReactiveAuthenticationManagerResolver} using the
105106
* provided parameters
106107
* @param trustedIssuers a collection of trusted issuers
108+
* @since 6.2
107109
*/
108110
public static JwtIssuerReactiveAuthenticationManagerResolver fromTrustedIssuers(Collection<String> trustedIssuers) {
109111
Assert.notEmpty(trustedIssuers, "trustedIssuers cannot be empty");
@@ -114,6 +116,7 @@ public static JwtIssuerReactiveAuthenticationManagerResolver fromTrustedIssuers(
114116
* Construct a {@link JwtIssuerReactiveAuthenticationManagerResolver} using the
115117
* provided parameters
116118
* @param trustedIssuers a predicate to validate issuers
119+
* @since 6.2
117120
*/
118121
public static JwtIssuerReactiveAuthenticationManagerResolver fromTrustedIssuers(Predicate<String> trustedIssuers) {
119122
Assert.notNull(trustedIssuers, "trustedIssuers cannot be null");
@@ -219,7 +222,7 @@ static class TrustedIssuerJwtAuthenticationManagerResolver
219222
public Mono<ReactiveAuthenticationManager> resolve(String issuer) {
220223
if (!this.trustedIssuer.test(issuer)) {
221224
this.logger.debug(LogMessage
222-
.format("Did not resolve AuthenticationManager since issuer '%s' is not trusted", issuer));
225+
.format("Did not resolve AuthenticationManager since issuer is not trusted", issuer));
223226
return Mono.empty();
224227
}
225228
// @formatter:off

oauth2/oauth2-resource-server/src/test/java/org/springframework/security/oauth2/server/resource/authentication/JwtIssuerAuthenticationManagerResolverTests.java

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,15 @@ public class JwtIssuerAuthenticationManagerResolverTests {
6565
private String noIssuer = jwt("sub", "sub");
6666

6767
@Test
68-
public void resolveWhenUsingTrustedIssuerThenReturnsAuthenticationManager() throws Exception {
68+
public void resolveWhenUsingFromTrustedIssuersThenReturnsAuthenticationManager() throws Exception {
6969
try (MockWebServer server = new MockWebServer()) {
7070
server.start();
7171
String issuer = server.url("").toString();
7272
// @formatter:off
7373
server.enqueue(new MockResponse().setResponseCode(200)
7474
.setHeader("Content-Type", "application/json")
7575
.setBody(String.format(DEFAULT_RESPONSE_TEMPLATE, issuer, issuer)
76-
));
76+
));
7777
server.enqueue(new MockResponse().setResponseCode(200)
7878
.setHeader("Content-Type", "application/json")
7979
.setBody(JWK_SET)
@@ -96,6 +96,38 @@ public void resolveWhenUsingTrustedIssuerThenReturnsAuthenticationManager() thro
9696
}
9797
}
9898

99+
@Test
100+
public void resolveWhenUsingFromTrustedIssuersPredicateThenReturnsAuthenticationManager() throws Exception {
101+
try (MockWebServer server = new MockWebServer()) {
102+
server.start();
103+
String issuer = server.url("").toString();
104+
// @formatter:off
105+
server.enqueue(new MockResponse().setResponseCode(200)
106+
.setHeader("Content-Type", "application/json")
107+
.setBody(String.format(DEFAULT_RESPONSE_TEMPLATE, issuer, issuer)
108+
));
109+
server.enqueue(new MockResponse().setResponseCode(200)
110+
.setHeader("Content-Type", "application/json")
111+
.setBody(JWK_SET)
112+
);
113+
server.enqueue(new MockResponse().setResponseCode(200)
114+
.setHeader("Content-Type", "application/json")
115+
.setBody(JWK_SET)
116+
);
117+
// @formatter:on
118+
JWSObject jws = new JWSObject(new JWSHeader(JWSAlgorithm.RS256),
119+
new Payload(new JSONObject(Collections.singletonMap(JwtClaimNames.ISS, issuer))));
120+
jws.sign(new RSASSASigner(TestKeys.DEFAULT_PRIVATE_KEY));
121+
JwtIssuerAuthenticationManagerResolver authenticationManagerResolver = JwtIssuerAuthenticationManagerResolver
122+
.fromTrustedIssuers(issuer::equals);
123+
Authentication token = withBearerToken(jws.serialize());
124+
AuthenticationManager authenticationManager = authenticationManagerResolver.resolve(null);
125+
assertThat(authenticationManager).isNotNull();
126+
Authentication authentication = authenticationManager.authenticate(token);
127+
assertThat(authentication.isAuthenticated()).isTrue();
128+
}
129+
}
130+
99131
@Test
100132
public void resolveWhednUsingTrustedIssuerThenReturnsAuthenticationManager() throws Exception {
101133
try (MockWebServer server = new MockWebServer()) {
@@ -230,7 +262,7 @@ public void resolveWhenBearerTokenEvilThenGenericException() {
230262
}
231263

232264
@Test
233-
public void constructorWhenNullOrEmptyIssuersThenException() {
265+
public void factoryWhenNullOrEmptyIssuersThenException() {
234266
assertThatIllegalArgumentException()
235267
.isThrownBy(() -> JwtIssuerAuthenticationManagerResolver.fromTrustedIssuers((Predicate<String>) null));
236268
assertThatIllegalArgumentException()

oauth2/oauth2-resource-server/src/test/java/org/springframework/security/oauth2/server/resource/authentication/JwtIssuerReactiveAuthenticationManagerResolverTests.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public class JwtIssuerReactiveAuthenticationManagerResolverTests {
7272
private String noIssuer = jwt("sub", "sub");
7373

7474
@Test
75-
public void resolveWhenUsingTrustedIssuerThenReturnsAuthenticationManager() throws Exception {
75+
public void resolveWhenUsingFromTrustedIssuersThenReturnsAuthenticationManager() throws Exception {
7676
try (MockWebServer server = new MockWebServer()) {
7777
String issuer = server.url("").toString();
7878
server.enqueue(new MockResponse().setResponseCode(200).setHeader("Content-Type", "application/json")
@@ -95,6 +95,30 @@ public void resolveWhenUsingTrustedIssuerThenReturnsAuthenticationManager() thro
9595
}
9696
}
9797

98+
@Test
99+
public void resolveWhenUsingFromTrustedIssuersPredicateThenReturnsAuthenticationManager() throws Exception {
100+
try (MockWebServer server = new MockWebServer()) {
101+
String issuer = server.url("").toString();
102+
server.enqueue(new MockResponse().setResponseCode(200).setHeader("Content-Type", "application/json")
103+
.setBody(String.format(DEFAULT_RESPONSE_TEMPLATE, issuer, issuer)));
104+
server.enqueue(new MockResponse().setResponseCode(200).setHeader("Content-Type", "application/json")
105+
.setBody(JWK_SET));
106+
server.enqueue(new MockResponse().setResponseCode(200).setHeader("Content-Type", "application/json")
107+
.setBody(JWK_SET));
108+
JWSObject jws = new JWSObject(new JWSHeader(JWSAlgorithm.RS256),
109+
new Payload(new JSONObject(Collections.singletonMap(JwtClaimNames.ISS, issuer))));
110+
jws.sign(new RSASSASigner(TestKeys.DEFAULT_PRIVATE_KEY));
111+
JwtIssuerReactiveAuthenticationManagerResolver authenticationManagerResolver = JwtIssuerReactiveAuthenticationManagerResolver
112+
.fromTrustedIssuers(issuer::equals);
113+
ReactiveAuthenticationManager authenticationManager = authenticationManagerResolver.resolve(null).block();
114+
assertThat(authenticationManager).isNotNull();
115+
BearerTokenAuthenticationToken token = withBearerToken(jws.serialize());
116+
Authentication authentication = authenticationManager.authenticate(token).block();
117+
assertThat(authentication).isNotNull();
118+
assertThat(authentication.isAuthenticated()).isTrue();
119+
}
120+
}
121+
98122
// gh-10444
99123
@Test
100124
public void resolveWhednUsingTrustedIssuerThenReturnsAuthenticationManager() throws Exception {
@@ -229,7 +253,7 @@ public void resolveWhenBearerTokenEvilThenGenericException() {
229253
}
230254

231255
@Test
232-
public void constructorWhenNullOrEmptyIssuersThenException() {
256+
public void factoryWhenNullOrEmptyIssuersThenException() {
233257
assertThatIllegalArgumentException().isThrownBy(
234258
() -> JwtIssuerReactiveAuthenticationManagerResolver.fromTrustedIssuers((Predicate<String>) null));
235259
assertThatIllegalArgumentException().isThrownBy(

0 commit comments

Comments
 (0)