2011-06-10 18 views
19

मेरे पास एक वर्किंग कोड स्निपेट है जिसके द्वारा मैं dn और पासवर्ड द्वारा उपयोगकर्ता को प्रमाणीकृत कर सकता हूं। मेरी आवश्यकता यह है कि उपयोगकर्ता अपना उपयोगकर्ता नाम (sAMAccountName) दर्ज करेगा और मैं sAMAccountName और पासवर्ड का उपयोग करके प्रमाणित करना चाहता हूं। इसे प्राप्त करने के लिए मैं इस कोड को कैसे संशोधित कर सकता हूं?उपयोगकर्ता नाम और पासवर्ड का उपयोग कर जावा एलडीएपी प्रमाणीकरण

String userName = "John P R-Asst General Manager"; 
    String passWord = "asdfgh123"; 
    String base ="OU=SOU,DC=example,DC=com"; 
    String dn = "cn=" + userName + "," + base; 

    String ldapURL = "ldap://mdsdc3.example.com:389"; 
    authEnv.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory"); 
    authEnv.put(Context.PROVIDER_URL, ldapURL); 
    authEnv.put(Context.SECURITY_AUTHENTICATION, "simple"); 
    authEnv.put(Context.SECURITY_PRINCIPAL, dn); 
    authEnv.put(Context.SECURITY_CREDENTIALS, password); 

    try { 
     DirContext authContext = new InitialDirContext(authEnv); 
     return true; 

    } catch (NamingException namEx) { 
     return false; 
    } 

उत्तर

2

आप Context.PROVIDER_URL इस तरह पूरा करने के लिए प्रयास कर सकते हैं:

String ldapURL = "ldap://mdsdc3.example.com:389/DC=example,DC=com"; 

मुझे लगता है कि जीएसएसएपीआई उपयोग करने के लिए बेहतर होगा, शायद आप एक देखो here और here

43

मुझे आशा है कि इस मदद करता है हो सकता है आप में से कई।

आप सीएन, डी एन के साथ सभी उपयोगकर्ता पदानुक्रम की जरूरत नहीं है, आदि

तुम बस डोमेन \ उपयोगकर्ता और पासवर्ड गुजर के लिए लॉग इन कर सकते हैं।

try 
    { 
     // Set up the environment for creating the initial context 
     Hashtable<String, String> env = new Hashtable<String, String>(); 
     env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory"); 
     env.put(Context.PROVIDER_URL, "ldap://ldap_server:389"); 
     // 
     env.put(Context.SECURITY_AUTHENTICATION, "simple"); 
     env.put(Context.SECURITY_PRINCIPAL, "domain\\user"); //we have 2 \\ because it's a escape char 
     env.put(Context.SECURITY_CREDENTIALS, "test"); 

     // Create the initial context 

     DirContext ctx = new InitialDirContext(env); 
     boolean result = ctx != null; 

     if(ctx != null) 
      ctx.close(); 

     return result; 
    } 
    catch (Exception e) 
    {   
     return false; 
    } 
:

मैं अपने कोड काम कर के रूप में यह bellow है है

संबंधित मुद्दे