Extrakt der Common Name aus dem Distinguished Name
Ist es ein call-in .NET, analysiert die CN aus rfc 2253 codiert distinguished name? Ich weiß, es gibt einige Drittanbieter-Bibliotheken, die dies tun, aber ich würde es vorziehen, zu verwenden nativen .NET-Bibliotheken, wenn möglich.
Beispiele einer Zeichenkette kodiert DN
CN=L. Adler,A=Sue\, Grabbit-und Runn,C=GB
CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=COM
Möglicherweise möchten Sie LDAP, um die Liste der tags auf Ihre Frage. Auch, Suche ALSO für [LDAP-C#]. Es könnte eine Verwandte Frage.
Danke @Jim Mischel Mit Ein
Siehe pscx.codeplex.com/SourceControl/latest#Trunk/Src/Pscx.UnitTests/... für verwendeten code in der Powershell Community Extensions
Danke @Jim Mischel Mit Ein
Siehe pscx.codeplex.com/SourceControl/latest#Trunk/Src/Pscx.UnitTests/... für verwendeten code in der Powershell Community Extensions
InformationsquelleAutor FunLovinCoder | 2011-10-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte die gleiche Frage, mich, wenn ich Ihnen. Habe nichts gefunden in der BCL, aber ich habe stolpern über diesen CodeProject-Artikel, trifft den Nagel genau auf den Kopf.
Ich hoffe es hilft Euch auch.
http://www.codeproject.com/Articles/9788/An-RFC-2253-Compliant-Distinguished-Name-Parser
InformationsquelleAutor kbrimington
Wenn Sie ein X509Certificate2, es ist eine native-Methode, die Sie verwenden können, zu extrahieren Sie den DNS-Namen. Der DNS-name entspricht typischerweise der Common-Name-RDN in das Betreff-Feld der main-Zertifikat:
InformationsquelleAutor digital_jedi
Nach dem Graben um in der .NET-source-code sieht es aus wie es gibt ein internes utility-Klasse, kann analysieren Distinguished Names in Ihre verschiedenen Komponenten. Leider ist die utility-Klasse ist nicht öffentlich, doch können Sie für den Zugriff Reflexion:
Die Ergebnisse würden wie folgt Aussehen:
Bitte nicht dies ist eine interne utility-Klasse und konnte in einem zukünftigen release.
Hat Super funktioniert, bis ich brauchte, um zu analysieren, mult-valued RDNs. zum Beispiel
cn=Robert Smith+uid=rsmith,ou=people,dc=example,dc=com
. Dies schlägt fehl mit "Die angegebenen distinguished name hat ein ungültiges format".InformationsquelleAutor Greg Bray
Tun Win32-Funktionen zählen? Sie können PInvoke mit
DsGetRdnW
. Für code, siehe meine Antwort zu einer anderen Frage: https://stackoverflow.com/a/11091804/628981.InformationsquelleAutor Sean Hall
Nur hinzufügen meine zwei Cent hier. Diese Implementierung funktioniert "besten", wenn Sie zuerst lernen, welche business-Regeln vorhanden sind, wird letztlich diktieren wie viel der RFC jemals umgesetzt werden, in Ihrem Unternehmen.
InformationsquelleAutor rdev5
Wenn die Bestellung unsicher ist, mache ich das:
CN=Martin Luther King\, Jr.
falsch zurückMartin Luther King
InformationsquelleAutor Frank U
Konnte Sie nicht einfach abrufen, wird das CN-Attribut-Werte?
Als Sie richtig Anmerkung, jemand anderes Klasse, da es viel Spaß Grenzfälle (escaped Kommas escaped andere Zeichen), die Analyse einer DN einfach Aussehen, aber tatsächlich einigermaßen schwierig.
Normalerweise verwende ich eine Java-Klasse, kommt mit der von Novell (Jetzt NetID) Identity Manager. Also das ist nicht wirklich hilfreich.
Ah, Sie haben ein Cert DN. Das ist immer noch der gleiche grundlegende Problem der richtigen Analyse.
Ja, noch ein DN so gleichen Problem. Es sah aus wie ich möglicherweise verwenden Sie ein 3rd-party-Bibliothek wie bouncycastle...
InformationsquelleAutor geoffc
Wie wäre es dieses:
Angepasst Powershell Reguläre Ausdrücke zum Extrahieren von Teilen einer Active Directory-Distiniguished Namen.
O=Acme, OU=Acme, CN="My super, ""Great"" CN"
Warum würden Sie nicht CN werden in der Anfang? Wer hat dir gesagt, CN kann auch in der Mitte? In deinem Beispiel Komma die maskiert werden müssen, ebenso wie die Zitat-Zeichen. Zitate werden nicht verwendet, DN zu isolieren DN Teil Werte.
Siehe Abschnitt 4 RFC2253 - heißt es, dass die Implementierungen müssen Werte zuzulassen Anführungsstriche, und innerhalb dieser Anführungszeichen, Kommas, müssen nicht escaped werden
Vergessen zu beantworten, über die Kn-position - ich werde durch die Erfahrung von dem, was ich gesehen habe im wirklichen Leben. Sie können auch sehen, Beispiele von diesem in der dieser - Dokument, und dieser Seite
InformationsquelleAutor Alek Davis
Könnten Sie reguläre Ausdrücke verwenden, um dies zu tun. Hier ist ein regex-Muster als Parsen kann das ganze DN, dann können Sie nur die Teile, die Sie interessiert sind in:
(?:^|,\s?)(?:(?<name>[A-Z]+)=(?<val>"(?:[^"]|"")+"|(?:\\,|[^,])+))+
Hier ist es formatiert ein bisschen schöner, und mit einigen Anmerkungen:
Diese regex wird Ihnen
name
undval
capture Gruppen für jedes Spiel.DN-strings können Optional angegeben werden (z.B.
"Hello"
, die es Ihnen erlaubt, zu enthalten, ohne Umschreibung Kommas. Alternativ, wenn nicht zitiert, Kommas müssen mit Backslashes (z.B.Hello\, there!
). Dieser regex behandelt beide zitiert und nicht in Anführungszeichen gesetzte strings.Hier ist ein link, so können Sie es in Aktion: https://regex101.com/r/7vhdDz/1
InformationsquelleAutor Cocowalla
Dies ist mein fast RFC-konform fail-safe DN parser abgeleitet von https://www.codeproject.com/Articles/9788/An-RFC-2253-Compliant-Distinguished-Name-Parser und ein Beispiel für die Verwendung (Auszug unterliegt Namen als CN und O, beide optional, verkettet mit Komma):
InformationsquelleAutor Mike Archer
\,
, so Ihre erste split funktioniert nicht. Auch kann es sein, das Leerzeichen zwischen den teilen, die Sie entfernen müssen.InformationsquelleAutor Dipu