這是本文件的舊版!


LdapName

做LDAP認證系統整合時,一定會遇到處理帳號內容的問題。有的系統會讓使用者定義user filter,僅僅輸入uid或mail即可登入;有的系統則是要求完整的DN。僅輸入uid或mail讓使用者不需要記住完整的DN,但有可能在不同OU下,會有重複的uid。我們系統是兩種方式都允許的,也因此我們必須先針對使用者輸入,去確認為DN或者user filter方式。

判斷使用者輸入是否為DN,可以透過JNDI的LdapName。其實spring有提供DistinguishedName類別,但在2.0版本已被列為@deprecated,並推薦使用javax.naming.ldap.LdapName。

Is a valid DN?

在LdapName建構時,如果不是一個合法的DN格式,就會丟出InvalidNameException;因此我們可以透過這個方式判斷是否為合法格式的DN。

@Test
public void testValidDN(){
	try {
		 new LdapName("uid = tonylin,dc=tonylin,dc=org");
	} catch (InvalidNameException e) {
		Assert.fail("Should pass");
	}
}
@Test
public void testinValidDN(){
	try {
		 new LdapName("tonylin@tonylin.org");
		 Assert.fail("Should throw exception");
	} catch (InvalidNameException e) {
	}
}