『壹』 java ldap 查詢報錯,急求大神解決啊,謝謝
LDAP: error code 49表示認證失敗
請檢查你的BINDDN和對應的密碼,一定要寫正確才行。
與base DN沒有關系。
『貳』 我想從LDAP中獲取所有的用戶信息,用ldapTemplate中的search方法 ,請問應該怎麼寫,過濾器 filter怎麼寫
如果你的用戶屬性里有uid
這可以這樣寫 (uid=*)
如果沒有,可以寫任何一個有的屬性,然後屬性值=*
『叄』 Java獲取Ldap葉子節點
使用netscape的ldap工具包。使用其它的工具包,寫法滲友類似。
註:必須知道base dn,以下假定ou=admin為base dn。叢旁槐若有明確的base dn,那寫法比啟告如:ou=admin,o=test1
源代碼如下:
==========================
import netscape.ldap.*;
public class SearchTest {
public static void main(String[] args) {
LDAPConnection lc = null;
LDAPEntry findEntry = null;
int status = -1;
try {
// lc = ConnectionPool.
lc = new LDAPConnection();
/* Connect to server */
String MY_HOST = "localhost";
int MY_PORT = 389;
lc.connect(MY_HOST, MY_PORT);
System.out.println("1=========" +lc.isConnected());
lc.authenticate("cn=Directory Manager","password");
System.out.println("2=========" +lc.isConnected());
/* search for all entries with surname of Jensen */
String MY_FILTER = "(objectclass=*)";
String MY_SEARCHBASE = "ou=admin";
LDAPSearchConstraints cons = lc.getSearchConstraints();
cons.setBatchSize(0);
cons.setMaxResults(5);
MY_FILTER = "(objectclass=*)" ;
LDAPSearchResults res = lc.search(MY_SEARCHBASE,
LDAPConnection.SCOPE_ONE,
MY_FILTER,
null,
false,
cons);
while (res.hasMoreElements()) {
LDAPEntry cLDAPEntry = res.next() ;
System.out.println("" + cLDAPEntry.getDN());
System.out.println("" + cLDAPEntry.toString());
}
status = 0;
} catch (LDAPException e) {
System.out.println("Error: " + e.toString());
e.printStackTrace();
}
/* Done, so disconnect */
if ((lc != null) && lc.isConnected()) {
try {
lc.disconnect();
System.out.println("3=========" +lc.isConnected());
} catch (LDAPException e) {
System.out.println("Error: " + e.toString());
}
}
System.out.println("4=========" +lc.isConnected());
System.exit(status);
}
}
『肆』 用java操作ldap是報錯,求大神解救
出自 http://blog.csdn.net/techchan/article/details/5440775
1. error code 53
===========================================================================
問題:創建新用戶時出現數據後端異常
在 WebSphere Portal Express 中,您可以設置密碼的最短和最長長度。如果設置的密碼長度與 LDAP 伺服器的策略不相同,則在創建用戶時您可能會看到以下異常:
EJPSG0015E: Data Backend Problem com.ibm.websphere.wmm.exception.WMMSystemException:
The following Naming Exception occurred ring processing:
"javax.naming.: [LDAP: error code 53 - 0000052D:
SvcErr: DSID-031A0FBC, problem 5003 (WILL_NOT_PERFORM), data 0
]; remaining name 'cn=see1anna,cn=users,dc=wps510,dc=rtp,dc=raleigh,dc=ibm,dc=com';
resolved object com.sun.jndi.ldap.LdapCtx@7075b1b4".
原因:這是由於「密碼不能滿足密碼策略的要求」導致
解決方案:
1. 打開域安全策略-安全設置-賬戶策略-密碼策略-密碼必須符合復雜性要求。定義這個策略設置為:已禁用。/ 密碼長度最小值:定義這個策略設置為0。
2. 打開域控制器安全策略-安全設置-賬戶策略-密碼策略-密碼必須符合復雜性要求。定義這個策略設置為:已禁用。/ 密碼長度最小值:定義這個策略設置為0。
3. 最後運行刷新組策略命令為:gpupdate /force
===========================================================================
2. Need to specify class name
===========================================================================
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
原因:LdapContext在處理完上個環節被close(),LdapContext=null;
解決方案:不close;
3. error code 50
===========================================================================
javax.naming.NoPermissionException: [LDAP: error code 50 - 00002098: SecErr: DSID-03150A45, problem 4003 (INSUFF_ACCESS_RIGHTS), data 0
4. error code 68
===========================================================================
javax.naming.NameAlreadyBoundException: [LDAP: error code 68 - 00000524: UpdErr: DSID-031A0F4F, problem 6005 (ENTRY_EXISTS), data 0
原因:創建的用戶已經存在了
7. No trusted certificate
===========================================================================
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
1.cas機器A,A上a,b,c服務運行良好
2.website 位於B機器,cas可以截獲請求,跳轉javax.net.ssl.SSLHandshakeException
將A上生生成的客戶端密鑰,導入B
A運行
sudo keytool -genkey -alias tomcat -keyalg RSA -keypass changeit -storepass changeit -keystore server.keystore -validity 3600
$ keytool -export -trustcacerts -alias tomcat -file server.cer -keystore server.keystore -storepass changeit
$ sudo keytool -import -trustcacerts -alias tomcat -file server.cer -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
B運行最後一句即可
建立信任關系,客戶,服務密鑰,客戶多處
8. error code 1
===========================================================================
javax.naming.NamingException: [LDAP: error code 1 - 00000000: LdapErr: DSID-0C090AE2, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, vece
原因:新增域用戶的時候,ctx沒有綁定管理員用戶
解決方法:ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, adminUser + "@" + ldapProperty.getDomain());
ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, adminPwd);
9. error code 50
==========================================================================
javax.naming.NoPermissionException: [LDAP: error code 50 - 00000005: SecErr: DSID-03151E04, problem 4003 (INSUFF_ACCESS_RIGHTS)
原因:新建域用戶時候,ctx綁定到一個普通用戶(該用戶沒有新建用戶的許可權)
解決方法:使用管理員用戶進行綁定:
ctx.addToEnvironment(Context.SECURITY_PRINCIPAL, adminUser + "@" + ldapProperty.getDomain());
ctx.addToEnvironment(Context.SECURITY_CREDENTIALS, adminPwd);
10. error code 19
==========================================================================
javax.naming.directory.: [LDAP: error code 19 - 0000052D: AtrErr: DSID-03190F00, #1:
0: 0000052D: DSID-03190F00, problem 1005 (CONSTRAINT_ATT_TYPE)
原因:這個最大的可能是不滿足域安全策略:如密碼復雜性、密碼最短使用期限、強制密碼歷史。即長度、包含的字元、多久可以修改密碼、是否可以使用歷史密碼等。
11. LDAP: error code 50
==========================================================================
javax.naming.NoPermissionException: [LDAP: error code 50 - 00000005: SecErr: DSID-031A0F44, problem 4003 (INSUFF_ACCESS_RIGHTS)
原因:這個是最初代碼使用的replace操作,這個在AD里對應的是密碼重設(普通用戶默認沒有這個許可權,管理員可以操作),另外remove操作時提供的舊密碼錯誤也可能報這個異常
12. RSA premaster secret error
==========================================================================
javax.naming.CommunicationException: simple bind failed: 172.18.20.4:636 [Root exception is javax.net.ssl.SSLKeyException: RSA premaster secret error]
原因:Tomcat 配置的JDK與添加證書的的JDK不一致。如:證書存放路徑為C:/Java/jdk1.6.0_10/jre/lib/cacerts 而Tomcat 配置的JDK為C:/Java/jre6 ,使得兩者路徑不一致,SSL驗證的時候,找不到證書
13.No trusted certificate found
==========================================================================
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
原因:信任證書庫文件路徑不正確
解決方法:將正確工程中 /WEB-INF/classes目錄下
14. error code 49
==========================================================================
javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 52e, vece
希望可以幫到你