Skip to content

Commit 433c064

Browse files
make class package protected and introduce MATCH_NONE
1 parent 3b0cd57 commit 433c064

File tree

3 files changed

+26
-13
lines changed

3 files changed

+26
-13
lines changed

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/saml/SamlPrivateAttributePredicate.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,39 +26,47 @@
2626
* When the setting is configured, the attributes whose {@code Attribute#getName} or {@code Attribute#getFriendlyName} match,
2727
* will be treated as private ({@link SamlPrivateAttribute}).
2828
*/
29-
public class SamlPrivateAttributePredicate implements Predicate<Attribute> {
29+
class SamlPrivateAttributePredicate implements Predicate<Attribute> {
3030

3131
private static final Logger logger = LogManager.getLogger(SamlPrivateAttributePredicate.class);
3232

33+
private static final Predicate<Attribute> MATCH_NONE = new Predicate<Attribute>() {
34+
@Override
35+
public boolean test(Attribute attribute) {
36+
return false;
37+
}
38+
39+
@Override
40+
public String toString() {
41+
return "<matching no SAML private attributes>";
42+
}
43+
};
44+
3345
private final Predicate<Attribute> predicate;
3446

35-
private SamlPrivateAttributePredicate(RealmConfig config) {
47+
SamlPrivateAttributePredicate(RealmConfig config) {
3648
this.predicate = buildPrivateAttributesPredicate(config);
3749
}
3850

39-
public static SamlPrivateAttributePredicate create(RealmConfig config) {
40-
return new SamlPrivateAttributePredicate(config);
41-
}
42-
4351
private static Predicate<Attribute> buildPrivateAttributesPredicate(RealmConfig config) {
4452

4553
if (false == config.hasSetting(PRIVATE_ATTRIBUTES)) {
4654
logger.trace("No SAML private attributes setting configured.");
47-
return attribute -> false;
55+
return MATCH_NONE;
4856
}
4957

5058
final List<String> attributesList = config.getSetting(PRIVATE_ATTRIBUTES);
5159
if (attributesList == null || attributesList.isEmpty()) {
5260
logger.trace("No SAML private attributes configured for setting [{}].", PRIVATE_ATTRIBUTES);
53-
return attribute -> false;
61+
return MATCH_NONE;
5462
}
5563

5664
final Set<String> attributesSet = attributesList.stream()
5765
.filter(name -> name != null && false == name.isBlank())
5866
.collect(Collectors.toUnmodifiableSet());
5967

6068
if (attributesSet.isEmpty()) {
61-
return attribute -> false;
69+
return MATCH_NONE;
6270
}
6371

6472
logger.trace("SAML private attributes configured: {}", attributesSet);
@@ -77,7 +85,7 @@ public boolean test(Attribute attribute) {
7785

7886
@Override
7987
public String toString() {
80-
return "SAML private attributes predicate for: " + attributesSet;
88+
return "<matching " + attributesSet + " SAML private attributes>";
8189
}
8290
};
8391
}
@@ -87,4 +95,9 @@ public boolean test(Attribute attribute) {
8795
return predicate.test(attribute);
8896
}
8997

98+
@Override
99+
public String toString() {
100+
return this.getClass().getSimpleName() + " {predicate=" + predicate + "}";
101+
}
102+
90103
}

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/saml/SamlRealm.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ public static SamlRealm create(
222222
final Clock clock = Clock.systemUTC();
223223
final IdpConfiguration idpConfiguration = getIdpConfiguration(config, metadataResolver, idpDescriptor);
224224
final TimeValue maxSkew = config.getSetting(CLOCK_SKEW);
225-
final Predicate<Attribute> privateAttributePredicate = SamlPrivateAttributePredicate.create(config);
225+
final Predicate<Attribute> privateAttributePredicate = new SamlPrivateAttributePredicate(config);
226226
final SamlAuthenticator authenticator = new SamlAuthenticator(
227227
clock,
228228
idpConfiguration,

x-pack/plugin/security/src/test/java/org/elasticsearch/xpack/security/authc/saml/SamlSecureAttributePredicateTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void testPredicateWithSettingConfigured() {
2626

2727
final List<String> privateAttributes = List.of("private", "http://elastic.co/confidential");
2828
final RealmConfig config = realmConfig(privateAttributes);
29-
final SamlPrivateAttributePredicate predicate = SamlPrivateAttributePredicate.create(config);
29+
final SamlPrivateAttributePredicate predicate = new SamlPrivateAttributePredicate(config);
3030

3131
final String privateAttribute = randomFrom(privateAttributes);
3232
final String nonPrivateAttribute = randomFrom(new String[] { null, " ", randomAlphaOfLengthBetween(0, 3) });
@@ -51,7 +51,7 @@ public void testPredicateWhenSettingIsNotConfigured() {
5151

5252
List<String> privateAttributes = randomBoolean() ? List.of() : null;
5353
RealmConfig config = realmConfig(privateAttributes);
54-
SamlPrivateAttributePredicate predicate = SamlPrivateAttributePredicate.create(config);
54+
SamlPrivateAttributePredicate predicate = new SamlPrivateAttributePredicate(config);
5555

5656
String name = randomFrom(randomAlphaOfLengthBetween(0, 5), null);
5757
String friendlyName = randomFrom(randomAlphaOfLengthBetween(0, 5), null);

0 commit comments

Comments
 (0)