我从表格
上的X509Certificate获得了一个字符串UID =唯一ID,CN =通用名称,C =国家/地区代码,ST =州
对我来说看起来像ldap'ish,然后我想也许存在一个用于java的LDAP API,它可以为我标记这个字符串,所以我可能得到一个名称为key,内容为value的地图 - 或者相似的东西。 这是否存在?
答案 0 :(得分:1)
内置至少两个Java API:javax.naming.NameParser
派生自LDAP Context
,产生javax.naming.Name
;和javax.naming.ldap.LdapName
。
答案 1 :(得分:0)
在我发布问题之后,我决定最后看一下java API - 猜猜我发现了什么:LdapName。 Hat类做了我做的事情,它甚至验证了输入。
所以现在我得到了以下代码:
LdapName ldapName = new LdapName(dn);
List<Rdn> distinguishedNames = ldapName.getRdns();
for (Rdn rdn : distinguishedNames) {
if ("c".equals(name.getType().toLowerCase())) {
country = (String) name.getValue();
}
...
}
答案 2 :(得分:-1)
我不知道它的任何标记器。您可能会“滥用”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"));