From cd6f33c03e2e9de06888f47988a56ec090207fd2 Mon Sep 17 00:00:00 2001 From: Seongguk Jeong Date: Sun, 9 Jul 2023 23:53:00 +0900 Subject: [PATCH 1/6] Using putIfAbsent instead of put --- .../annotation/web/builders/FilterOrderRegistration.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterOrderRegistration.java b/config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterOrderRegistration.java index cddb6ce5e4..09d9766f11 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterOrderRegistration.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterOrderRegistration.java @@ -127,11 +127,7 @@ final class FilterOrderRegistration { * @param position the position to associate with the {@link Filter} */ void put(Class filter, int position) { - String className = filter.getName(); - if (this.filterToOrder.containsKey(className)) { - return; - } - this.filterToOrder.put(className, position); + this.filterToOrder.putIfAbsent(filter.getName(), position); } /** From ea19f82b8a526d920ff1e1c2830d5e99d8124472 Mon Sep 17 00:00:00 2001 From: Seongguk Jeong Date: Sun, 9 Jul 2023 23:53:53 +0900 Subject: [PATCH 2/6] Using pattern matching for instanceof --- .../AbstractAuthenticationToken.java | 15 +++++++-------- .../AnonymousAuthenticationToken.java | 3 +-- .../web/jaasapi/JaasApiIntegrationFilter.java | 3 +-- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java b/core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java index 78cec88812..cfd066a912 100644 --- a/core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java +++ b/core/src/main/java/org/springframework/security/authentication/AbstractAuthenticationToken.java @@ -68,14 +68,14 @@ public abstract class AbstractAuthenticationToken implements Authentication, Cre @Override public String getName() { - if (this.getPrincipal() instanceof UserDetails) { - return ((UserDetails) this.getPrincipal()).getUsername(); + if (this.getPrincipal() instanceof UserDetails userDetails) { + return userDetails.getUsername(); } - if (this.getPrincipal() instanceof AuthenticatedPrincipal) { - return ((AuthenticatedPrincipal) this.getPrincipal()).getName(); + if (this.getPrincipal() instanceof AuthenticatedPrincipal authenticatedPrincipal) { + return authenticatedPrincipal.getName(); } - if (this.getPrincipal() instanceof Principal) { - return ((Principal) this.getPrincipal()).getName(); + if (this.getPrincipal() instanceof Principal principal) { + return principal.getName(); } return (this.getPrincipal() == null) ? "" : this.getPrincipal().toString(); } @@ -119,10 +119,9 @@ public abstract class AbstractAuthenticationToken implements Authentication, Cre @Override public boolean equals(Object obj) { - if (!(obj instanceof AbstractAuthenticationToken)) { + if (!(obj instanceof AbstractAuthenticationToken test)) { return false; } - AbstractAuthenticationToken test = (AbstractAuthenticationToken) obj; if (!this.authorities.equals(test.authorities)) { return false; } diff --git a/core/src/main/java/org/springframework/security/authentication/AnonymousAuthenticationToken.java b/core/src/main/java/org/springframework/security/authentication/AnonymousAuthenticationToken.java index 2e92d105f7..2e2a47b7e4 100644 --- a/core/src/main/java/org/springframework/security/authentication/AnonymousAuthenticationToken.java +++ b/core/src/main/java/org/springframework/security/authentication/AnonymousAuthenticationToken.java @@ -74,8 +74,7 @@ public class AnonymousAuthenticationToken extends AbstractAuthenticationToken im if (!super.equals(obj)) { return false; } - if (obj instanceof AnonymousAuthenticationToken) { - AnonymousAuthenticationToken test = (AnonymousAuthenticationToken) obj; + if (obj instanceof AnonymousAuthenticationToken test) { return (this.getKeyHash() == test.getKeyHash()); } return false; diff --git a/web/src/main/java/org/springframework/security/web/jaasapi/JaasApiIntegrationFilter.java b/web/src/main/java/org/springframework/security/web/jaasapi/JaasApiIntegrationFilter.java index be8b52ebda..a01ce81e95 100644 --- a/web/src/main/java/org/springframework/security/web/jaasapi/JaasApiIntegrationFilter.java +++ b/web/src/main/java/org/springframework/security/web/jaasapi/JaasApiIntegrationFilter.java @@ -127,10 +127,9 @@ public class JaasApiIntegrationFilter extends GenericFilterBean { if (!authentication.isAuthenticated()) { return null; } - if (!(authentication instanceof JaasAuthenticationToken)) { + if (!(authentication instanceof JaasAuthenticationToken token)) { return null; } - JaasAuthenticationToken token = (JaasAuthenticationToken) authentication; LoginContext loginContext = token.getLoginContext(); if (loginContext == null) { return null; From de1357cbd199ded1790e696db7dc5c32934cadb8 Mon Sep 17 00:00:00 2001 From: Seongguk Jeong Date: Mon, 17 Jul 2023 22:15:41 +0900 Subject: [PATCH 3/6] Refactor equals method To use the accessor method for username instead of directly accessing the attribute. --- .../org/springframework/security/core/userdetails/User.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/springframework/security/core/userdetails/User.java b/core/src/main/java/org/springframework/security/core/userdetails/User.java index 141f65dde8..5d164bea76 100644 --- a/core/src/main/java/org/springframework/security/core/userdetails/User.java +++ b/core/src/main/java/org/springframework/security/core/userdetails/User.java @@ -179,8 +179,8 @@ public class User implements UserDetails, CredentialsContainer { */ @Override public boolean equals(Object obj) { - if (obj instanceof User) { - return this.username.equals(((User) obj).username); + if (obj instanceof User user) { + return this.username.equals(user.getUsername()); } return false; } From 8df8d4022efe3783912a5c033e8ffa8917d25d27 Mon Sep 17 00:00:00 2001 From: Seongguk Jeong Date: Mon, 17 Jul 2023 22:16:27 +0900 Subject: [PATCH 4/6] Fix documentation typo changed "user name" to "username" --- .../org/springframework/security/core/userdetails/User.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/springframework/security/core/userdetails/User.java b/core/src/main/java/org/springframework/security/core/userdetails/User.java index 5d164bea76..2c518fd7d8 100644 --- a/core/src/main/java/org/springframework/security/core/userdetails/User.java +++ b/core/src/main/java/org/springframework/security/core/userdetails/User.java @@ -208,7 +208,7 @@ public class User implements UserDetails, CredentialsContainer { } /** - * Creates a UserBuilder with a specified user name + * Creates a UserBuilder with a specified username * @param username the username to use * @return the UserBuilder */ From bcd4dcc15c7106920b49a698e71048e36006de03 Mon Sep 17 00:00:00 2001 From: Seongguk Jeong Date: Tue, 18 Jul 2023 22:11:33 +0900 Subject: [PATCH 5/6] Refactor equals method Using the accessor method for fields instead of directly access --- .../authentication/jaas/JaasGrantedAuthority.java | 5 ++--- .../security/core/authority/SimpleGrantedAuthority.java | 6 +++--- .../security/ldap/userdetails/LdapAuthority.java | 9 ++++----- .../switchuser/SwitchUserGrantedAuthority.java | 5 ++--- 4 files changed, 11 insertions(+), 14 deletions(-) diff --git a/core/src/main/java/org/springframework/security/authentication/jaas/JaasGrantedAuthority.java b/core/src/main/java/org/springframework/security/authentication/jaas/JaasGrantedAuthority.java index d0d76b89d1..8096947840 100644 --- a/core/src/main/java/org/springframework/security/authentication/jaas/JaasGrantedAuthority.java +++ b/core/src/main/java/org/springframework/security/authentication/jaas/JaasGrantedAuthority.java @@ -58,9 +58,8 @@ public final class JaasGrantedAuthority implements GrantedAuthority { if (this == obj) { return true; } - if (obj instanceof JaasGrantedAuthority) { - JaasGrantedAuthority jga = (JaasGrantedAuthority) obj; - return this.role.equals(jga.role) && this.principal.equals(jga.principal); + if (obj instanceof JaasGrantedAuthority jga) { + return this.role.equals(jga.getAuthority()) && this.principal.equals(jga.getPrincipal()); } return false; } diff --git a/core/src/main/java/org/springframework/security/core/authority/SimpleGrantedAuthority.java b/core/src/main/java/org/springframework/security/core/authority/SimpleGrantedAuthority.java index 71719d4801..54b889e617 100644 --- a/core/src/main/java/org/springframework/security/core/authority/SimpleGrantedAuthority.java +++ b/core/src/main/java/org/springframework/security/core/authority/SimpleGrantedAuthority.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,8 +50,8 @@ public final class SimpleGrantedAuthority implements GrantedAuthority { if (this == obj) { return true; } - if (obj instanceof SimpleGrantedAuthority) { - return this.role.equals(((SimpleGrantedAuthority) obj).role); + if (obj instanceof SimpleGrantedAuthority sga) { + return this.role.equals(sga.getAuthority()); } return false; } diff --git a/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapAuthority.java b/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapAuthority.java index 9e89a5d631..e08678b2a4 100644 --- a/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapAuthority.java +++ b/ldap/src/main/java/org/springframework/security/ldap/userdetails/LdapAuthority.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -113,14 +113,13 @@ public class LdapAuthority implements GrantedAuthority { if (this == obj) { return true; } - if (!(obj instanceof LdapAuthority)) { + if (!(obj instanceof LdapAuthority other)) { return false; } - LdapAuthority other = (LdapAuthority) obj; - if (!this.dn.equals(other.dn)) { + if (!this.dn.equals(other.getDn())) { return false; } - return this.role.equals(other.role); + return this.role.equals(other.getAuthority()); } @Override diff --git a/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserGrantedAuthority.java b/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserGrantedAuthority.java index a05155e9e0..4be683e554 100644 --- a/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserGrantedAuthority.java +++ b/web/src/main/java/org/springframework/security/web/authentication/switchuser/SwitchUserGrantedAuthority.java @@ -64,9 +64,8 @@ public final class SwitchUserGrantedAuthority implements GrantedAuthority { if (this == obj) { return true; } - if (obj instanceof SwitchUserGrantedAuthority) { - SwitchUserGrantedAuthority swa = (SwitchUserGrantedAuthority) obj; - return this.role.equals(swa.role) && this.source.equals(swa.source); + if (obj instanceof SwitchUserGrantedAuthority swa) { + return this.role.equals(swa.getAuthority()) && this.source.equals(swa.getSource()); } return false; } From 8d4a0248093060b0b40547eff20c90bdb564b4ed Mon Sep 17 00:00:00 2001 From: Josh Cummings Date: Mon, 7 Aug 2023 16:00:56 -0600 Subject: [PATCH 6/6] Update Copyright PR gh-13472 --- .../config/annotation/web/builders/FilterOrderRegistration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterOrderRegistration.java b/config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterOrderRegistration.java index 09d9766f11..25d7f95287 100644 --- a/config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterOrderRegistration.java +++ b/config/src/main/java/org/springframework/security/config/annotation/web/builders/FilterOrderRegistration.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2021 the original author or authors. + * Copyright 2002-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License.