keycloak-memoizeit

Details

diff --git a/federation/ldap/src/main/java/org/keycloak/federation/ldap/idm/model/LDAPDn.java b/federation/ldap/src/main/java/org/keycloak/federation/ldap/idm/model/LDAPDn.java
index e47c897..f4db593 100644
--- a/federation/ldap/src/main/java/org/keycloak/federation/ldap/idm/model/LDAPDn.java
+++ b/federation/ldap/src/main/java/org/keycloak/federation/ldap/idm/model/LDAPDn.java
@@ -12,15 +12,12 @@ public class LDAPDn {
 
     private final Deque<Entry> entries = new LinkedList<>();
 
-    private static final Pattern dnRegex = Pattern.compile("[^,\\\\]*(?:\\\\.[^,\\\\]*)");
-
     public static LDAPDn fromString(String dnString) {
         LDAPDn dn = new LDAPDn();
 
-        Matcher dnMatches = dnRegex.matcher(dnString);
-
-        while (dnMatches.find()) {
-            String[] rdn = dnMatches.group(1).split("=");
+        String[] rdns = dnString.split("(?<!\\\\\\\\),");
+        for (String entryStr : rdns) {
+            String[] rdn = entryStr.split("(?<!\\\\\\\\)=");
             dn.addLast(rdn[0].trim(), rdn[1].trim());
         }