TSK-548 Ldap Access must use uid field as user Id for persons

This commit is contained in:
BerndBreier 2018-06-04 16:37:40 +02:00 committed by Holger Hagen
parent 5ec61b406e
commit fd564b3053
8 changed files with 357 additions and 266 deletions

View File

@ -15,256 +15,264 @@ import pro.taskana.rest.resource.AccessIdResource;
public class LdapCacheTestImpl implements LdapCache {
@Override
public List<AccessIdResource> findMatchingAccessId(String searchFor) {
List<AccessIdResource> result = accessIds.stream()
public List<AccessIdResource> findMatchingAccessId(String searchFor, int maxNumerOfReturnedAccessIds) {
List<AccessIdResource> usersAndGroups = accessIds.stream()
.filter(t -> (t.getName().toLowerCase().contains(searchFor.toLowerCase())
|| t.getAccessId().toLowerCase().contains(searchFor.toLowerCase())))
.collect(Collectors.toList());
usersAndGroups.sort((AccessIdResource a, AccessIdResource b) -> {
return a.getAccessId().compareToIgnoreCase(b.getAccessId());
});
List<AccessIdResource> result = usersAndGroups.subList(0,
Math.min(usersAndGroups.size(), maxNumerOfReturnedAccessIds));
return result;
}
private static List<AccessIdResource> accessIds = new ArrayList<>(Arrays.asList(
new AccessIdResource("Rojas, Miguel", "cn=Miguel Rojas,ou=people,o=TaskanaTest"),
new AccessIdResource("Lengl, Marcel", "cn=Marcel Lengl,ou=people,o=TaskanaTest"),
new AccessIdResource("Zorgati, Mustapha", "cn=Mustapha Zorgati,ou=people,o=TaskanaTest"),
new AccessIdResource("Breier, Bernd", "cn=Bernd Breier,ou=people,o=TaskanaTest"),
new AccessIdResource("Meyer, Dominik", "cn=Dominik Meyer,ou=people,o=TaskanaTest"),
new AccessIdResource("Hagen, Holger", "cn=Holger Hagen,ou=people,o=TaskanaTest"),
new AccessIdResource("Behrendt, Maximilian", "cn=Maximilian Behrendt,ou=people,o=TaskanaTest"),
new AccessIdResource("Ferrante, Elena", "cn=Elena Ferrante,ou=people,o=TaskanaTest"),
new AccessIdResource("Mueller, Simone", "cn=Simone Mueller,ou=people,o=TaskanaTest"),
new AccessIdResource("Sirup, Aaron", "cn=Aaron Sirup,ou=people,o=TaskanaTest"),
new AccessIdResource("Kahn, Ada", "cn=Ada Kahn,ou=people,o=TaskanaTest"),
new AccessIdResource("Lass, Ada", "cn=Ada Lass,ou=people,o=TaskanaTest"),
new AccessIdResource("Tion, Addi", "cn=Addi Tion,ou=people,o=TaskanaTest"),
new AccessIdResource("Lette, Adi", "cn=Adi Lette,ou=people,o=TaskanaTest"),
new AccessIdResource("Native, Alter", "cn=Alter Native,ou=people,o=TaskanaTest"),
new AccessIdResource("Herum, Albert", "cn=Albert Herum,ou=people,o=TaskanaTest"),
new AccessIdResource("Bert, Ali", "cn=Ali Bert,ou=people,o=TaskanaTest"),
new AccessIdResource("Mente, Ali", "cn=Ali Mente,ou=people,o=TaskanaTest"),
new AccessIdResource("Mater, Alma", "cn=Alma Mater,ou=people,o=TaskanaTest"),
new AccessIdResource("Nach, Alma", "cn=Alma Nach,ou=people,o=TaskanaTest"),
new AccessIdResource("Gehzauch, Anders", "cn=Anders Gehzauch,ou=people,o=TaskanaTest"),
new AccessIdResource("Theke, Andi", "cn=Andi Theke,ou=people,o=TaskanaTest"),
new AccessIdResource("Kreuz, Andreas", "cn=Andreas Kreuz,ou=people,o=TaskanaTest"),
new AccessIdResource("Kette, Anka", "cn=Anka Kette,ou=people,o=TaskanaTest"),
new AccessIdResource("Tiefsee, Anka", "cn=Anka Tiefsee,ou=people,o=TaskanaTest"),
new AccessIdResource("Fielmalz, Anke", "cn=Anke Fielmalz,ou=people,o=TaskanaTest"),
new AccessIdResource("Fassen, Ann", "cn=Ann Fassen,ou=people,o=TaskanaTest"),
new AccessIdResource("Probe, Ann", "cn=Ann Probe,ou=people,o=TaskanaTest"),
new AccessIdResource("Bolika, Anna", "cn=Anna Bolika,ou=people,o=TaskanaTest"),
new AccessIdResource("Ecke, Anna", "cn=Anna Ecke,ou=people,o=TaskanaTest"),
new AccessIdResource("Hosi, Anna", "cn=Anna Hosi,ou=people,o=TaskanaTest"),
new AccessIdResource("Kronis-Tisch, Anna", "cn=Anna Kronis-Tisch,ou=people,o=TaskanaTest"),
new AccessIdResource("Logie, Anna", "cn=Anna Logie,ou=people,o=TaskanaTest"),
new AccessIdResource("Luehse, Anna", "cn=Anna Luehse,ou=people,o=TaskanaTest"),
new AccessIdResource("Nass, Anna", "cn=Anna Nass,ou=people,o=TaskanaTest"),
new AccessIdResource("Thalb, Anna", "cn=Anna Thalb,ou=people,o=TaskanaTest"),
new AccessIdResource("Tomie, Anna", "cn=Anna Tomie,ou=people,o=TaskanaTest"),
new AccessIdResource("Donnich, Anne", "cn=Anne Donnich,ou=people,o=TaskanaTest"),
new AccessIdResource("Kaffek, Anne", "cn=Anne Kaffek,ou=people,o=TaskanaTest"),
new AccessIdResource("Thek, Anne", "cn=Anne Thek,ou=people,o=TaskanaTest"),
new AccessIdResource("Matoer, Anni", "cn=Anni Matoer,ou=people,o=TaskanaTest"),
new AccessIdResource("Ragentor, Ansgar", "cn=Ansgar Ragentor,ou=people,o=TaskanaTest"),
new AccessIdResource("Stoteles, Ari", "cn=Ari Stoteles,ou=people,o=TaskanaTest"),
new AccessIdResource("Thmetik, Ari", "cn=Ari Thmetik,ou=people,o=TaskanaTest"),
new AccessIdResource("Nuehm, Arno", "cn=Arno Nuehm,ou=people,o=TaskanaTest"),
new AccessIdResource("Schocke, Artie", "cn=Artie Schocke,ou=people,o=TaskanaTest"),
new AccessIdResource("Stoppel, Bart", "cn=Bart Stoppel,ou=people,o=TaskanaTest"),
new AccessIdResource("Beitung, Bea", "cn=Bea Beitung,ou=people,o=TaskanaTest"),
new AccessIdResource("Ildich, Bea", "cn=Bea Ildich,ou=people,o=TaskanaTest"),
new AccessIdResource("Vista, Bella", "cn=Bella Vista,ou=people,o=TaskanaTest"),
new AccessIdResource("Utzer, Ben", "cn=Ben Utzer,ou=people,o=TaskanaTest"),
new AccessIdResource("Zien, Ben", "cn=Ben Zien,ou=people,o=TaskanaTest"),
new AccessIdResource("Stein, Bernd", "cn=Bernd Stein,ou=people,o=TaskanaTest"),
new AccessIdResource("Deramen, Bill", "cn=Bill Deramen,ou=people,o=TaskanaTest"),
new AccessIdResource("Honig, Bine", "cn=Bine Honig,ou=people,o=TaskanaTest"),
new AccessIdResource("Densatz, Bo", "cn=Bo Densatz,ou=people,o=TaskanaTest"),
new AccessIdResource("Densee, Bo", "cn=Bo Densee,ou=people,o=TaskanaTest"),
new AccessIdResource("Lerwagen, Bo", "cn=Bo Lerwagen,ou=people,o=TaskanaTest"),
new AccessIdResource("Tail, Bob", "cn=Bob Tail,ou=people,o=TaskanaTest"),
new AccessIdResource("Ketta, Bruce", "cn=Bruce Ketta,ou=people,o=TaskanaTest"),
new AccessIdResource("Terrie, Bud", "cn=Bud Terrie,ou=people,o=TaskanaTest"),
new AccessIdResource("Biener-Haken, Cara", "cn=iener- Cara Haken,ou=people,o=TaskanaTest"),
new AccessIdResource("Ass, Caro", "cn=Caro Ass,ou=people,o=TaskanaTest"),
new AccessIdResource("Kaffee, Caro", "cn=Caro Kaffee,ou=people,o=TaskanaTest"),
new AccessIdResource("Linger, Caro", "cn=Caro Linger,ou=people,o=TaskanaTest"),
new AccessIdResource("tenSaft, Caro", "cn=Caro tenSaft,ou=people,o=TaskanaTest"),
new AccessIdResource("Antheme, Chris", "cn=Chris Antheme,ou=people,o=TaskanaTest"),
new AccessIdResource("Baum, Chris", "cn=Chris Baum,ou=people,o=TaskanaTest"),
new AccessIdResource("Tall, Chris", "cn=Chris Tall,ou=people,o=TaskanaTest"),
new AccessIdResource("Reiniger, Claas", "cn=Claas Reiniger,ou=people,o=TaskanaTest"),
new AccessIdResource("Grube, Claire", "cn=Claire Grube,ou=people,o=TaskanaTest"),
new AccessIdResource("Fall, Clara", "cn=Clara Fall,ou=people,o=TaskanaTest"),
new AccessIdResource("Korn, Clara", "cn=Clara Korn,ou=people,o=TaskanaTest"),
new AccessIdResource("Lenriff, Cora", "cn=Cora Lenriff,ou=people,o=TaskanaTest"),
new AccessIdResource("Schiert, Cora", "cn=Cora Schiert,ou=people,o=TaskanaTest"),
new AccessIdResource("Hose, Cord", "cn=Cord Hose,ou=people,o=TaskanaTest"),
new AccessIdResource("Onbleu, Cord", "cn=Cord Onbleu,ou=people,o=TaskanaTest"),
new AccessIdResource("Umkleide, Damon", "cn=Damon Umkleide,ou=people,o=TaskanaTest"),
new AccessIdResource("Affier, Dean", "cn=Dean Affier,ou=people,o=TaskanaTest"),
new AccessIdResource("Orm, Dean", "cn=Dean Orm,ou=people,o=TaskanaTest"),
new AccessIdResource("Platz, Dennis", "cn=Dennis Platz,ou=people,o=TaskanaTest"),
new AccessIdResource("Milch, Dick", "cn=Dick Milch,ou=people,o=TaskanaTest"),
new AccessIdResource("Mow, Dina", "cn=Dina Mow,ou=people,o=TaskanaTest"),
new AccessIdResource("Keil, Donna", "cn=Donna Keil,ou=people,o=TaskanaTest"),
new AccessIdResource("Littchen, Donna", "cn=Donna Littchen,ou=people,o=TaskanaTest"),
new AccessIdResource("Wetter, Donna", "cn=Donna Wetter,ou=people,o=TaskanaTest"),
new AccessIdResource("Was, Ed", "cn=Ed Was,ou=people,o=TaskanaTest"),
new AccessIdResource("Khar, Ede", "cn=Ede Khar,ou=people,o=TaskanaTest"),
new AccessIdResource("Nut, Ella", "cn=Ella Nut,ou=people,o=TaskanaTest"),
new AccessIdResource("Stisch, Ella", "cn=Ella Stisch,ou=people,o=TaskanaTest"),
new AccessIdResource("Diel, Emma", "cn=Emma Diel,ou=people,o=TaskanaTest"),
new AccessIdResource("Herdamit, Emma", "cn=Emma Herdamit,ou=people,o=TaskanaTest"),
new AccessIdResource("Mitter-Uhe, Emma", "cn=Emma Mitter-Uhe,ou=people,o=TaskanaTest"),
new AccessIdResource("Tatt, Erich", "cn=Erich Tatt,ou=people,o=TaskanaTest"),
new AccessIdResource("Drigend, Ernie", "cn=Ernie Drigend,ou=people,o=TaskanaTest"),
new AccessIdResource("Poly, Esther", "cn=Esther Poly,ou=people,o=TaskanaTest"),
new AccessIdResource("Trautz, Eugen", "cn=Eugen Trautz,ou=people,o=TaskanaTest"),
new AccessIdResource("Quiert, Eva", "cn=Eva Quiert,ou=people,o=TaskanaTest"),
new AccessIdResource("Inurlaub, Fatma", "cn=Fatma Inurlaub,ou=people,o=TaskanaTest"),
new AccessIdResource("Land, Finn", "cn=Finn Land,ou=people,o=TaskanaTest"),
new AccessIdResource("Sternis, Finn", "cn=Finn Sternis,ou=people,o=TaskanaTest"),
new AccessIdResource("Furt, Frank", "cn=Frank Furt,ou=people,o=TaskanaTest"),
new AccessIdResource("Reich, Frank", "cn=Frank Reich,ou=people,o=TaskanaTest"),
new AccessIdResource("Iskaner, Franz", "cn=Franz Iskaner,ou=people,o=TaskanaTest"),
new AccessIdResource("Nerr, Franziska", "cn=Franziska Nerr,ou=people,o=TaskanaTest"),
new AccessIdResource("Zafen, Friedrich", "cn=Friedrich Zafen,ou=people,o=TaskanaTest"),
new AccessIdResource("Pomm, Fritz", "cn=Fritz Pomm,ou=people,o=TaskanaTest"),
new AccessIdResource("deWegs, Gera", "cn=Gera deWegs,ou=people,o=TaskanaTest"),
new AccessIdResource("Staebe, Gitta", "cn=Gitta Staebe,ou=people,o=TaskanaTest"),
new AccessIdResource("Zend, Glenn", "cn=Glenn Zend,ou=people,o=TaskanaTest"),
new AccessIdResource("Fisch, Grete", "cn=Grete Fisch,ou=people,o=TaskanaTest"),
new AccessIdResource("Zucker, Gus", "cn=Gus Zucker,ou=people,o=TaskanaTest"),
new AccessIdResource("Muhn, Hanni", "cn=Hanni Muhn,ou=people,o=TaskanaTest"),
new AccessIdResource("Fermesse, Hanno", "cn=Hanno Fermesse,ou=people,o=TaskanaTest"),
new AccessIdResource("Aplast, Hans", "cn=Hans Aplast,ou=people,o=TaskanaTest"),
new AccessIdResource("Eart, Hans", "cn=Hans Eart,ou=people,o=TaskanaTest"),
new AccessIdResource("Back, Hardy", "cn=Hardy Back,ou=people,o=TaskanaTest"),
new AccessIdResource("Beau, Harry", "cn=Harry Beau,ou=people,o=TaskanaTest"),
new AccessIdResource("Kraut, Heide", "cn=Heide Kraut,ou=people,o=TaskanaTest"),
new AccessIdResource("Witzka, Heide", "cn=Heide Witzka,ou=people,o=TaskanaTest"),
new AccessIdResource("Buchen, Hein", "cn=Hein Buchen,ou=people,o=TaskanaTest"),
new AccessIdResource("Lichkeit, Hein", "cn=Hein Lichkeit,ou=people,o=TaskanaTest"),
new AccessIdResource("Suchung, Hein", "cn=Hein Suchung,ou=people,o=TaskanaTest"),
new AccessIdResource("Ellmann, Heinz", "cn=Heinz Ellmann,ou=people,o=TaskanaTest"),
new AccessIdResource("Ketchup, Heinz", "cn=Heinz Ketchup,ou=people,o=TaskanaTest"),
new AccessIdResource("Zeim, Hilde", "cn=Hilde Zeim,ou=people,o=TaskanaTest"),
new AccessIdResource("Bilien, Immo", "cn=Immo Bilien,ou=people,o=TaskanaTest"),
new AccessIdResource("Her, Inge", "cn=Inge Her,ou=people,o=TaskanaTest"),
new AccessIdResource("Wahrsam, Inge", "cn=Inge Wahrsam,ou=people,o=TaskanaTest"),
new AccessIdResource("Flamm, Ingo", "cn=Ingo Flamm,ou=people,o=TaskanaTest"),
new AccessIdResource("Enzien, Ingrid", "cn=Ingrid Enzien,ou=people,o=TaskanaTest"),
new AccessIdResource("Rohsch, Inken", "cn=Inken Rohsch,ou=people,o=TaskanaTest"),
new AccessIdResource("Ihr, Insa", "cn=Insa Ihr,ou=people,o=TaskanaTest"),
new AccessIdResource("Nerda, Iska", "cn=Iska Nerda,ou=people,o=TaskanaTest"),
new AccessIdResource("Eitz, Jens", "cn=Jens Eitz,ou=people,o=TaskanaTest"),
new AccessIdResource("Nastik, Jim", "cn=Jim Nastik,ou=people,o=TaskanaTest"),
new AccessIdResource("Gurt, Jo", "cn=Jo Gurt,ou=people,o=TaskanaTest"),
new AccessIdResource("Kurrth, Jo", "cn=Jo Kurrth,ou=people,o=TaskanaTest"),
new AccessIdResource("Kolade, Joe", "cn=Joe Kolade,ou=people,o=TaskanaTest"),
new AccessIdResource("Iter, Johann", "cn=Johann Iter,ou=people,o=TaskanaTest"),
new AccessIdResource("Tick, Joyce", "cn=Joyce Tick,ou=people,o=TaskanaTest"),
new AccessIdResource("Case, Justin", "cn=Justin Case,ou=people,o=TaskanaTest"),
new AccessIdResource("Time, Justin", "cn=Justin Time,ou=people,o=TaskanaTest"),
new AccessIdResource("Komp, Jutta", "cn=Jutta Komp,ou=people,o=TaskanaTest"),
new AccessIdResource("Mauer, Kai", "cn=Kai Mauer,ou=people,o=TaskanaTest"),
new AccessIdResource("Pirinja, Kai", "cn=Kai Pirinja,ou=people,o=TaskanaTest"),
new AccessIdResource("Serpfalz, Kai", "cn=Kai Serpfalz,ou=people,o=TaskanaTest"),
new AccessIdResource("Auer, Karl", "cn=Karl Auer,ou=people,o=TaskanaTest"),
new AccessIdResource("Ielauge, Karl", "cn=Karl Ielauge,ou=people,o=TaskanaTest"),
new AccessIdResource("Ifornjen, Karl", "cn=Karl Ifornjen,ou=people,o=TaskanaTest"),
new AccessIdResource("Radi, Karl", "cn=Karl Radi,ou=people,o=TaskanaTest"),
new AccessIdResource("Verti, Karl", "cn=Karl Verti,ou=people,o=TaskanaTest"),
new AccessIdResource("Sery, Karo", "cn=Karo Sery,ou=people,o=TaskanaTest"),
new AccessIdResource("Lisator, Katha", "cn=Katha Lisator,ou=people,o=TaskanaTest"),
new AccessIdResource("Flo, Kati", "cn=Kati Flo,ou=people,o=TaskanaTest"),
new AccessIdResource("Schenn, Knut", "cn=Knut Schenn,ou=people,o=TaskanaTest"),
new AccessIdResource("Achse, Kurt", "cn=Kurt Achse,ou=people,o=TaskanaTest"),
new AccessIdResource("Zepause, Kurt", "cn=Kurt Zepause,ou=people,o=TaskanaTest"),
new AccessIdResource("Zerr, Kurt", "cn=Kurt Zerr,ou=people,o=TaskanaTest"),
new AccessIdResource("Reden, Lasse", "cn=Lasse Reden,ou=people,o=TaskanaTest"),
new AccessIdResource("Metten, Lee", "cn=Lee Metten,ou=people,o=TaskanaTest"),
new AccessIdResource("Arm, Lene", "cn=Lene Arm,ou=people,o=TaskanaTest"),
new AccessIdResource("Thur, Linnea", "cn=Linnea Thur,ou=people,o=TaskanaTest"),
new AccessIdResource("Bonn, Lisa", "cn=Lisa Bonn,ou=people,o=TaskanaTest"),
new AccessIdResource("Sembourg, Luc", "cn=Luc Sembourg,ou=people,o=TaskanaTest"),
new AccessIdResource("Rung, Lucky", "cn=Lucky Rung,ou=people,o=TaskanaTest"),
new AccessIdResource("Zafen, Ludwig", "cn=Ludwig Zafen,ou=people,o=TaskanaTest"),
new AccessIdResource("Hauden, Lukas", "cn=Lukas Hauden,ou=people,o=TaskanaTest"),
new AccessIdResource("Hose, Lutz", "cn=Lutz Hose,ou=people,o=TaskanaTest"),
new AccessIdResource("Tablette, Lutz", "cn=Lutz Tablette,ou=people,o=TaskanaTest"),
new AccessIdResource("Fehr, Luzie", "cn=Luzie Fehr,ou=people,o=TaskanaTest"),
new AccessIdResource("Nalyse, Magda", "cn=Magda Nalyse,ou=people,o=TaskanaTest"),
new AccessIdResource("Ehfer, Maik", "cn=Maik Ehfer,ou=people,o=TaskanaTest"),
new AccessIdResource("Sehr, Malte", "cn=Malte Sehr,ou=people,o=TaskanaTest"),
new AccessIdResource("Thon, Mara", "cn=Mara Thon,ou=people,o=TaskanaTest"),
new AccessIdResource("Quark, Marga", "cn=Marga Quark,ou=people,o=TaskanaTest"),
new AccessIdResource("Nade, Marie", "cn=Marie Nade,ou=people,o=TaskanaTest"),
new AccessIdResource("Niert, Marie", "cn=Marie Niert,ou=people,o=TaskanaTest"),
new AccessIdResource("Neese, Mario", "cn=Mario Neese,ou=people,o=TaskanaTest"),
new AccessIdResource("Nette, Marion", "cn=Marion Nette,ou=people,o=TaskanaTest"),
new AccessIdResource("Nesium, Mark", "cn=Mark Nesium,ou=people,o=TaskanaTest"),
new AccessIdResource("Thalle, Mark", "cn=Mark Thalle,ou=people,o=TaskanaTest"),
new AccessIdResource("Diven, Marle", "cn=Marle Diven,ou=people,o=TaskanaTest"),
new AccessIdResource("Fitz, Marle", "cn=Marle Fitz,ou=people,o=TaskanaTest"),
new AccessIdResource("Pfahl, Marta", "cn=Marta Pfahl,ou=people,o=TaskanaTest"),
new AccessIdResource("Zorn, Martin", "cn=Martin Zorn,ou=people,o=TaskanaTest"),
new AccessIdResource("Krissmes, Mary", "cn=Mary Krissmes,ou=people,o=TaskanaTest"),
new AccessIdResource("Jess, Matt", "cn=Matt Jess,ou=people,o=TaskanaTest"),
new AccessIdResource("Strammer, Max", "cn=Max Strammer,ou=people,o=TaskanaTest"),
new AccessIdResource("Mumm, Maxi", "cn=Maxi Mumm,ou=people,o=TaskanaTest"),
new AccessIdResource("Morphose, Meta", "cn=Meta Morphose,ou=people,o=TaskanaTest"),
new AccessIdResource("Uh, Mia", "cn=Mia Uh,ou=people,o=TaskanaTest"),
new AccessIdResource("Rofon, Mike", "cn=Mike Rofon,ou=people,o=TaskanaTest"),
new AccessIdResource("Rosoft, Mike", "cn=Mike Rosoft,ou=people,o=TaskanaTest"),
new AccessIdResource("Liter, Milli", "cn=Milli Liter,ou=people,o=TaskanaTest"),
new AccessIdResource("Thär, Milli", "cn=hä Milli r,ou=people,o=TaskanaTest"),
new AccessIdResource("Welle, Mirko", "cn=Mirko Welle,ou=people,o=TaskanaTest"),
new AccessIdResource("Thorat, Mo", "cn=Mo Thorat,ou=people,o=TaskanaTest"),
new AccessIdResource("Thor, Moni", "cn=Moni Thor,ou=people,o=TaskanaTest"),
new AccessIdResource("Kinolta, Monika", "cn=Monika Kinolta,ou=people,o=TaskanaTest"),
new AccessIdResource("Mundhaar, Monika", "cn=Monika Mundhaar,ou=people,o=TaskanaTest"),
new AccessIdResource("Munter, Monika", "cn=Monika Munter,ou=people,o=TaskanaTest"),
new AccessIdResource("Zwerg, Nat", "cn=Nat Zwerg,ou=people,o=TaskanaTest"),
new AccessIdResource("Elmine, Nick", "cn=Nick Elmine,ou=people,o=TaskanaTest"),
new AccessIdResource("Thien, Niko", "cn=Niko Thien,ou=people,o=TaskanaTest"),
new AccessIdResource("Pferd, Nils", "cn=Nils Pferd,ou=people,o=TaskanaTest"),
new AccessIdResource("Lerweise, Norma", "cn=Norma Lerweise,ou=people,o=TaskanaTest"),
new AccessIdResource("Motor, Otto", "cn=Otto Motor,ou=people,o=TaskanaTest"),
new AccessIdResource("Totol, Otto", "cn=Otto Totol,ou=people,o=TaskanaTest"),
new AccessIdResource("Nerr, Paula", "cn=Paula Nerr,ou=people,o=TaskanaTest"),
new AccessIdResource("Imeter, Peer", "cn=Peer Imeter,ou=people,o=TaskanaTest"),
new AccessIdResource("Serkatze, Peer", "cn=Peer Serkatze,ou=people,o=TaskanaTest"),
new AccessIdResource("Gogisch, Peter", "cn=Peter Gogisch,ou=people,o=TaskanaTest"),
new AccessIdResource("Silje, Peter", "cn=Peter Silje,ou=people,o=TaskanaTest"),
new AccessIdResource("Harmonie, Phil", "cn=Phil Harmonie,ou=people,o=TaskanaTest"),
new AccessIdResource("Ihnen, Philip", "cn=Philip Ihnen,ou=people,o=TaskanaTest"),
new AccessIdResource("Uto, Pia", "cn=Pia Uto,ou=people,o=TaskanaTest"),
new AccessIdResource("Kothek, Pina", "cn=Pina Kothek,ou=people,o=TaskanaTest"),
new AccessIdResource("Zar, Pit", "cn=Pit Zar,ou=people,o=TaskanaTest"),
new AccessIdResource("Zeih, Polly", "cn=Polly Zeih,ou=people,o=TaskanaTest"),
new AccessIdResource("Tswan, Puh", "cn=Puh Tswan,ou=people,o=TaskanaTest"),
new AccessIdResource("Zufall, Rainer", "cn=Rainer Zufall,ou=people,o=TaskanaTest"),
new AccessIdResource("Lien, Rita", "cn=Rita Lien,ou=people,o=TaskanaTest"),
new AccessIdResource("Held, Roman", "cn=Roman Held,ou=people,o=TaskanaTest"),
new AccessIdResource("Haar, Ross", "cn=Ross Haar,ou=people,o=TaskanaTest"),
new AccessIdResource("Dick, Roy", "cn=Roy Dick,ou=people,o=TaskanaTest"),
new AccessIdResource("Enplaner, Ruth", "cn=Ruth Enplaner,ou=people,o=TaskanaTest"),
new AccessIdResource("Kommen, Ryan", "cn=Ryan Kommen,ou=people,o=TaskanaTest"),
new AccessIdResource("Philo, Sophie", "cn=Sophie Philo,ou=people,o=TaskanaTest"),
new AccessIdResource("Matisier, Stig", "cn=Stig Matisier,ou=people,o=TaskanaTest"),
new AccessIdResource("Loniki, Tessa", "cn=Tessa Loniki,ou=people,o=TaskanaTest"),
new AccessIdResource("Tralisch, Thea", "cn=Thea Tralisch,ou=people,o=TaskanaTest"),
new AccessIdResource("Logie, Theo", "cn=Theo Logie,ou=people,o=TaskanaTest"),
new AccessIdResource("Ister, Thorn", "cn=Thorn Ister,ou=people,o=TaskanaTest"),
new AccessIdResource("Buktu, Tim", "cn=Tim Buktu,ou=people,o=TaskanaTest"),
new AccessIdResource("Ate, Tom", "cn=Tom Ate,ou=people,o=TaskanaTest"),
new AccessIdResource("Pie, Udo", "cn=Udo Pie,ou=people,o=TaskanaTest"),
new AccessIdResource("Aloe, Vera", "cn=Vera Aloe,ou=people,o=TaskanaTest"),
new AccessIdResource("Hausver, Walter", "cn=Walter Hausver,ou=people,o=TaskanaTest"),
new AccessIdResource("Schuh, Wanda", "cn=Wanda Schuh,ou=people,o=TaskanaTest"),
new AccessIdResource("Rahm, Wolf", "cn=Wolf Rahm,ou=people,o=TaskanaTest"),
new AccessIdResource("Martin, Rojas Miguel Angel", "user_1_1"),
new AccessIdResource("Lengl, Marcel", "user_1_2"),
new AccessIdResource("Zorgati, Mustapha", "user_2_1"),
new AccessIdResource("Breier, Bernd", "user_2_2"),
new AccessIdResource("Meyer, Dominik", "teamlead_1"),
new AccessIdResource("Hagen, Holger", "teamlead_2"),
new AccessIdResource("Behrendt, Maximilian", "max"),
new AccessIdResource("Ferrante, Elena", "elena"),
new AccessIdResource("Mueller, Simone", "simone"),
new AccessIdResource("Sirup, Aaron", "user001"),
new AccessIdResource("Kahn, Ada", "user002"),
new AccessIdResource("Lass, Ada", "user003"),
new AccessIdResource("Tion, Addi", "user004"),
new AccessIdResource("Lette, Adi", "user005"),
new AccessIdResource("Native, Alter", "user006"),
new AccessIdResource("Herum, Albert", "user007"),
new AccessIdResource("Bert, Ali", "user008"),
new AccessIdResource("Mente, Ali", "user009"),
new AccessIdResource("Mater, Alma", "user010"),
new AccessIdResource("Nach, Alma", "user011"),
new AccessIdResource("Gehzauch, Anders", "user012"),
new AccessIdResource("Theke, Andi", "user013"),
new AccessIdResource("Kreuz, Andreas", "user014"),
new AccessIdResource("Kette, Anka", "user015"),
new AccessIdResource("Tiefsee, Anka", "user016"),
new AccessIdResource("Fielmalz, Anke", "user017"),
new AccessIdResource("Fassen, Ann", "user018"),
new AccessIdResource("Probe, Ann", "user019"),
new AccessIdResource("Bolika, Anna", "user020"),
new AccessIdResource("Ecke, Anna", "user021"),
new AccessIdResource("Hosi, Anna", "user022"),
new AccessIdResource("Kronis-Tisch, Anna", "user023"),
new AccessIdResource("Logie, Anna", "user024"),
new AccessIdResource("Luehse, Anna", "user025"),
new AccessIdResource("Nass, Anna", "user026"),
new AccessIdResource("Thalb, Anna", "user027"),
new AccessIdResource("Tomie, Anna", "user028"),
new AccessIdResource("Donnich, Anne", "user029"),
new AccessIdResource("Kaffek, Anne", "user030"),
new AccessIdResource("Thek, Anne", "user031"),
new AccessIdResource("Matoer, Anni", "user032"),
new AccessIdResource("Ragentor, Ansgar", "user033"),
new AccessIdResource("Stoteles, Ari", "user034"),
new AccessIdResource("Thmetik, Ari", "user035"),
new AccessIdResource("Nuehm, Arno", "user036"),
new AccessIdResource("Schocke, Artie", "user037"),
new AccessIdResource("Stoppel, Bart", "user038"),
new AccessIdResource("Beitung, Bea", "user039"),
new AccessIdResource("Ildich, Bea", "user040"),
new AccessIdResource("Vista, Bella", "user041"),
new AccessIdResource("Utzer, Ben", "user042"),
new AccessIdResource("Zien, Ben", "user043"),
new AccessIdResource("Stein, Bernd", "user044"),
new AccessIdResource("Deramen, Bill", "user045"),
new AccessIdResource("Honig, Bine", "user046"),
new AccessIdResource("Densatz, Bo", "user047"),
new AccessIdResource("Densee, Bo", "user048"),
new AccessIdResource("Lerwagen, Bo", "user049"),
new AccessIdResource("Tail, Bob", "user050"),
new AccessIdResource("Ketta, Bruce", "user051"),
new AccessIdResource("Terrie, Bud", "user052"),
new AccessIdResource("Biener-Haken, Cara", "user053"),
new AccessIdResource("Ass, Caro", "user054"),
new AccessIdResource("Kaffee, Caro", "user055"),
new AccessIdResource("Linger, Caro", "user056"),
new AccessIdResource("tenSaft, Caro", "user057"),
new AccessIdResource("Antheme, Chris", "user058"),
new AccessIdResource("Baum, Chris", "user059"),
new AccessIdResource("Tall, Chris", "user060"),
new AccessIdResource("Reiniger, Claas", "user061"),
new AccessIdResource("Grube, Claire", "user062"),
new AccessIdResource("Fall, Clara", "user063"),
new AccessIdResource("Korn, Clara", "user064"),
new AccessIdResource("Lenriff, Cora", "user065"),
new AccessIdResource("Schiert, Cora", "user066"),
new AccessIdResource("Hose, Cord", "user067"),
new AccessIdResource("Onbleu, Cord", "user068"),
new AccessIdResource("Umkleide, Damon", "user069"),
new AccessIdResource("Affier, Dean", "user070"),
new AccessIdResource("Orm, Dean", "user071"),
new AccessIdResource("Platz, Dennis", "user072"),
new AccessIdResource("Milch, Dick", "user073"),
new AccessIdResource("Mow, Dina", "user074"),
new AccessIdResource("Keil, Donna", "user075"),
new AccessIdResource("Littchen, Donna", "user076"),
new AccessIdResource("Wetter, Donna", "user077"),
new AccessIdResource("Was, Ed", "user078"),
new AccessIdResource("Khar, Ede", "user079"),
new AccessIdResource("Nut, Ella", "user080"),
new AccessIdResource("Stisch, Ella", "user081"),
new AccessIdResource("Diel, Emma", "user082"),
new AccessIdResource("Herdamit, Emma", "user083"),
new AccessIdResource("Mitter-Uhe, Emma", "user084"),
new AccessIdResource("Tatt, Erich", "user085"),
new AccessIdResource("Drigend, Ernie", "user086"),
new AccessIdResource("Poly, Esther", "user087"),
new AccessIdResource("Trautz, Eugen", "user088"),
new AccessIdResource("Quiert, Eva", "user089"),
new AccessIdResource("Inurlaub, Fatma", "user090"),
new AccessIdResource("Land, Finn", "user091"),
new AccessIdResource("Sternis, Finn", "user092"),
new AccessIdResource("Furt, Frank", "user093"),
new AccessIdResource("Reich, Frank", "user094"),
new AccessIdResource("Iskaner, Franz", "user095"),
new AccessIdResource("Nerr, Franziska", "user096"),
new AccessIdResource("Zafen, Friedrich", "user097"),
new AccessIdResource("Pomm, Fritz", "user098"),
new AccessIdResource("deWegs, Gera", "user099"),
new AccessIdResource("Staebe, Gitta", "user100"),
new AccessIdResource("Zend, Glenn", "user101"),
new AccessIdResource("Fisch, Grete", "user102"),
new AccessIdResource("Zucker, Gus", "user103"),
new AccessIdResource("Muhn, Hanni", "user104"),
new AccessIdResource("Fermesse, Hanno", "user105"),
new AccessIdResource("Aplast, Hans", "user106"),
new AccessIdResource("Eart, Hans", "user107"),
new AccessIdResource("Back, Hardy", "user108"),
new AccessIdResource("Beau, Harry", "user109"),
new AccessIdResource("Kraut, Heide", "user110"),
new AccessIdResource("Witzka, Heide", "user111"),
new AccessIdResource("Buchen, Hein", "user112"),
new AccessIdResource("Lichkeit, Hein", "user113"),
new AccessIdResource("Suchung, Hein", "user114"),
new AccessIdResource("Ellmann, Heinz", "user115"),
new AccessIdResource("Ketchup, Heinz", "user116"),
new AccessIdResource("Zeim, Hilde", "user117"),
new AccessIdResource("Bilien, Immo", "user118"),
new AccessIdResource("Her, Inge", "user119"),
new AccessIdResource("Wahrsam, Inge", "user120"),
new AccessIdResource("Flamm, Ingo", "user121"),
new AccessIdResource("Enzien, Ingrid", "user122"),
new AccessIdResource("Rohsch, Inken", "user123"),
new AccessIdResource("Ihr, Insa", "user124"),
new AccessIdResource("Nerda, Iska", "user125"),
new AccessIdResource("Eitz, Jens", "user126"),
new AccessIdResource("Nastik, Jim", "user127"),
new AccessIdResource("Gurt, Jo", "user128"),
new AccessIdResource("Kurrth, Jo", "user129"),
new AccessIdResource("Kolade, Joe", "user130"),
new AccessIdResource("Iter, Johann", "user131"),
new AccessIdResource("Tick, Joyce", "user132"),
new AccessIdResource("Case, Justin", "user133"),
new AccessIdResource("Time, Justin", "user134"),
new AccessIdResource("Komp, Jutta", "user135"),
new AccessIdResource("Mauer, Kai", "user136"),
new AccessIdResource("Pirinja, Kai", "user137"),
new AccessIdResource("Serpfalz, Kai", "user138"),
new AccessIdResource("Auer, Karl", "user139"),
new AccessIdResource("Ielauge, Karl", "user140"),
new AccessIdResource("Ifornjen, Karl", "user141"),
new AccessIdResource("Radi, Karl", "user142"),
new AccessIdResource("Verti, Karl", "user143"),
new AccessIdResource("Sery, Karo", "user144"),
new AccessIdResource("Lisator, Katha", "user145"),
new AccessIdResource("Flo, Kati", "user146"),
new AccessIdResource("Schenn, Knut", "user147"),
new AccessIdResource("Achse, Kurt", "user148"),
new AccessIdResource("Zepause, Kurt", "user149"),
new AccessIdResource("Zerr, Kurt", "user150"),
new AccessIdResource("Reden, Lasse", "user151"),
new AccessIdResource("Metten, Lee", "user152"),
new AccessIdResource("Arm, Lene", "user153"),
new AccessIdResource("Thur, Linnea", "user154"),
new AccessIdResource("Bonn, Lisa", "user155"),
new AccessIdResource("Sembourg, Luc", "user156"),
new AccessIdResource("Rung, Lucky", "user157"),
new AccessIdResource("Zafen, Ludwig", "user158"),
new AccessIdResource("Hauden, Lukas", "user159"),
new AccessIdResource("Hose, Lutz", "user160"),
new AccessIdResource("Tablette, Lutz", "user161"),
new AccessIdResource("Fehr, Luzie", "user162"),
new AccessIdResource("Nalyse, Magda", "user163"),
new AccessIdResource("Ehfer, Maik", "user164"),
new AccessIdResource("Sehr, Malte", "user165"),
new AccessIdResource("Thon, Mara", "user166"),
new AccessIdResource("Quark, Marga", "user167"),
new AccessIdResource("Nade, Marie", "user168"),
new AccessIdResource("Niert, Marie", "user169"),
new AccessIdResource("Neese, Mario", "user170"),
new AccessIdResource("Nette, Marion", "user171"),
new AccessIdResource("Nesium, Mark", "user172"),
new AccessIdResource("Thalle, Mark", "user173"),
new AccessIdResource("Diven, Marle", "user174"),
new AccessIdResource("Fitz, Marle", "user175"),
new AccessIdResource("Pfahl, Marta", "user176"),
new AccessIdResource("Zorn, Martin", "user177"),
new AccessIdResource("Krissmes, Mary", "user178"),
new AccessIdResource("Jess, Matt", "user179"),
new AccessIdResource("Strammer, Max", "user180"),
new AccessIdResource("Mumm, Maxi", "user181"),
new AccessIdResource("Morphose, Meta", "user182"),
new AccessIdResource("Uh, Mia", "user183"),
new AccessIdResource("Rofon, Mike", "user184"),
new AccessIdResource("Rosoft, Mike", "user185"),
new AccessIdResource("Liter, Milli", "user186"),
new AccessIdResource("Thär, Milli", "user187"),
new AccessIdResource("Welle, Mirko", "user188"),
new AccessIdResource("Thorat, Mo", "user189"),
new AccessIdResource("Thor, Moni", "user190"),
new AccessIdResource("Kinolta, Monika", "user191"),
new AccessIdResource("Mundhaar, Monika", "user192"),
new AccessIdResource("Munter, Monika", "user193"),
new AccessIdResource("Zwerg, Nat", "user194"),
new AccessIdResource("Elmine, Nick", "user195"),
new AccessIdResource("Thien, Niko", "user196"),
new AccessIdResource("Pferd, Nils", "user197"),
new AccessIdResource("Lerweise, Norma", "user198"),
new AccessIdResource("Motor, Otto", "user199"),
new AccessIdResource("Totol, Otto", "user200"),
new AccessIdResource("Nerr, Paula", "user201"),
new AccessIdResource("Imeter, Peer", "user202"),
new AccessIdResource("Serkatze, Peer", "user203"),
new AccessIdResource("Gogisch, Peter", "user204"),
new AccessIdResource("Silje, Peter", "user205"),
new AccessIdResource("Harmonie, Phil", "user206"),
new AccessIdResource("Ihnen, Philip", "user207"),
new AccessIdResource("Uto, Pia", "user208"),
new AccessIdResource("Kothek, Pina", "user209"),
new AccessIdResource("Zar, Pit", "user210"),
new AccessIdResource("Zeih, Polly", "user211"),
new AccessIdResource("Tswan, Puh", "user212"),
new AccessIdResource("Zufall, Rainer", "user213"),
new AccessIdResource("Lien, Rita", "user214"),
new AccessIdResource("Held, Roman", "user215"),
new AccessIdResource("Haar, Ross", "user216"),
new AccessIdResource("Dick, Roy", "user217"),
new AccessIdResource("Enplaner, Ruth", "user218"),
new AccessIdResource("Kommen, Ryan", "user219"),
new AccessIdResource("Philo, Sophie", "user220"),
new AccessIdResource("Matisier, Stig", "user221"),
new AccessIdResource("Loniki, Tessa", "user222"),
new AccessIdResource("Tralisch, Thea", "user223"),
new AccessIdResource("Logie, Theo", "user224"),
new AccessIdResource("Ister, Thorn", "user225"),
new AccessIdResource("Buktu, Tim", "user226"),
new AccessIdResource("Ate, Tom", "user227"),
new AccessIdResource("Pie, Udo", "user228"),
new AccessIdResource("Aloe, Vera", "user229"),
new AccessIdResource("Hausver, Walter", "user230"),
new AccessIdResource("Schuh, Wanda", "user231"),
new AccessIdResource("Rahm, Wolf", "user232"),
new AccessIdResource("DevelopersGroup", "cn=DevelopersGroup,ou=groups,o=TaskanaTest"),
new AccessIdResource("UsersGroup", "cn=UsersGroup,ou=groups,o=TaskanaTest"),
new AccessIdResource("sachbearbeiter", "cn=sachbearbeiter,ou=groups,o=TaskanaTest"),

View File

@ -13,14 +13,14 @@ objectclass: organizationalUnit
objectclass: top
ou: people
dn: cn=Miguel Rojas,ou=people,o=TaskanaTest
dn: cn=Rojas Miguel Angel Martin,ou=people,o=TaskanaTest
objectclass: inetOrgPerson
objectclass: organizationalPerson
objectclass: person
objectclass: top
cn: Miguel Rojas
sn: Rojas
givenName: Miguel
cn: Rojas Miguel Angel Martin
sn: Martin
givenName: Rojas Miguel Angel
uid: user_1_1
dn: cn=Marcel Lengl,ou=people,o=TaskanaTest
@ -91,7 +91,7 @@ objectclass: top
cn: Elena Ferrante
sn: Ferrante
givenName: Elena
uid: Elena
uid: elena
dn: cn=Simone Mueller,ou=people,o=TaskanaTest
objectclass: inetOrgPerson
@ -101,7 +101,7 @@ objectclass: top
cn: Simone Mueller
sn: Mueller
givenName: Simone
uid: Simone
uid: simone
dn: cn=Aaron Sirup,ou=people,o=TaskanaTest
objectclass: inetOrgPerson

View File

@ -19,7 +19,10 @@ taskana.ldap.userSearchFilterName=objectclass
taskana.ldap.userSearchFilterValue=person
taskana.ldap.userFirstnameAttribute=givenName
taskana.ldap.userLastnameAttribute=sn
taskana.ldap.userIdAttribute=uid
taskana.ldap.groupSearchBase=ou=groups
taskana.ldap.groupSearchFilterName=objectclass
taskana.ldap.groupSearchFilterValue=groupOfUniqueNames
taskana.ldap.groupNameAttribute=cn
taskana.ldap.minSearchForLength=3
taskana.ldap.maxNumberOfReturnedAccessIds=50

View File

@ -12,6 +12,8 @@ import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.impl.util.LoggerUtils;
import pro.taskana.rest.RestConfiguration;
import pro.taskana.rest.resource.AccessIdResource;
@ -24,10 +26,11 @@ public class LdapTest {
private LdapClient ldapClient;
@Test
public void testFindUsers() {
public void testFindUsers() throws InvalidArgumentException {
if (ldapClient.useLdap()) {
List<AccessIdResource> usersAndGroups = ldapClient.searchUsersAndGroups("ie");
assertEquals(31, usersAndGroups.size());
List<AccessIdResource> usersAndGroups = ldapClient.searchUsersAndGroups("ser0");
System.out.println("#### found " + LoggerUtils.listToString(usersAndGroups));
assertEquals(50, usersAndGroups.size());
}
}
}

View File

@ -16,7 +16,9 @@ public interface LdapCache {
*
* @param searchFor
* the search string. The search is performed over names and ids of users and groups.
* @param maxNumerOfReturnedAccessIds
* the maximum number of results to return.
* @return a List of access ids for users and group where the name or id contains the search string.
*/
List<AccessIdResource> findMatchingAccessId(String searchFor);
List<AccessIdResource> findMatchingAccessId(String searchFor, int maxNumerOfReturnedAccessIds);
}

View File

@ -18,6 +18,7 @@ import org.springframework.ldap.filter.OrFilter;
import org.springframework.ldap.filter.WhitespaceWildcardsFilter;
import org.springframework.stereotype.Component;
import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.SystemException;
import pro.taskana.impl.util.LoggerUtils;
import pro.taskana.rest.resource.AccessIdResource;
@ -44,10 +45,13 @@ public class LdapClient {
private String userSearchFilterValue;
private String userFirstnameAttribute;
private String userLastnameAttribute;
private String userIdAttribute;
private String groupSearchBase;
private String groupSearchFilterName;
private String groupSearchFilterValue;
private String groupNameAttribute;
private int minSearchForLength;
private int maxNumberOfReturnedAccessIds;
private static final String CN = "cn";
private String message;
@ -55,18 +59,36 @@ public class LdapClient {
@PostConstruct
private void init() {
String strMinSearchForLength = getMinSearchForLengthAsString();
if (strMinSearchForLength == null || strMinSearchForLength.isEmpty()) {
minSearchForLength = 3;
} else {
minSearchForLength = Integer.parseInt(strMinSearchForLength);
}
String strMaxNumberOfReturnedAccessIds = getMaxNumberOfReturnedAccessIdsAsString();
if (strMaxNumberOfReturnedAccessIds == null || strMaxNumberOfReturnedAccessIds.isEmpty()) {
maxNumberOfReturnedAccessIds = 50;
} else {
maxNumberOfReturnedAccessIds = Integer.parseInt(strMaxNumberOfReturnedAccessIds);
}
if (useLdap()) {
userSearchBase = getUserSearchBase();
userSearchFilterName = getUserSearchFilterName();
userSearchFilterValue = getUserSearchFilterValue();
userFirstnameAttribute = getUserFirstnameAttribute();
userLastnameAttribute = getUserLastnameAttribute();
userIdAttribute = getUserIdAttribute();
groupSearchBase = getGroupSearchBase();
groupSearchFilterName = getGroupSearchFilterName();
groupSearchFilterValue = getGroupSearchFilterValue();
groupNameAttribute = getGroupNameAttribute();
message = "taskana.ldap.useLdap is set to true, but";
ldapTemplate.setDefaultCountLimit(maxNumberOfReturnedAccessIds);
final String emptyMessage = "taskana.ldap.useLdap is set to true, but";
message = emptyMessage;
if (userSearchBase == null) {
message += " taskana.ldap.userSearchBase is not configured.";
}
@ -82,6 +104,9 @@ public class LdapClient {
if (userLastnameAttribute == null) {
message += " taskana.ldap.userLastnameAttribute is not configured.";
}
if (userIdAttribute == null) {
message += " taskana.ldap.userIdAttribute is not configured.";
}
if (groupSearchBase == null) {
message += " taskana.ldap.groupSearchBase is not configured.";
}
@ -94,7 +119,7 @@ public class LdapClient {
if (groupNameAttribute == null) {
message += " taskana.ldap.groupNameAttribute is not configured.";
}
if (!message.equals("taskana.ldap.useLdap is set to true, but")) {
if (!message.equals(emptyMessage)) {
LOGGER.error("Ldap configuration error detected: {}", message);
throw new SystemException(message);
}
@ -102,36 +127,54 @@ public class LdapClient {
}
}
public List<AccessIdResource> searchUsersAndGroups(final String name) {
public List<AccessIdResource> searchUsersAndGroups(final String name) throws InvalidArgumentException {
LOGGER.debug("entry to searchUsersAndGroups(name = {})", name);
if (!active) {
LOGGER.error("LdapClient was called but is not active due to missing configuration: " + message);
throw new SystemException(
"LdapClient was called but is not active due to missing configuration: " + message);
}
if (name == null || name.length() < minSearchForLength) {
throw new InvalidArgumentException("searchFor string " + name + " is too short. Minimum Length = "
+ getMinSearchForLength());
}
List<AccessIdResource> users = searchUsersByName(name);
users.addAll(searchGroupsByName(name));
LOGGER.debug("exit from searchUsersAndGroups(name = {}). Found {} users and groups.", name, users.size());
return users;
users.sort((AccessIdResource a, AccessIdResource b) -> {
return a.getAccessId().compareToIgnoreCase(b.getAccessId());
});
List<AccessIdResource> result = users.subList(0, Math.min(users.size(), maxNumberOfReturnedAccessIds));
LOGGER.debug("exit from searchUsersAndGroups(name = {}). Returning {} users and groups: {}", name, users.size(),
LoggerUtils.listToString(result));
return result;
}
public List<AccessIdResource> searchUsersByName(final String name) {
public List<AccessIdResource> searchUsersByName(final String name) throws InvalidArgumentException {
LOGGER.debug("entry to searchUsersByName(name = {}).", name);
if (!active) {
LOGGER.error("LdapClient was called but is not active due to missing configuration: " + message);
throw new SystemException(
"LdapClient was called but is not active due to missing configuration: " + message);
}
if (name == null || name.length() < minSearchForLength) {
throw new InvalidArgumentException("searchFor string " + name + " is too short. Minimum Length = "
+ getMinSearchForLength());
}
final AndFilter andFilter = new AndFilter();
andFilter.and(new EqualsFilter(getUserSearchFilterName(), getUserSearchFilterValue()));
final OrFilter orFilter = new OrFilter();
orFilter.or(new WhitespaceWildcardsFilter(CN, name));
orFilter.or(new WhitespaceWildcardsFilter(getUserFirstnameAttribute(), name));
orFilter.or(new WhitespaceWildcardsFilter(getUserLastnameAttribute(), name));
orFilter.or(new WhitespaceWildcardsFilter(getUserIdAttribute(), name));
andFilter.and(orFilter);
String[] userAttributesToReturn = {getUserFirstnameAttribute(), getUserLastnameAttribute(), CN};
String[] userAttributesToReturn = {getUserFirstnameAttribute(), getUserLastnameAttribute(),
getUserIdAttribute()};
try {
final List<AccessIdResource> accessIds = ldapTemplate.search(getUserSearchBase(), andFilter.encode(),
@ -145,13 +188,18 @@ public class LdapClient {
}
}
public List<AccessIdResource> searchGroupsByName(final String name) {
public List<AccessIdResource> searchGroupsByName(final String name) throws InvalidArgumentException {
LOGGER.debug("entry to searchGroupsByName(name = {}).", name);
if (!active) {
LOGGER.error("LdapClient was called but is not active due to missing configuration: " + message);
throw new SystemException(
"LdapClient was called but is not active due to missing configuration: " + message);
}
if (name == null || name.length() < minSearchForLength) {
throw new InvalidArgumentException("searchFor string " + name + " is too short. Minimum Length = "
+ getMinSearchForLength());
}
final AndFilter andFilter = new AndFilter();
andFilter.and(new EqualsFilter(getGroupSearchFilterName(), getGroupSearchFilterValue()));
final OrFilter orFilter = new OrFilter();
@ -210,6 +258,10 @@ public class LdapClient {
return env.getProperty("taskana.ldap.userLastnameAttribute");
}
public String getUserIdAttribute() {
return env.getProperty("taskana.ldap.userIdAttribute");
}
public String getGroupSearchBase() {
return env.getProperty("taskana.ldap.groupSearchBase");
}
@ -226,6 +278,22 @@ public class LdapClient {
return env.getProperty("taskana.ldap.groupNameAttribute");
}
public String getMinSearchForLengthAsString() {
return env.getProperty("taskana.ldap.minSearchForLength");
}
public int getMinSearchForLength() {
return minSearchForLength;
}
public String getMaxNumberOfReturnedAccessIdsAsString() {
return env.getProperty("taskana.ldap.maxNumberOfReturnedAccessIds");
}
public int getMaxNumberOfReturnedAccessIds() {
return maxNumberOfReturnedAccessIds;
}
/**
* Context Mapper for user entries.
*/
@ -234,7 +302,7 @@ public class LdapClient {
@Override
public AccessIdResource doMapFromContext(final DirContextOperations context) {
final AccessIdResource accessId = new AccessIdResource();
accessId.setAccessId(context.getNameInNamespace()); // fully qualified dn
accessId.setAccessId(context.getStringAttribute(getUserIdAttribute()));
String firstName = context.getStringAttribute(getUserFirstnameAttribute());
String lastName = context.getStringAttribute(getUserLastnameAttribute());
accessId.setName(lastName + ", " + firstName);

View File

@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.ldap.LdapCache;
import pro.taskana.ldap.LdapClient;
import pro.taskana.rest.resource.AccessIdResource;
@ -34,11 +35,17 @@ public class AccessIdController {
@GetMapping
public ResponseEntity<List<AccessIdResource>> validateAccessIds(
@RequestParam(required = false) String searchFor) {
@RequestParam(required = false) String searchFor) throws InvalidArgumentException {
if (searchFor == null || searchFor.length() < ldapClient.getMinSearchForLength()) {
throw new InvalidArgumentException("searchFor string " + searchFor + " is too short. Minimum Length = "
+ ldapClient.getMinSearchForLength());
}
if (ldapClient.useLdap()) {
return new ResponseEntity<>(ldapClient.searchUsersAndGroups(searchFor), HttpStatus.OK);
} else if (ldapCache != null) {
return new ResponseEntity<>(ldapCache.findMatchingAccessId(searchFor), HttpStatus.OK);
return new ResponseEntity<>(
ldapCache.findMatchingAccessId(searchFor, ldapClient.getMaxNumberOfReturnedAccessIds()),
HttpStatus.OK);
} else {
return new ResponseEntity<>(new ArrayList<>(), HttpStatus.NOT_FOUND);
}

View File

@ -57,7 +57,7 @@ public class RestConfiguration {
contextSource.setUserDn(env.getRequiredProperty("taskana.ldap.bindDn"));
contextSource.setPassword(env.getRequiredProperty("taskana.ldap.bindPassword"));
} else {
contextSource.setUrl("ldap://com.dummy:9999");
contextSource.setUrl("ldap://localhost:9999");
contextSource.setBase("o=taskana");
contextSource.setUserDn("user");
contextSource.setPassword("secret");