Ich versuche, eine Java-Anwendung mit Spring-Security zu bekommen, um mit einer lokalen ADAM-Instanz zu sprechen, die ich eingerichtet habe.Authentifizierung mit LDAP gegen ADAM mit Spring-Sicherheit
ich erfolgreich ADAM und Setup installiert haben, wie folgt ....
- Instanz auf localhost läuft: 389
- Root ist
O=Company
- Ein Kind
OU=Company Users
(orgnizationalUnit)- genannt Ein Großkind namens
CN=Mike Q
(Benutzer) uid = mike
undpassword = welcome
- genannt Ein Großkind namens
- Ein Kind
Dann habe ich Setup-Feder-Sicherheit (Version 3.0.3, feder Rahmen 3.0.4 und Feder-ldap 1.3.0). Frühlings-Datei
<security:ldap-server id="contextSource" url="ldap://localhost:389/o=Company"/>
<security:authentication-manager>
<security:ldap-authentication-provider user-dn-pattern="uid={0},ou=Company Users"/>
</security:authentication-manager>
<bean class="com.xxx.test.TestAuthentication" lazy-init="false"/>
Und TestAuthentication
public class TestAuthentication
{
@Autowired
private AuthenticationManager authenticationManager;
public void initialise()
{
Authentication authentication = new UsernamePasswordAuthenticationToken("mike", "welcome");
Authentication reponseAuthentication = authenticationManager.authenticate(authentication);
}
}
das Lauf bekomme ich folgende Fehler
Caused by: javax.naming.AuthenticationException: [LDAP: error code 49 - 8009030C: LdapErr: DSID-0C090336, comment: AcceptSecurityContext error, data 2030, vece]
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3041)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2987)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2789)
at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2703)
at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:293)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:175)
at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:193)
at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:136)
at com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:66)
at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288)
at javax.naming.InitialContext.init(InitialContext.java:223)
at javax.naming.ldap.InitialLdapContext.<init>(InitialLdapContext.java:134)
at org.springframework.ldap.core.support.LdapContextSource.getDirContextInstance(LdapContextSource.java:43)
at org.springframework.ldap.core.support.AbstractContextSource.createContext(AbstractContextSource.java:254)
Wenn jemand darauf hinweisen könnte, wo ich falsch werde ich dankbar sein würde. An dieser Stelle möchte ich nur einen eingegebenen Benutzer/Passwort mit LDAP authentifizieren, nichts komplexer als das.
Ich bin auch an einigen allgemeinen Punkten interessiert, da dies mein erster Ausflug in die LDAP-Welt ist.
- Ist die Groß-/Kleinschreibung von LDAP abhängig?
- Sind Räume am besten zu vermeiden?
- Was sind die allgemeinen Anwendungsfälle/Best Practices, um das Senden des Kennworts im Klartext in der LDAP-Abfrage zu vermeiden?