2012-03-09 8 views
0

を読んで、私は、フォームLDAPセキュリティプリンシパル

UID一意のIDを=、CN =共通名、C =国コード上のX509Certificateから取得した文字列、ST =状態

を持っています

私にはldap'ishのように見えますが、おそらく私のためにこの文字列をトークン化できるJavaのLDAP APIが存在すると思っていたので、キーとして名前を持つマップを取得したり、 。 これはありますか?

答えて

0

右、私は、Java APIで最後見てみることにしました。ハットクラスは私がやったことを行い、入力を検証します。

は、だから今、私は次のコードを得た:

LdapName ldapName = new LdapName(dn); 
List<Rdn> distinguishedNames = ldapName.getRdns(); 

for (Rdn rdn : distinguishedNames) { 
    if ("c".equals(name.getType().toLowerCase())) { 
     country = (String) name.getValue(); 
    } 
    ... 
} 
+0

[UnboundID LDAP SDK](http://www.unboundid.com/products/ldap-sdk/)がはるかに使いやすいかもしれません。 –

-1

私はそのためのトークナイザを知りません。するLdapName: - :あなたは地図に基づいており、それについてjava.util.Properitesを、「虐待」かもしれないと私が見つけたものと思い、私は私の質問を掲示した後

String cert = "UID=A unique id,CN=Common name,C=country code, ST=state"; 
cert = cert.replaceAll(",", "\n"); 
Properties props = new Properties(); 
props.load(new StringReader(cert)); 

System.out.println(props.getProperty("UID")); 
System.out.println(props.getProperty("CN")); 
System.out.println(props.getProperty("C")); 
System.out.println(props.getProperty("ST")); 
+0

私はコンマが価値があると考えられる解決策を探していました。 LDAP APIを見つけることを願っています。 – homaxto

+0

LDAPエスケープを認識しないため、動作しません。例えば考慮する。エスケープされたコンマJDKには少なくとも2つのソリューションがあります。 – EJP

1

ありに建てられた、少なくとも2つのJava APIです:javax.naming.Name得LDAP Context、由来javax.naming.NameParser。およびjavax.naming.ldap.LdapName