2013-01-03 15 views
8

मैं उपयोगकर्ता दर्ज ldap सेटिंग्स को सत्यापित करना चाहता हूं। सेटिंग पेज पर उपयोगकर्ता ldap url, प्रबंधक डीएन और पासवर्ड दर्ज करता है। मेरे पास इस पृष्ठ पर 'टेस्ट सेटिंग्स' बटन है ताकि उपयोगकर्ता एलडीएपी कनेक्शन को तुरंत सत्यापित कर सके। इसे आसानी से और जल्दी कैसे करें?परीक्षण एलडीएपी कनेक्शन

वसंत सुरक्षा का उपयोग करके और एलडीएपी प्रमाणीकरण जोड़ने की प्रक्रिया में हमारा आवेदन। मैं जावा और एलडीएपी के लिए नया हूं, इसलिए मुझे सही दिशा में इंगित करने की बहुत सराहना की जाती है।

धन्यवाद।

उत्तर

9

दी गई जानकारी के आधार पर यह बताना मुश्किल है कि आप क्या जानते हैं और आप अभी तक क्या नहीं जानते हैं। इसलिए, मेरा सुझाव है कि आप java.net LdapTemplate: LDAP Programming in Java Made Simple पर इस सहायक ट्यूटोरियल का पालन करें और उन अध्यायों को छोड़ दें जो आपके लिए प्रासंगिक नहीं हैं (यह 2006 से है लेकिन अभी भी ठीक है)। लेख में संदर्भित Spring LDAP अब तक संस्करण 1.3.1 पर है।

आप के लिए स्प्रिंग एलडीएपी के बिना जाने के अब आप निम्नलिखित पारंपरिक कोड का उपयोग कर सकते हैं:

Map<String, String> env = new HashMap<String, String>(); 
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
env.put(Context.PROVIDER_URL, "ldap://localhost:389/dc=jayway,dc=se"); 
env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
env.put(Context.SECURITY_PRINCIPAL, "uid="+ username +",ou=system"); // replace with user DN 
env.put(Context.SECURITY_CREDENTIALS, password); 

DirContext ctx; 
try { 
    ctx = new InitialDirContext(env); 
} catch (NamingException e) { 
    // handle 
} 
try { 
    SearchControls controls = new SearchControls(); 
    controls.setSearchScope(SearchControls.SUBTREE_SCOPE); 
    ctx.search("", "(objectclass=person)", controls); 
    // no need to process the results 
} catch (NameNotFoundException e) { 
    // The base context was not found. 
    // Just clean up and exit. 
} catch (NamingException e) { 
    // exception handling 
} finally { 
    // close ctx or do Java 7 try-with-resources http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html 
} 
+0

मार्सेल बहुत धन्यवाद। मैं आपका उदाहरण आज़माउंगा। – user1366786

+0

आपका उदाहरण अच्छी तरह से काम किया। और, मैंने वसंत के DefaultSpringSecurityContextSource के साथ भी कोशिश की। – user1366786

+0

अब उपरोक्त संदर्भित आलेख java.net साइट पर संदर्भित आलेख (LdapTemplate: जावा मेड सरल में एलडीएपी प्रोग्रामिंग) को इस यूआरएल में ले जाया गया था: https://community.oracle.com/docs/DOC-983546 –

1

टेस्ट एलडीएपी कनेक्शन स्प्रिंग LDAP प्रमाणीकरण का उपयोग:

यानी प्रमाणित के साथ() विधि:

ldapTemplate.authenticate(query, password); 

या और भी बेहतर, getContext() विधि के साथ:

ldapTemplate.getContextSource().getContext(userDn, userPassword)); 

पकड़ने यदि कनेक्शन सफल होता है org.springframework.ldap.CommunicationException जाँच करने के लिए।

पूर्ण कोड स्निपेट इस तरह दिखना चाहिए:

// Create the spring LdapTemplates; i.e. connections to the source and target ldaps: 
try { 
    // Note: I'm using the direct LdapTemplate initialization rather than with bean creation (Spring ldap supports both) 
    log.info("Connecting to LDAP " + sourceHost + ":" + sourcePort + "...");  
    LdapContextSource sourceLdapCtx = new LdapContextSource(); 
    sourceLdapCtx.setUrl("ldap://" + sourceHost + ":" + sourcePort + "/"); 
    sourceLdapCtx.setUserDn(sourceBindAccount); 
    sourceLdapCtx.setPassword(sourcePassword); 
    sourceLdapCtx.setDirObjectFactory(DefaultDirObjectFactory.class); 
    sourceLdapCtx.afterPropertiesSet(); 
    sourceLdapTemplate = new LdapTemplate(sourceLdapCtx); 
    // Authenticate: 
    sourceLdapTemplate.getContextSource().getContext(sourceBindAccount, sourcePassword); 
} catch (Exception e) { 
    throw new Exception("Failed to connect to LDAP - " + e.getMessage(), e); 
} 

नोट: मैं वसंत LDAP 2.3.x संस्करण का उपयोग कर रहा हूँ:

<dependency> 
    <groupId>org.springframework.ldap</groupId> 
    <artifactId>spring-ldap-core</artifactId> 
</dependency> 
संबंधित मुद्दे