Skip to content

Commit e1e5970

Browse files
committed
Support Serialization for LDAP Components
Issue gh-16276
1 parent 36716d1 commit e1e5970

File tree

5 files changed

+16
-0
lines changed

5 files changed

+16
-0
lines changed

config/src/test/java/org/springframework/security/SpringSecurityCoreVersionSerializableTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,10 @@
110110
import org.springframework.security.core.session.SessionInformation;
111111
import org.springframework.security.core.userdetails.UserDetails;
112112
import org.springframework.security.core.userdetails.UsernameNotFoundException;
113+
import org.springframework.security.ldap.ppolicy.PasswordPolicyControl;
113114
import org.springframework.security.ldap.ppolicy.PasswordPolicyErrorStatus;
114115
import org.springframework.security.ldap.ppolicy.PasswordPolicyException;
116+
import org.springframework.security.ldap.ppolicy.PasswordPolicyResponseControl;
115117
import org.springframework.security.ldap.userdetails.LdapAuthority;
116118
import org.springframework.security.oauth2.client.ClientAuthorizationException;
117119
import org.springframework.security.oauth2.client.ClientAuthorizationRequiredException;
@@ -470,6 +472,11 @@ class SpringSecurityCoreVersionSerializableTests {
470472
(r) -> new LdapAuthority("USER", "username", Map.of("attribute", List.of("value1", "value2"))));
471473
generatorByClassName.put(PasswordPolicyException.class,
472474
(r) -> new PasswordPolicyException(PasswordPolicyErrorStatus.INSUFFICIENT_PASSWORD_QUALITY));
475+
generatorByClassName.put(PasswordPolicyControl.class, (r) -> new PasswordPolicyControl(true));
476+
generatorByClassName.put(PasswordPolicyResponseControl.class, (r) -> {
477+
byte[] encodedResponse = { 0x30, 0x05, (byte) 0xA0, 0x03, (byte) 0xA0, 0x1, 0x21 };
478+
return new PasswordPolicyResponseControl(encodedResponse);
479+
});
473480

474481
// saml2-service-provider
475482
generatorByClassName.put(Saml2AuthenticationException.class,

ldap/src/main/java/org/springframework/security/ldap/ppolicy/PasswordPolicyControl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.security.ldap.ppolicy;
1818

19+
import java.io.Serial;
20+
1921
import javax.naming.ldap.Control;
2022

2123
/**
@@ -37,6 +39,9 @@ public class PasswordPolicyControl implements Control {
3739
*/
3840
public static final String OID = "1.3.6.1.4.1.42.2.27.8.5.1";
3941

42+
@Serial
43+
private static final long serialVersionUID = 2843242715616817932L;
44+
4045
private final boolean critical;
4146

4247
/**

ldap/src/main/java/org/springframework/security/ldap/ppolicy/PasswordPolicyResponseControl.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.io.ByteArrayInputStream;
2020
import java.io.IOException;
2121
import java.io.InputStream;
22+
import java.io.Serial;
2223

2324
import netscape.ldap.ber.stream.BERChoice;
2425
import netscape.ldap.ber.stream.BERElement;
@@ -53,6 +54,9 @@ public class PasswordPolicyResponseControl extends PasswordPolicyControl {
5354

5455
private static final Log logger = LogFactory.getLog(PasswordPolicyResponseControl.class);
5556

57+
@Serial
58+
private static final long serialVersionUID = -4592657167939234499L;
59+
5660
private final byte[] encodedValue;
5761

5862
private PasswordPolicyErrorStatus errorStatus;

0 commit comments

Comments
 (0)