Extraire le nom commun du nom distinctif
Est-il un appel .NET qui analyse le CN à partir d'un rfc 2253 codé nom unique? Je sais qu'il y a certaines librairies tierces qui font cela, mais je préfère utiliser natif .Bibliothèques NET si possible.
Exemples d'une chaîne codée DN
CN=L. Aigle,O=Sue\, Grabbit et Runn,C=GB
CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=COM
source d'informationauteur FunLovinCoder
Vous devez vous connecter pour publier un commentaire.
J'ai eu la même question, moi, quand j'ai trouvé le vôtre. N'ai rien trouvé dans la BCL; cependant, je n'ai tomber sur ce CodeProject l'article qui a mis le doigt carrément sur la tête.
J'espère que cela vous aide, aussi.
http://www.codeproject.com/Articles/9788/An-RFC-2253-Compliant-Distinguished-Name-Parser
Si vous travaillez avec un X509Certificate2, il y a une méthode native que vous pouvez utiliser pour extraire le nom DNS. Le nom DNS est généralement équivalent à la Commune Nom de la RDN dans le champ Objet du certificat principal:
Après creuser autour dans les .NET code source, il semble qu'il y est une classe utilitaire qui peut analyser des Noms uniques dans leurs différentes composantes. Malheureusement, l'utilité de la classe n'est pas rendu public, mais vous pouvez y accéder à l'aide de la réflexion:
Le résultat devrait ressembler à ceci:
S'il vous plaît pas c'est une classe utilitaire et peuvent changer dans une prochaine version.
Win32 fonctions de comptage? Vous pouvez utiliser PInvoke avec
DsGetRdnW
. Pour le code, voir ma réponse à l'autre question: https://stackoverflow.com/a/11091804/628981.Juste ajouter mon grain de sel ici. Cette application fonctionne "mieux" si vous d'abord apprendre ce que les affaires de règles sont en place qui sera finalement dicter combien de la RFC sera jamais mis en œuvre au sein de votre entreprise.
Si la commande est incertain, je fais ceci:
Pourriez-vous pas juste récupérer l'attribut CN valeurs?
Comme vous l'avez remarque, l'utilisation de quelqu'un d'autre classe comme il ya beaucoup de plaisir à bord de cas (échappé des virgules, a échappé à d'autres caractères) qui font de l'analyse d'un DN a l'air facile, mais en fait raisonnablement difficile.
J'ai l'habitude d'utiliser une classe Java qui vient avec le Novell (Maintenant NetID) Identity Manager. Ce n'est donc pas utile.
Comment à ce sujet:
Adapté de Powershell Expression Régulière pour Extraire des Parties d'un Active Directory Distiniguished Nom.
Vous pouvez utiliser des expressions régulières pour ce faire. Voici une expression régulière pattern que peut analyser l'ensemble de la DN, alors vous pouvez simplement prendre les pièces qui vous intéressent:
(?:^|,\s?)(?:(?<name>[A-Z]+)=(?<val>"(?:[^"]|"")+"|(?:\\,|[^,])+))+
Ici, il est mis en forme un peu plus, et avec certains commentaires:
Cette regex va vous donner
name
etval
groupes de capture pour chaque match.DN chaînes peuvent éventuellement être cité (p. ex.
"Hello"
ce qui leur permet de contenir sans échappement des virgules. Sinon, si non cotées, les virgules doivent être échappés avec une barre oblique inverse (par exemple,Hello\, there!
). Cette regex gère à la fois le cotées et non cotées chaînes.Voici un lien pour que vous puissiez le voir en action: https://regex101.com/r/7vhdDz/1