Чтение субъекта безопасности LDAP - PullRequest
0 голосов
/ 09 марта 2012

У меня есть строка, полученная из сертификата X509 в форме

UID = уникальный идентификатор, CN = общее имя, C = код страны, ST = состояние

Для меня это выглядит как ldap'ish, и тогда я подумал, что, возможно, существует LDAP API для java, который может токенизировать эту строку для меня, поэтому я могу получить карту с именем в качестве ключа и содержимым в качестве значения - или что-то в этом родеаналогичный.Это существует?

Ответы [ 3 ]

1 голос
/ 10 марта 2012

Существует как минимум два встроенных API Java: javax.naming.NameParser, полученных из LDAP Context, что дает javax.naming.Namejavax.naming.ldap.LdapName.

0 голосов
/ 09 марта 2012

Сразу после того, как я опубликовал свой вопрос, я решил в последний раз взглянуть на 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();
     }
     ...
 }
0 голосов
/ 09 марта 2012

Я не знаю ни одного токенизатора для него. Вы можете «злоупотребить» 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"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...